diff --git a/AUTHORS b/AUTHORS index 5959a5d9..2dda5f3e 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,2 +1,2 @@ -Nicholas H.Tollervey (@ntoll) -Damien P.George (@dpgeorge) +Nicholas H.Tollervey (@ntoll) +Damien P.George (@dpgeorge) diff --git a/CHANGELOG b/CHANGELOG index f1177762..686e9557 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,78 +1,78 @@ -0.1.0 ------ - -* Add "Experimental" background image. -* Update help pages to reflect the latest changes. -* Add awareness of versioning and related manifest when available. -* Add file load button with drag and drop capabilities. - -0.0.10 ------- - -* Fix outstanding block related gremlins (with tests). - -0.0.9 ------ - -* Add zoom to blocks (thanks Carlos). -* Fix next-block on panic and reset blocks (thanks again Carlos). -* Fix GIT submodule misconfiguration (thanks again [again] Carlos). -* Disable code snippets when blockly is active. -* Update documentation as per the above changes. - -0.0.8 ------ - -* Add blockly support (requires GIT sub-modules). -* Add config object containing translation strings. -* Add feature flags to the config object. -* Check for size of Python script before flashing (added tests for this too). -* Move editor instantiation to within the HTML. -* Updated help to include latest UI changes. -* Updated README in light of changes above. - -0.0.7 ------ - -* If there's unsaved work, ask user for confirmation if moving away from editor. -* Add save button to download raw Python script. -* Add drag to load for Python scripts and hex files. - -0.0.6 ------ - -* Remove TouchDevelop specific elements. -* Make a stand-alone version of the editor. -* Simplification of the UI. -* Add a "share" button to create a tiny URL to point at the current script. -* Use query strings to override the script name, comment and code. -* Update to the latest version of MicroPython: - - Various minor refactors. - - Audio - - Speech - - Radio - - input() builtin -* Documentation work / tidy up. - -0.0.5 ------ - -* Update to the latest version of MicroPython: - - Various minor code refactors. - - More efficient ticker (reduces overhead of display update by 90%). - - Add builtin set and frozenset types (from core Python). - - Don't show SystemExit or KeyboardInterrupt exceptions on the display. -* Update bug in editor that caused the status icon not to update to cloud. -* Added test script here: https://stage.microbit.co.uk/hoqumw -* Revised button-press code to be simpler. -* Minor documentation updates. - -0.0.4 ------ - -Initial tested public release. - -0.1-0.3 -------- - -Private test versions. +0.1.0 +----- + +* Add "Experimental" background image. +* Update help pages to reflect the latest changes. +* Add awareness of versioning and related manifest when available. +* Add file load button with drag and drop capabilities. + +0.0.10 +------ + +* Fix outstanding block related gremlins (with tests). + +0.0.9 +----- + +* Add zoom to blocks (thanks Carlos). +* Fix next-block on panic and reset blocks (thanks again Carlos). +* Fix GIT submodule misconfiguration (thanks again [again] Carlos). +* Disable code snippets when blockly is active. +* Update documentation as per the above changes. + +0.0.8 +----- + +* Add blockly support (requires GIT sub-modules). +* Add config object containing translation strings. +* Add feature flags to the config object. +* Check for size of Python script before flashing (added tests for this too). +* Move editor instantiation to within the HTML. +* Updated help to include latest UI changes. +* Updated README in light of changes above. + +0.0.7 +----- + +* If there's unsaved work, ask user for confirmation if moving away from editor. +* Add save button to download raw Python script. +* Add drag to load for Python scripts and hex files. + +0.0.6 +----- + +* Remove TouchDevelop specific elements. +* Make a stand-alone version of the editor. +* Simplification of the UI. +* Add a "share" button to create a tiny URL to point at the current script. +* Use query strings to override the script name, comment and code. +* Update to the latest version of MicroPython: + - Various minor refactors. + - Audio + - Speech + - Radio + - input() builtin +* Documentation work / tidy up. + +0.0.5 +----- + +* Update to the latest version of MicroPython: + - Various minor code refactors. + - More efficient ticker (reduces overhead of display update by 90%). + - Add builtin set and frozenset types (from core Python). + - Don't show SystemExit or KeyboardInterrupt exceptions on the display. +* Update bug in editor that caused the status icon not to update to cloud. +* Added test script here: https://stage.microbit.co.uk/hoqumw +* Revised button-press code to be simpler. +* Minor documentation updates. + +0.0.4 +----- + +Initial tested public release. + +0.1-0.3 +------- + +Private test versions. diff --git a/CODEGUILD.md b/CODEGUILD.md index 05331096..fe92797e 100644 --- a/CODEGUILD.md +++ b/CODEGUILD.md @@ -1,60 +1,60 @@ -# micro:edit - -An online Python editor for the micro:bit. - -This file is for students on the [Villiers Park](http://www.villierspark.org.uk/) Computer Science Course. Although the rest of you are allowed to read it too :) - -## Making Changes - -If you want to build new features into the editor you'll need a local copy of the code to change, as well as a way to test your changes. Here's how: - -You'll need to make sure you've got [git](https://git-scm.com/), [VirtualBox](https://www.virtualbox.org/), and [Vagrant](https://www.vagrantup.com/) installed. They're all free and pretty easy to install. - -Then you'll need to fork this repo (so you'll need a GitHub account, if you don't already have one). This is easy, just click the "Fork" button in the top right of this page. - -You'll now have your own copy of the repository stored in your own account. You can make whatever changes you'd like to this copy; it's yours. - -To make changes you'll need to clone your fork. This might require running something like this on the command line: - - $ git clone https://github.com/YOUR_USERNAME/PythonEditor - -This will have downloaded the repo to your computer. Let's now get vagrant up and running by doing: - - $ cd PythonEditor - $ vagrant up - -This one might take a while, but when it's done there will be a virtual machine running on your computer with all the code inside. We can connect to the virtual machine like this: - - $ vagrant ssh - -And now we can serve the website locally: - - $ cd /vagrant - $ ./show.sh - -If you now open this link: http://192.168.33.10:8000 you should see the editor. Except this one is running on your machine, so changes we make here will be seen on the website. - -You can now edit the code and see the changes you make alter the local copy of the website. Start by changing something small to see if it works. Then think of a minor bugfix/improvement you can make and try that. When you're confident about making larger changes, go for it! - - -## Sharing Changes - -When you're done making changes you'll want to have them included in the CodeGuild version of the website (not just your own), and then maybe even the official BBC version. So first push your changes up to your fork: - - $ git add CHANGED_FILE CHANGED_FILE - $ git commit -m 'DESCRIPTION_OF_CHANGES' - $ git push origin master - -If you don't know what the `git add` or `git commit` instructions are doing, ask around! - -Now your fork will have the changes, let's make a pull request to the main repo to have them included in the main site. You'll need to open your fork on the GitHub website and click the "New Pull Request" button. Hopefully you'll see a green bit of text that says "Able to merge", if so, click the "Create pull request" button, provide a description of the work you've done and alick "Create pull request" again. If instead you see a red error message, you'll have to fix the problems it talks about before your work can be merged. - - -## Improvements - -- Add a simulator to the editor - - Here's an example of a micro:bit simulator running Python: https://tools.withcode.uk/create/ - - Here's the source code: https://github.com/pddring/createwithcode - - Let's add this simulator into this editor -- Make the website nicer -- Make these instructions nicer +# micro:edit + +An online Python editor for the micro:bit. + +This file is for students on the [Villiers Park](http://www.villierspark.org.uk/) Computer Science Course. Although the rest of you are allowed to read it too :) + +## Making Changes + +If you want to build new features into the editor you'll need a local copy of the code to change, as well as a way to test your changes. Here's how: + +You'll need to make sure you've got [git](https://git-scm.com/), [VirtualBox](https://www.virtualbox.org/), and [Vagrant](https://www.vagrantup.com/) installed. They're all free and pretty easy to install. + +Then you'll need to fork this repo (so you'll need a GitHub account, if you don't already have one). This is easy, just click the "Fork" button in the top right of this page. + +You'll now have your own copy of the repository stored in your own account. You can make whatever changes you'd like to this copy; it's yours. + +To make changes you'll need to clone your fork. This might require running something like this on the command line: + + $ git clone https://github.com/YOUR_USERNAME/PythonEditor + +This will have downloaded the repo to your computer. Let's now get vagrant up and running by doing: + + $ cd PythonEditor + $ vagrant up + +This one might take a while, but when it's done there will be a virtual machine running on your computer with all the code inside. We can connect to the virtual machine like this: + + $ vagrant ssh + +And now we can serve the website locally: + + $ cd /vagrant + $ ./show.sh + +If you now open this link: http://192.168.33.10:8000 you should see the editor. Except this one is running on your machine, so changes we make here will be seen on the website. + +You can now edit the code and see the changes you make alter the local copy of the website. Start by changing something small to see if it works. Then think of a minor bugfix/improvement you can make and try that. When you're confident about making larger changes, go for it! + + +## Sharing Changes + +When you're done making changes you'll want to have them included in the CodeGuild version of the website (not just your own), and then maybe even the official BBC version. So first push your changes up to your fork: + + $ git add CHANGED_FILE CHANGED_FILE + $ git commit -m 'DESCRIPTION_OF_CHANGES' + $ git push origin master + +If you don't know what the `git add` or `git commit` instructions are doing, ask around! + +Now your fork will have the changes, let's make a pull request to the main repo to have them included in the main site. You'll need to open your fork on the GitHub website and click the "New Pull Request" button. Hopefully you'll see a green bit of text that says "Able to merge", if so, click the "Create pull request" button, provide a description of the work you've done and alick "Create pull request" again. If instead you see a red error message, you'll have to fix the problems it talks about before your work can be merged. + + +## Improvements + +- Add a simulator to the editor + - Here's an example of a micro:bit simulator running Python: https://tools.withcode.uk/create/ + - Here's the source code: https://github.com/pddring/createwithcode + - Let's add this simulator into this editor +- Make the website nicer +- Make these instructions nicer diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index be62e00c..c06a2f6d 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -1,41 +1,41 @@ -Contributing to the Editor -========================== - -Hey! Many thanks for wanting to improve the browser based editor for -MicroPython on the BBC micro:bit. - -Contributions are welcome, without prejudice, from *anyone* irrespective of -who you are. If you're thinking, "but that probably doesn't mean me", then we -ESPECIALLY mean you. Good quality code and engagement with respect, humour and -intelligence wins every time. - -* If you're from a background which isn't well-represented in most geeky groups, get involved - *we want to help you make a difference*. -* If you're from a background which *is* well-represented in most geeky groups, get involved - *we want your help making a difference*. -* If you're worried about not being technical enough, get involved - *your fresh perspective will be invaluable*. -* If you think you're an imposter, get involved. -* If your day job isn't code, get involved. -* This isn't a group of experts, just people. Get involved! -* We are interested in educational, social and technical problems. If you are too, get involved. -* This is a new community. *No-one knows what they are doing*, so, get involved. - -We expect contributors to follow the Python Software Foundation's Code of -Conduct: https://www.python.org/psf/codeofconduct/ - -Feedback may be given for contributions and, where necessary, changes will -be politely requested and discussed with the originating author. Respectful -yet robust argument is most welcome. - -Finally, contributions are subject to the following caveat: the contribution -was created by the contributor who, by submitting the contribution, is -confirming that they have the authority to submit the contribution and place it -under the license as defined in the LICENSE file found within this repository. - -Checklist -+++++++++ - -* Your code should be commented in *plain English* (British spelling). -* If your contribution is for a major block of work and you've not done so - already, add yourself to the AUTHORS file following the convention found - therein. -* Try to include tests! -* Have fun! +Contributing to the Editor +========================== + +Hey! Many thanks for wanting to improve the browser based editor for +MicroPython on the BBC micro:bit. + +Contributions are welcome, without prejudice, from *anyone* irrespective of +who you are. If you're thinking, "but that probably doesn't mean me", then we +ESPECIALLY mean you. Good quality code and engagement with respect, humour and +intelligence wins every time. + +* If you're from a background which isn't well-represented in most geeky groups, get involved - *we want to help you make a difference*. +* If you're from a background which *is* well-represented in most geeky groups, get involved - *we want your help making a difference*. +* If you're worried about not being technical enough, get involved - *your fresh perspective will be invaluable*. +* If you think you're an imposter, get involved. +* If your day job isn't code, get involved. +* This isn't a group of experts, just people. Get involved! +* We are interested in educational, social and technical problems. If you are too, get involved. +* This is a new community. *No-one knows what they are doing*, so, get involved. + +We expect contributors to follow the Python Software Foundation's Code of +Conduct: https://www.python.org/psf/codeofconduct/ + +Feedback may be given for contributions and, where necessary, changes will +be politely requested and discussed with the originating author. Respectful +yet robust argument is most welcome. + +Finally, contributions are subject to the following caveat: the contribution +was created by the contributor who, by submitting the contribution, is +confirming that they have the authority to submit the contribution and place it +under the license as defined in the LICENSE file found within this repository. + +Checklist ++++++++++ + +* Your code should be commented in *plain English* (British spelling). +* If your contribution is for a major block of work and you've not done so + already, add yourself to the AUTHORS file following the convention found + therein. +* Try to include tests! +* Have fun! diff --git a/LICENSE b/LICENSE index 740c78f5..405f7b76 100644 --- a/LICENSE +++ b/LICENSE @@ -1,18 +1,18 @@ -Copyright (c) 2015-2016 Python Software Foundation. - -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. +Copyright (c) 2015-2016 Python Software Foundation. + +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. diff --git a/README.rst b/README.rst index 83df9e49..82cd13a8 100644 --- a/README.rst +++ b/README.rst @@ -1,158 +1,158 @@ -BBC micro:bit MicroPython Editor for Browsers -============================================= - -This project is an editor that targets the MicroPython -(http://micropython.org) version of the Python programming language -(http://python.org/). Code written with this editor is expected to run on the -BBC's micro:bit device (https://en.wikipedia.org/wiki/Micro_Bit). - -Developer Setup ---------------- - -This editor works with any modern web browser. - -In addition to cloning the repository it is required to retrieve the GIT -submodules:: - - git clone https://github.com/bbcmicrobit/PythonEditor - cd PythonEditor - git submodule update --init --recursive - -**THIS NEEDS TO BE DONE BEFORE ANYTHING ELSE, OR IT WILL NOT WORK.** - -Assuming you have Python 3 installed you can serve the editor like this:: - - $ ./show.sh - http://localhost:8000/editor.html - Serving HTTP on 0.0.0.0 port 8000 ... - -As the script tells us, point your browser to http://localhost:8000/editor.html. - -It's also possible to run the editor directly from the file system like this, -for example:: - - $ firefox editor.html - -Or by double-clicking on the ``editor.html`` file from your file manager. - -**IMPORTANT**: When the editor is run from the file system, the "sharing" -button is hidden. Because of security reasons, many local browsers won't allow -it to function correctly unless the editor is properly served from a network -domain rather than directly from the file system. - -Tests -+++++ - -Simply point your browser to the ``tests.html`` file. - -Tests are in the ``tests`` directory with their own README explaining how they -work. - -Code -++++ - -* ace - a directory containing the Ace editor (http://ace.c9.io). -* blockly - a GIT sub-module containing Google's blockly project. -* CHANGELOG - a record of how things have changed between versions. -* CONTRIBUTING.rst - a guide for people who want to contribute (you should!). -* editor.html - the page to be loaded by your browser. -* firmware.hex - copy of the "vanilla" MicroPython firmware used by the editor. -* help.html - a single page user facing help page. -* LICENSE - a copy of the MIT software license that covers this code. -* microbit_blocks - a GIT sub-module containing custom MicroPython blocks. -* python-main.js - the JavaScript code for running the editor. -* README.rst - this file, the clue is in the name. ;-) -* tests.html - the browser based test runner. -* show.sh - a script that allows you to serve the editor from localhost. Requires Python 3. -* static - contains css, js and img sub-directories. -* tests - contains the Python specific test suite. -* tests.html - point your browser at this file to run the tests. - -Contributing -++++++++++++ - -We love bug reports, contributions and help. Please read the CONTRIBUTING.rst -file for how we work as a community and our expectations for workflow, code and -behaviour. - -Usage ------ - -The Python editor is based upon the "Ace" JavaScript editor (http://ace.c9.io) -and includes syntax highlighting, code folding and (semi) intelligent -auto-indentation. - -All new scripts default to something simple and sensible. - -The default name for a new script is ``microbit``. The default comment is -``A MicroPython script``. The default code is a short program to repeatedly -display ``Hello, World!`` followed by a heart. You can change these at any time -by clicking on them. - -It is possible to override the default name, comment and code via query string -arguments in the URL. For example, appending ``?name=My%20script`` to the -editor's URL will update the name of the script. Furthermore, appending -``?name=My%20script&comment=A%20different%20comment`` will override both the -name and comment. Please note that all query string arguments must be correctly -URL encoded - this especially applies to code. Use the "share" button in the -editor to generate and share such URLs with appended query strings. - -The layout and functionality is deliberately simple. The buttons at the -top left, act as follows: - -* Download - creates a .hex file locally in the user's browser and prompts the user to download it. The resulting file should be copied over to the micro:bit device just like when using all the other editors. The filename will be the name of the script with spaces replaced by "_" and ending in .hex. So "extraordinary script" is saved as extraordinary_script.hex. -* Save - download a copy of the Python source code. The filename will be the name of the script with spaces replaced by "_" and ending in .py. -* Blockly - arrange visual blocks to quickly create Python code. Moving such blocks will re-write your Python code and you may lose work. Furthermore, the arrangement of blocks is currently not saved, just the resulting Python code as described above. -* Snippets - allow user's to write code from pre-defined Python fragments (functions, loops, if...else etc). They are triggered by typing a keyword followed by TAB. For example, type "wh" followed by TAB to insert a while... loop. Clicking on the code snippets button opens up a modal dialog window containing instructions and a table of the available snippets along with their trigger and a short and simple description. -* Help - opens a single page in a new tab that contains user-facing help. -* Share - generate a short URL for the script. Share this with others. This button will be missing if run from the local file system. - -Directly next to the large buttons are two smaller icons. The zoom in and -zoom out buttons that make it easy for teachers to display code via a projector. - -If you have a Python script or hex file on your local computer, you can load it -into the editor by dragging it onto the text area. - -If you plug in your micro:bit and want to get the REPL you'll need to install -pyserial and run the following command with the appropriate permissions (such -as root, as shockingly demonstrated below):: - - $ sudo python -m serial.tools.miniterm -b 115200 /dev/ttyACM0 - -Remember to replace ``/dev/ttyACM0`` with the appropriate device for your computer. - -The .hex file is generated in the following way: - -* A "vanilla" version of the MicroPython hex is hidden within the DOM. -* We take the Python code in the editor and turn it into a hex representation. -* We insert the Python derived hex into the correct place within the MicroPython hex. -* The resulting combination is downloaded onto the user's local filesystem for flashing onto the device. - -The hidden MicroPython hex is just over 600k. While this sounds large, it's -relatively small when you consider: - -* The Guardian's front page is around 1.5mb -* Compression is built into the server -* The web has caching built in (we should trust it) -* We actually want kids to view source and find the .hex file in as raw a form as possible. - -Configuration -------------- - -To launch the editor you'll need to pass in a ``config`` JavaScript object -containing translation strings and feature flags. Take a look in the -``editor.html`` file to see how this is done. - -Documentation -------------- - -For documentation for this project - you're reading it. ;-) - -For in-editor documentation aimed at the user, this is in the help.html file. - -Legacy ------- - -This project was born from a TouchDevelop based editor created by Nicholas -H.Tollervey for the BBC. This is no longer maintained, although you can find it -still on the ``touch-develop-legacy`` branch in this repository. +BBC micro:bit MicroPython Editor for Browsers +============================================= + +This project is an editor that targets the MicroPython +(http://micropython.org) version of the Python programming language +(http://python.org/). Code written with this editor is expected to run on the +BBC's micro:bit device (https://en.wikipedia.org/wiki/Micro_Bit). + +Developer Setup +--------------- + +This editor works with any modern web browser. + +In addition to cloning the repository it is required to retrieve the GIT +submodules:: + + git clone https://github.com/bbcmicrobit/PythonEditor + cd PythonEditor + git submodule update --init --recursive + +**THIS NEEDS TO BE DONE BEFORE ANYTHING ELSE, OR IT WILL NOT WORK.** + +Assuming you have Python 3 installed you can serve the editor like this:: + + $ ./show.sh + http://localhost:8000/editor.html + Serving HTTP on 0.0.0.0 port 8000 ... + +As the script tells us, point your browser to http://localhost:8000/editor.html. + +It's also possible to run the editor directly from the file system like this, +for example:: + + $ firefox editor.html + +Or by double-clicking on the ``editor.html`` file from your file manager. + +**IMPORTANT**: When the editor is run from the file system, the "sharing" +button is hidden. Because of security reasons, many local browsers won't allow +it to function correctly unless the editor is properly served from a network +domain rather than directly from the file system. + +Tests ++++++ + +Simply point your browser to the ``tests.html`` file. + +Tests are in the ``tests`` directory with their own README explaining how they +work. + +Code +++++ + +* ace - a directory containing the Ace editor (http://ace.c9.io). +* blockly - a GIT sub-module containing Google's blockly project. +* CHANGELOG - a record of how things have changed between versions. +* CONTRIBUTING.rst - a guide for people who want to contribute (you should!). +* editor.html - the page to be loaded by your browser. +* firmware.hex - copy of the "vanilla" MicroPython firmware used by the editor. +* help.html - a single page user facing help page. +* LICENSE - a copy of the MIT software license that covers this code. +* microbit_blocks - a GIT sub-module containing custom MicroPython blocks. +* python-main.js - the JavaScript code for running the editor. +* README.rst - this file, the clue is in the name. ;-) +* tests.html - the browser based test runner. +* show.sh - a script that allows you to serve the editor from localhost. Requires Python 3. +* static - contains css, js and img sub-directories. +* tests - contains the Python specific test suite. +* tests.html - point your browser at this file to run the tests. + +Contributing +++++++++++++ + +We love bug reports, contributions and help. Please read the CONTRIBUTING.rst +file for how we work as a community and our expectations for workflow, code and +behaviour. + +Usage +----- + +The Python editor is based upon the "Ace" JavaScript editor (http://ace.c9.io) +and includes syntax highlighting, code folding and (semi) intelligent +auto-indentation. + +All new scripts default to something simple and sensible. + +The default name for a new script is ``microbit``. The default comment is +``A MicroPython script``. The default code is a short program to repeatedly +display ``Hello, World!`` followed by a heart. You can change these at any time +by clicking on them. + +It is possible to override the default name, comment and code via query string +arguments in the URL. For example, appending ``?name=My%20script`` to the +editor's URL will update the name of the script. Furthermore, appending +``?name=My%20script&comment=A%20different%20comment`` will override both the +name and comment. Please note that all query string arguments must be correctly +URL encoded - this especially applies to code. Use the "share" button in the +editor to generate and share such URLs with appended query strings. + +The layout and functionality is deliberately simple. The buttons at the +top left, act as follows: + +* Download - creates a .hex file locally in the user's browser and prompts the user to download it. The resulting file should be copied over to the micro:bit device just like when using all the other editors. The filename will be the name of the script with spaces replaced by "_" and ending in .hex. So "extraordinary script" is saved as extraordinary_script.hex. +* Save - download a copy of the Python source code. The filename will be the name of the script with spaces replaced by "_" and ending in .py. +* Blockly - arrange visual blocks to quickly create Python code. Moving such blocks will re-write your Python code and you may lose work. Furthermore, the arrangement of blocks is currently not saved, just the resulting Python code as described above. +* Snippets - allow user's to write code from pre-defined Python fragments (functions, loops, if...else etc). They are triggered by typing a keyword followed by TAB. For example, type "wh" followed by TAB to insert a while... loop. Clicking on the code snippets button opens up a modal dialog window containing instructions and a table of the available snippets along with their trigger and a short and simple description. +* Help - opens a single page in a new tab that contains user-facing help. +* Share - generate a short URL for the script. Share this with others. This button will be missing if run from the local file system. + +Directly next to the large buttons are two smaller icons. The zoom in and +zoom out buttons that make it easy for teachers to display code via a projector. + +If you have a Python script or hex file on your local computer, you can load it +into the editor by dragging it onto the text area. + +If you plug in your micro:bit and want to get the REPL you'll need to install +pyserial and run the following command with the appropriate permissions (such +as root, as shockingly demonstrated below):: + + $ sudo python -m serial.tools.miniterm -b 115200 /dev/ttyACM0 + +Remember to replace ``/dev/ttyACM0`` with the appropriate device for your computer. + +The .hex file is generated in the following way: + +* A "vanilla" version of the MicroPython hex is hidden within the DOM. +* We take the Python code in the editor and turn it into a hex representation. +* We insert the Python derived hex into the correct place within the MicroPython hex. +* The resulting combination is downloaded onto the user's local filesystem for flashing onto the device. + +The hidden MicroPython hex is just over 600k. While this sounds large, it's +relatively small when you consider: + +* The Guardian's front page is around 1.5mb +* Compression is built into the server +* The web has caching built in (we should trust it) +* We actually want kids to view source and find the .hex file in as raw a form as possible. + +Configuration +------------- + +To launch the editor you'll need to pass in a ``config`` JavaScript object +containing translation strings and feature flags. Take a look in the +``editor.html`` file to see how this is done. + +Documentation +------------- + +For documentation for this project - you're reading it. ;-) + +For in-editor documentation aimed at the user, this is in the help.html file. + +Legacy +------ + +This project was born from a TouchDevelop based editor created by Nicholas +H.Tollervey for the BBC. This is no longer maintained, although you can find it +still on the ``touch-develop-legacy`` branch in this repository. diff --git a/RELEASE_TODO.rst b/RELEASE_TODO.rst index 560f2267..5a11803c 100644 --- a/RELEASE_TODO.rst +++ b/RELEASE_TODO.rst @@ -1,9 +1,9 @@ -Checklist for Releases -====================== - -* Update the version number in the editor.html file. -* Update the CHANGES.rst file with English description of changes made. -* If required, update the firmware.hex file to the correct version of the "vanilla" MicroPython runtime used in this release. -* Create a tagged release using GitHub. -* Inform those who maintain the versioning manifest. Currently this is @jaustin at the micro:bit foundation. - +Checklist for Releases +====================== + +* Update the version number in the editor.html file. +* Update the CHANGES.rst file with English description of changes made. +* If required, update the firmware.hex file to the correct version of the "vanilla" MicroPython runtime used in this release. +* Create a tagged release using GitHub. +* Inform those who maintain the versioning manifest. Currently this is @jaustin at the micro:bit foundation. + diff --git a/Vagrantfile b/Vagrantfile index 4f49cfbd..038b528d 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -1,20 +1,20 @@ -# -*- mode: ruby -*- -# vi: set ft=ruby : -Vagrant.configure("2") do |config| - config.vm.box = "ubuntu/trusty64" - config.vm.network "private_network", ip: "192.168.33.10" - config.vm.provision "shell", inline: <<-SHELL - add-apt-repository ppa:jonathonf/python-3.6 - apt-get update - apt-get upgrade --assume-yes - apt-get install --assume-yes \ - git \ - vim \ - python3.6 - apt-get autoremove --assume-yes - SHELL - config.vm.provision "shell", privileged: false, inline: <<-SHELL - cd /vagrant - git submodule update --init --recursive - SHELL -end +# -*- mode: ruby -*- +# vi: set ft=ruby : +Vagrant.configure("2") do |config| + config.vm.box = "ubuntu/trusty64" + config.vm.network "private_network", ip: "192.168.33.10" + config.vm.provision "shell", inline: <<-SHELL + add-apt-repository ppa:jonathonf/python-3.6 + apt-get update + apt-get upgrade --assume-yes + apt-get install --assume-yes \ + git \ + vim \ + python3.6 + apt-get autoremove --assume-yes + SHELL + config.vm.provision "shell", privileged: false, inline: <<-SHELL + cd /vagrant + git submodule update --init --recursive + SHELL +end diff --git a/ace/ace.js b/ace/ace.js index 8697a22c..6516e1b0 100644 --- a/ace/ace.js +++ b/ace/ace.js @@ -1,11 +1,11 @@ -(function(){function o(n){var i=e;n&&(e[n]||(e[n]={}),i=e[n]);if(!i.define||!i.define.packaged)t.original=i.define,i.define=t,i.define.packaged=!0;if(!i.require||!i.require.packaged)r.original=i.require,i.require=r,i.require.packaged=!0}var ACE_NAMESPACE = "ace",e=function(){return this}();!e&&typeof window!="undefined"&&(e=window);if(!ACE_NAMESPACE&&typeof requirejs!="undefined")return;var t=function(e,n,r){if(typeof e!="string"){t.original?t.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(r=n),t.modules[e]||(t.payloads[e]=r,t.modules[e]=null)};t.modules={},t.payloads={};var n=function(e,t,n){if(typeof t=="string"){var i=s(e,t);if(i!=undefined)return n&&n(),i}else if(Object.prototype.toString.call(t)==="[object Array]"){var o=[];for(var u=0,a=t.length;u1&&u(t,"")>-1&&(a=RegExp(this.source,r.replace.call(o(this),"g","")),r.replace.call(e.slice(t.index),a,function(){for(var e=1;et.index&&this.lastIndex--}return t},s||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t})}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+ta)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n=0?parseFloat((i.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((i.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&window.navigator.product==="Gecko",t.isOldGecko=t.isGecko&&parseInt((i.match(/rv\:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&Object.prototype.toString.call(window.opera)=="[object Opera]",t.isWebKit=parseFloat(i.split("WebKit/")[1])||undefined,t.isChrome=parseFloat(i.split(" Chrome/")[1])||undefined,t.isAIR=i.indexOf("AdobeAIR")>=0,t.isIPad=i.indexOf("iPad")>=0,t.isTouchPad=i.indexOf("TouchPad")>=0,t.isChromeOS=i.indexOf(" CrOS ")>=0}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function o(e,t,n){var o=s(t);if(!i.isMac&&u){if(u[91]||u[92])o|=8;if(u.altGr){if((3&o)==3)return;u.altGr=0}if(n===18||n===17){var f="location"in t?t.location:t.keyLocation;if(n===17&&f===1)u[n]==1&&(a=t.timeStamp);else if(n===18&&o===3&&f===2){var l=t.timeStamp-a;l<50&&(u.altGr=!0)}}}n in r.MODIFIER_KEYS&&(n=-1),o&8&&(n===91||n===93)&&(n=-1);if(!o&&n===13){var f="location"in t?t.location:t.keyLocation;if(f===3){e(t,o,-n);if(t.defaultPrevented)return}}if(i.isChromeOS&&o&8){e(t,o,n);if(t.defaultPrevented)return;o&=-9}return!!o||n in r.FUNCTION_KEYS||n in r.PRINTABLE_KEYS?e(t,o,n):!1}function f(e){u=Object.create(null)}var r=e("./keys"),i=e("./useragent");t.addListener=function(e,t,n){if(e.addEventListener)return e.addEventListener(t,n,!1);if(e.attachEvent){var r=function(){n.call(e,window.event)};n._wrapper=r,e.attachEvent("on"+t,r)}},t.removeListener=function(e,t,n){if(e.removeEventListener)return e.removeEventListener(t,n,!1);e.detachEvent&&e.detachEvent("on"+t,n._wrapper||n)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return e.type=="dblclick"?0:e.type=="contextmenu"||i.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,n,r){function i(e){n&&n(e),r&&r(e),t.removeListener(document,"mousemove",n,!0),t.removeListener(document,"mouseup",i,!0),t.removeListener(document,"dragstart",i,!0)}return t.addListener(document,"mousemove",n,!0),t.addListener(document,"mouseup",i,!0),t.addListener(document,"dragstart",i,!0),i},t.addTouchMoveListener=function(e,n){if("ontouchmove"in e){var r,i;t.addListener(e,"touchstart",function(e){var t=e.changedTouches[0];r=t.clientX,i=t.clientY}),t.addListener(e,"touchmove",function(e){var t=1,s=e.changedTouches[0];e.wheelX=-(s.clientX-r)/t,e.wheelY=-(s.clientY-i)/t,r=s.clientX,i=s.clientY,n(e)})}},t.addMouseWheelListener=function(e,n){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){var t=8;e.wheelDeltaX!==undefined?(e.wheelX=-e.wheelDeltaX/t,e.wheelY=-e.wheelDeltaY/t):(e.wheelX=0,e.wheelY=-e.wheelDelta/t),n(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){var t=.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*t||0,e.wheelY=e.deltaY*t||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=(e.deltaX||0)*5,e.wheelY=(e.deltaY||0)*5}n(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=(e.detail||0)*5,e.wheelY=0):(e.wheelX=0,e.wheelY=(e.detail||0)*5),n(e)})},t.addMultiMouseDownListener=function(e,n,r,s){var o=0,u,a,f,l={2:"dblclick",3:"tripleclick",4:"quadclick"};t.addListener(e,"mousedown",function(e){t.getButton(e)!==0?o=0:e.detail>1?(o++,o>4&&(o=1)):o=1;if(i.isIE){var c=Math.abs(e.clientX-u)>5||Math.abs(e.clientY-a)>5;if(!f||c)o=1;f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),o==1&&(u=e.clientX,a=e.clientY)}e._clicks=o,r[s]("mousedown",e);if(o>4)o=0;else if(o>1)return r[s](l[o],e)}),i.isOldIE&&t.addListener(e,"dblclick",function(e){o=2,f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),r[s]("mousedown",e),r[s](l[o],e)})};var s=!i.isMac||!i.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};t.getModifierString=function(e){return r.KEY_MODS[s(e)]};var u=null,a=0;t.addCommandKeyListener=function(e,n){var r=t.addListener;if(i.isOldGecko||i.isOpera&&!("KeyboardEvent"in window)){var s=null;r(e,"keydown",function(e){s=e.keyCode}),r(e,"keypress",function(e){return o(n,e,s)})}else{var a=null;r(e,"keydown",function(e){u[e.keyCode]=(u[e.keyCode]||0)+1;var t=o(n,e,e.keyCode);return a=e.defaultPrevented,t}),r(e,"keypress",function(e){a&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),a=null)}),r(e,"keyup",function(e){u[e.keyCode]=null}),u||(f(),r(window,"focus",f))}};if(typeof window=="object"&&window.postMessage&&!i.isOldIE){var l=1;t.nextTick=function(e,n){n=n||window;var r="zero-timeout-message-"+l;t.addListener(n,"message",function i(s){s.data==r&&(t.stopPropagation(s),t.removeListener(n,"message",i),e())}),n.postMessage(r,"*")}}t.nextFrame=typeof window=="object"&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n1),e.preventDefault()},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;n.$blockScrolling++,this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(e):t||n.selection.moveToPosition(e),t||this.select(),n.renderer.scroller.setCapture&&n.renderer.scroller.setCapture(),n.setStyle("ace_selecting"),this.setState("select"),n.$blockScrolling--},this.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);t.$blockScrolling++;if(this.$clickSelection){var r=this.$clickSelection.comparePoint(n);if(r==-1)e=this.$clickSelection.end;else if(r==1)e=this.$clickSelection.start;else{var i=f(this.$clickSelection,n);n=i.cursor,e=i.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.$blockScrolling--,t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,n=this.editor,r=n.renderer.screenToTextCoordinates(this.x,this.y),i=n.selection[e](r.row,r.column);n.$blockScrolling++;if(this.$clickSelection){var s=this.$clickSelection.comparePoint(i.start),o=this.$clickSelection.comparePoint(i.end);if(s==-1&&o<=0){t=this.$clickSelection.end;if(i.end.row!=r.row||i.end.column!=r.column)r=i.start}else if(o==1&&s>=0){t=this.$clickSelection.start;if(i.start.row!=r.row||i.start.column!=r.column)r=i.end}else if(s==-1&&o==1)r=i.end,t=i.start;else{var u=f(this.$clickSelection,r);r=u.cursor,t=u.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(r),n.$blockScrolling--,n.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=a(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>o||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,r=n.session,i=r.getBracketRange(t);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=i,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var r=n.getSelectionRange();r.isMultiLine()&&r.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(r.start.row),this.$clickSelection.end=n.selection.getLineRange(r.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(e.getAccelKey())return;e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),r=this.editor,i=r.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);if(i||n<200)return this.$lastScrollTime=t,r.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()},this.onTouchMove=function(e){var t=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),r=this.editor,i=r.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);if(i||n<200)return this.$lastScrollTime=t,r.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()}}).call(u.prototype),t.DefaultHandlers=u}),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,n){"use strict";function s(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var r=e("./lib/oop"),i=e("./lib/dom");(function(){this.$init=function(){return this.$element=i.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){i.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){i.addCssClass(this.getElement(),e)},this.show=function(e,t,n){e!=null&&this.setText(e),t!=null&&n!=null&&this.setPosition(t,n),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(s.prototype),t.Tooltip=s}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,n){"use strict";function u(e){function l(){var r=u.getDocumentPosition().row,s=n.$annotations[r];if(!s)return c();var o=t.session.getLength();if(r==o){var a=t.renderer.pixelToScreenCoordinates(0,u.y).row,l=u.$pos;if(a>t.session.documentToScreenRow(l.row,l.column))return c()}if(f==s)return;f=s.text.join("
"),i.setHtml(f),i.show(),t.on("mousewheel",c);if(e.$tooltipFollowsMouse)h(u);else{var p=n.$cells[t.session.documentToScreenRow(r,0)].element,d=p.getBoundingClientRect(),v=i.getElement().style;v.left=d.right+"px",v.top=d.bottom+"px"}}function c(){o&&(o=clearTimeout(o)),f&&(i.hide(),f=null,t.removeEventListener("mousewheel",c))}function h(e){i.setPosition(e.x,e.y)}var t=e.editor,n=t.renderer.$gutterLayer,i=new a(t.container);e.editor.setDefaultHandler("guttermousedown",function(r){if(!t.isFocused()||r.getButton()!=0)return;var i=n.getRegion(r);if(i=="foldWidgets")return;var s=r.getDocumentPosition().row,o=t.session.selection;if(r.getShiftKey())o.selectTo(s,0);else{if(r.domEvent.detail==2)return t.selectAll(),r.preventDefault();e.$clickSelection=t.selection.getLineRange(s)}return e.setState("selectByLines"),e.captureMouse(r),r.preventDefault()});var o,u,f;e.editor.setDefaultHandler("guttermousemove",function(t){var n=t.domEvent.target||t.domEvent.srcElement;if(r.hasCssClass(n,"ace_fold-widget"))return c();f&&e.$tooltipFollowsMouse&&h(t),u=t;if(o)return;o=setTimeout(function(){o=null,u&&!e.isMousePressed?l():c()},50)}),s.addListener(t.renderer.$gutter,"mouseout",function(e){u=null;if(!f||o)return;o=setTimeout(function(){o=null,c()},50)}),t.on("changeSession",c)}function a(e){o.call(this,e)}var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/event"),o=e("../tooltip").Tooltip;i.inherits(a,o),function(){this.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,r=window.innerHeight||document.documentElement.clientHeight,i=this.getWidth(),s=this.getHeight();e+=15,t+=15,e+i>n&&(e-=e+i-n),t+s>r&&(t-=20+s),o.prototype.setPosition.call(this,e,t)}}.call(a.prototype),t.GutterHandler=u}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){r.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){r.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(this.$inSelection!==null)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var n=this.getDocumentPosition();this.$inSelection=t.contains(n.row,n.column)}return this.$inSelection},this.getButton=function(){return r.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=i.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(s.prototype)}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function f(e){function T(e,n){var r=Date.now(),i=!n||e.row!=n.row,s=!n||e.column!=n.column;if(!S||i||s)t.$blockScrolling+=1,t.moveCursorToPosition(e),t.$blockScrolling-=1,S=r,x={x:p,y:d};else{var o=l(x.x,x.y,p,d);o>a?S=null:r-S>=u&&(t.renderer.scrollCursorIntoView(),S=null)}}function N(e,n){var r=Date.now(),i=t.renderer.layerConfig.lineHeight,s=t.renderer.layerConfig.characterWidth,u=t.renderer.scroller.getBoundingClientRect(),a={x:{left:p-u.left,right:u.right-p},y:{top:d-u.top,bottom:u.bottom-d}},f=Math.min(a.x.left,a.x.right),l=Math.min(a.y.top,a.y.bottom),c={row:e.row,column:e.column};f/s<=2&&(c.column+=a.x.left=o&&t.renderer.scrollCursorIntoView(c):E=r:E=null}function C(){var e=g;g=t.renderer.screenToTextCoordinates(p,d),T(g,e),N(g,e)}function k(){m=t.selection.toOrientedRange(),h=t.session.addMarker(m,"ace_selection",t.getSelectionStyle()),t.clearSelection(),t.isFocused()&&t.renderer.$cursorLayer.setBlinking(!1),clearInterval(v),C(),v=setInterval(C,20),y=0,i.addListener(document,"mousemove",O)}function L(){clearInterval(v),t.session.removeMarker(h),h=null,t.$blockScrolling+=1,t.selection.fromOrientedRange(m),t.$blockScrolling-=1,t.isFocused()&&!w&&t.renderer.$cursorLayer.setBlinking(!t.getReadOnly()),m=null,g=null,y=0,E=null,S=null,i.removeListener(document,"mousemove",O)}function O(){A==null&&(A=setTimeout(function(){A!=null&&h&&L()},20))}function M(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return e=="text/plain"||e=="Text"})}function _(e){var t=["copy","copymove","all","uninitialized"],n=["move","copymove","linkmove","all","uninitialized"],r=s.isMac?e.altKey:e.ctrlKey,i="uninitialized";try{i=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return r&&t.indexOf(i)>=0?o="copy":n.indexOf(i)>=0?o="move":t.indexOf(i)>=0&&(o="copy"),o}var t=e.editor,n=r.createElement("img");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",s.isOpera&&(n.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var f=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];f.forEach(function(t){e[t]=this[t]},this),t.addEventListener("mousedown",this.onMouseDown.bind(e));var c=t.container,h,p,d,v,m,g,y=0,b,w,E,S,x;this.onDragStart=function(e){if(this.cancelDrag||!c.draggable){var r=this;return setTimeout(function(){r.startSelect(),r.captureMouse(e)},0),e.preventDefault()}m=t.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=t.getReadOnly()?"copy":"copyMove",s.isOpera&&(t.container.appendChild(n),n.scrollTop=0),i.setDragImage&&i.setDragImage(n,0,0),s.isOpera&&t.container.removeChild(n),i.clearData(),i.setData("Text",t.session.getTextRange()),w=!0,this.setState("drag")},this.onDragEnd=function(e){c.draggable=!1,w=!1,this.setState(null);if(!t.getReadOnly()){var n=e.dataTransfer.dropEffect;!b&&n=="move"&&t.session.remove(t.getSelectionRange()),t.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||k(),y++,e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragOver=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||(k(),y++),A!==null&&(A=null),e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragLeave=function(e){y--;if(y<=0&&h)return L(),b=null,i.preventDefault(e)},this.onDrop=function(e){if(!g)return;var n=e.dataTransfer;if(w)switch(b){case"move":m.contains(g.row,g.column)?m={start:g,end:g}:m=t.moveText(m,g);break;case"copy":m=t.moveText(m,g,!0)}else{var r=n.getData("Text");m={start:g,end:t.session.insert(g,r)},t.focus(),b=null}return L(),i.preventDefault(e)},i.addListener(c,"dragstart",this.onDragStart.bind(e)),i.addListener(c,"dragend",this.onDragEnd.bind(e)),i.addListener(c,"dragenter",this.onDragEnter.bind(e)),i.addListener(c,"dragover",this.onDragOver.bind(e)),i.addListener(c,"dragleave",this.onDragLeave.bind(e)),i.addListener(c,"drop",this.onDrop.bind(e));var A=null}function l(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=200,u=200,a=5;(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor,t=e.container;t.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var n=s.isWin?"default":"move";e.renderer.setCursorStyle(n),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(s.isIE&&this.state=="dragReady"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>3&&t.dragDrop()}if(this.state==="dragWait"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(!this.$dragEnabled)return;this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),r=e.getButton(),i=e.domEvent.detail||1;if(i===1&&r===0&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;"unselectable"in o&&(o.unselectable="on");if(t.getDragDelay()){if(s.isWebKit){this.cancelDrag=!0;var u=t.container;u.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}).call(f.prototype),t.DragdropHandler=f}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("./dom");t.get=function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.onreadystatechange=function(){n.readyState===4&&t(n.responseText)},n.send(null)},t.loadScript=function(e,t){var n=r.getDocumentHead(),i=document.createElement("script");i.src=e,n.appendChild(i),i.onload=i.onreadystatechange=function(e,n){if(n||!i.readyState||i.readyState=="loaded"||i.readyState=="complete")i=i.onload=i.onreadystatechange=null,n||t()}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o1&&(i=n[n.length-2]);var o=a[t+"Path"];return o==null?o=a.basePath:r=="/"&&(t=r=""),o&&o.slice(-1)!="/"&&(o+="/"),o+t+r+i+this.get("suffix")},t.setModuleUrl=function(e,t){return a.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(n,r){var i,o;Array.isArray(n)&&(o=n[0],n=n[1]);try{i=e(n)}catch(u){}if(i&&!t.$loading[n])return r&&r(i);t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(r);if(t.$loading[n].length>1)return;var a=function(){e([n],function(e){t._emit("load.module",{name:n,module:e});var r=t.$loading[n];t.$loading[n]=null,r.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return a();s.loadScript(t.moduleUrl(n,o),a)},t.init=f}),ace.define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=e("./default_handlers").DefaultHandlers,o=e("./default_gutter_handler").GutterHandler,u=e("./mouse_event").MouseEvent,a=e("./dragdrop_handler").DragdropHandler,f=e("../config"),l=function(e){var t=this;this.editor=e,new s(this),new o(this),new a(this);var n=function(t){(!document.hasFocus||!document.hasFocus())&&window.focus(),e.focus()},u=e.renderer.getMouseEventTarget();r.addListener(u,"click",this.onMouseEvent.bind(this,"click")),r.addListener(u,"mousemove",this.onMouseMove.bind(this,"mousemove")),r.addMultiMouseDownListener(u,[400,300,250],this,"onMouseEvent"),e.renderer.scrollBarV&&(r.addMultiMouseDownListener(e.renderer.scrollBarV.inner,[400,300,250],this,"onMouseEvent"),r.addMultiMouseDownListener(e.renderer.scrollBarH.inner,[400,300,250],this,"onMouseEvent"),i.isIE&&(r.addListener(e.renderer.scrollBarV.element,"mousedown",n),r.addListener(e.renderer.scrollBarH.element,"mousedown",n))),r.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),r.addTouchMoveListener(e.container,this.onTouchMove.bind(this,"touchmove"));var f=e.renderer.$gutter;r.addListener(f,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),r.addListener(f,"click",this.onMouseEvent.bind(this,"gutterclick")),r.addListener(f,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),r.addListener(f,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),r.addListener(u,"mousedown",n),r.addListener(f,"mousedown",function(t){return e.focus(),r.preventDefault(t)}),e.on("mousemove",function(n){if(t.state||t.$dragDelay||!t.$dragEnabled)return;var r=e.renderer.screenToTextCoordinates(n.x,n.y),i=e.session.selection.getRange(),s=e.renderer;!i.isEmpty()&&i.insideStart(r.row,r.column)?s.setCursorStyle("default"):s.setCursorStyle("")})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new u(t,this.editor))},this.onMouseMove=function(e,t){var n=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;if(!n||!n.length)return;this.editor._emit(e,new u(t,this.editor))},this.onMouseWheel=function(e,t){var n=new u(t,this.editor);n.speed=this.$scrollSpeed*2,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.onTouchMove=function(e,t){var n=new u(t,this.editor);n.speed=1,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var n=this.editor.renderer;n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=null);var s=this,o=function(e){if(!e)return;if(i.isWebKit&&!e.which&&s.releaseMouse)return s.releaseMouse();s.x=e.clientX,s.y=e.clientY,t&&t(e),s.mouseEvent=new u(e,s.editor),s.$mouseMoved=!0},a=function(e){clearInterval(l),f(),s[s.state+"End"]&&s[s.state+"End"](e),s.state="",n.$keepTextAreaAtCursor==null&&(n.$keepTextAreaAtCursor=!0,n.$moveTextAreaToCursor()),s.isMousePressed=!1,s.$onCaptureMouseMove=s.releaseMouse=null,e&&s.onMouseEvent("mouseup",e)},f=function(){s[s.state]&&s[s.state](),s.$mouseMoved=!1};if(i.isOldIE&&e.domEvent.type=="dblclick")return setTimeout(function(){a(e)});s.$onCaptureMouseMove=o,s.releaseMouse=r.capture(this.editor.container,o,a);var l=setInterval(f,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){if(t&&t.domEvent&&t.domEvent.type!="contextmenu")return;this.editor.off("nativecontextmenu",e),t&&t.domEvent&&r.stopEvent(t.domEvent)}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(l.prototype),f.defineOptions(l.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:i.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=l}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,n){"use strict";function r(e){e.on("click",function(t){var n=t.getDocumentPosition(),r=e.session,i=r.getFoldAt(n.row,n.column,1);i&&(t.getAccelKey()?r.removeFold(i):r.expandFold(i),t.stop())}),e.on("gutterclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session;i.foldWidgets&&i.foldWidgets[r]&&e.session.onFoldWidgetClick(r,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session,s=i.getParentFoldRangeData(r,!0),o=s.range||s.firstRange;if(o){r=o.start.row;var u=i.getFoldAt(r,i.getLine(r).length,1);u?i.removeFold(u):(i.addFold("...",o),e.renderer.scrollCursorIntoView({row:o.start.row,column:0}))}t.stop()}})}t.FoldHandler=r}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,n){"use strict";var r=e("../lib/keys"),i=e("../lib/event"),s=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]==e)return;while(t[t.length-1]&&t[t.length-1]!=this.$defaultHandler)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)},this.addKeyboardHandler=function(e,t){if(!e)return;typeof e=="function"&&!e.handleKeyboard&&(e.handleKeyboard=e);var n=this.$handlers.indexOf(e);n!=-1&&this.$handlers.splice(n,1),t==undefined?this.$handlers.push(e):this.$handlers.splice(t,0,e),n==-1&&e.attach&&e.attach(this.$editor)},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return t==-1?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(n){return n.getStatusText&&n.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,n,r){var s,o=!1,u=this.$editor.commands;for(var a=this.$handlers.length;a--;){s=this.$handlers[a].handleKeyboard(this.$data,e,t,n,r);if(!s||!s.command)continue;s.command=="null"?o=!0:o=u.exec(s.command,this.$editor,s.args,r),o&&r&&e!=-1&&s.passEvent!=1&&s.command.passEvent!=1&&i.stopEvent(r);if(o)break}return o},this.onCommandKey=function(e,t,n){var i=r.keyCodeToString(n);this.$callKeyboardHandlers(t,i,n,e)},this.onTextInput=function(e){var t=this.$callKeyboardHandlers(-1,e);t||this.$editor.commands.exec("insertstring",this.$editor,e)}}).call(s.prototype),t.KeyBinding=s}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?tthis.end.column?1:0:ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.rowt)var r={row:t+1,column:0};else if(this.start.rowt.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?o.fromPoints(t,t):this.isBackwards()?o.fromPoints(t,e):o.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(typeof t=="undefined"){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n=typeof e=="number"?e:this.lead.row,r,i=this.session.getFoldLine(n);return i?(n=i.start.row,r=i.end.row):r=n,t===!0?new o(n,0,r,this.session.getLine(r).length):new o(n,0,r+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(e.column===0)e.row>0&&this.moveCursorTo(e.row-1,this.doc.getLine(e.row-1).length);else{var n=this.session.getTabSize();this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(e.column-n,e.column).split(" ").length-1==n?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=r)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i;this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var s=this.session.getFoldAt(e,t,1);if(s){this.moveCursorTo(s.end.row,s.end.column);return}if(i=this.session.nonTokenRe.exec(r))t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(t);if(t>=n.length){this.moveCursorTo(e,n.length),this.moveCursorRight(),e0&&this.moveCursorWordLeft();return}if(o=this.session.tokenRe.exec(s))t-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0;this.moveCursorTo(e,t)},this.$shortWordEndIndex=function(e){var t,n=0,r,i=/\s/,s=this.session.tokenRe;s.lastIndex=0;if(t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{while((r=e[n])&&i.test(r))n++;if(n<1){s.lastIndex=0;while((r=e[n])&&!s.test(r)){s.lastIndex=0,n++;if(i.test(r)){if(n>2){n--;break}while((r=e[n])&&i.test(r))n++;if(n>2)break}}}}return s.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i=this.session.getFoldAt(e,t,1);if(i)return this.moveCursorTo(i.end.row,i.end.column);if(t==n.length){var s=this.doc.getLength();do e++,r=this.doc.getLine(e);while(e0&&/^\s*$/.test(r));t=r.length,/\s+$/.test(r)||(r="")}var s=i.stringReverse(r),o=this.$shortWordEndIndex(s);return this.moveCursorTo(e,t-o)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n=this.session.documentToScreenPosition(this.lead.row,this.lead.column);t===0&&(this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var r=this.session.screenToDocumentPosition(n.row+e,n.column);e!==0&&t===0&&r.row===this.lead.row&&r.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[r.row]&&r.row++,this.moveCursorTo(r.row,r.column+t,t===0)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var r=this.session.getFoldAt(e,t,1);r&&(e=r.start.row,t=r.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var r=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(r.row,r.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e.call(null,this);var n=this.getCursor();return o.fromPoints(t,n)}catch(r){return o.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(e.start==undefined){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=o.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(u.prototype),t.Selection=u}),ace.define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,n){"use strict";var r=e("./config"),i=2e3,s=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){var n=this.states[t],r=[],i=0,s=this.matchMappings[t]={defaultToken:"text"},o="g",u=[];for(var a=0;a1?f.onMatch=this.$applyToken:f.onMatch=f.token),c>1&&(/\\\d/.test(f.regex)?l=f.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+i+1)}):(c=1,l=this.removeCapturingGroups(f.regex)),!f.splitRegex&&typeof f.token!="string"&&u.push(f)),s[i]=a,i+=c,r.push(l),f.onMatch||(f.onMatch=null)}r.length||(s[0]=0,r.push("$")),u.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,o)},this),this.regExps[t]=new RegExp("("+r.join(")|(")+")|($)",o)}};(function(){this.$setMaxTokenCount=function(e){i=e|0},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if(typeof n=="string")return[{type:n,value:e}];var r=[];for(var i=0,s=n.length;il){var g=e.substring(l,m-v.length);h.type==p?h.value+=g:(h.type&&f.push(h),h={type:p,value:g})}for(var y=0;yi){c>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});while(l1&&n[0]!==r&&n.unshift("#tmp",r),{tokens:f,state:n.length?n:r}},this.reportError=r.reportError}).call(s.prototype),t.Tokenizer=s}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../lib/lang"),i=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(!t){for(var n in e)this.$rules[n]=e[n];return}for(var n in e){var r=e[n];for(var i=0;i=this.$rowTokens.length){this.$row+=1,e||(e=this.$session.getLength());if(this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(n!==undefined)return n;n=0;while(t>0)t-=1,n+=e[t].value.length;return n},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}}}).call(r.prototype),t.TokenIterator=r}),ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t,n){"use strict";var r=e("../tokenizer").Tokenizer,i=e("./text_highlight_rules").TextHighlightRules,s=e("./behaviour").Behaviour,o=e("../unicode"),u=e("../lib/lang"),a=e("../token_iterator").TokenIterator,f=e("../range").Range,l=function(){this.HighlightRules=i,this.$behaviour=new s};(function(){this.tokenRe=new RegExp("^["+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules,this.$tokenizer=new r(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,n,r){function w(e){for(var t=n;t<=r;t++)e(i.getLine(t),t)}var i=t.doc,s=!0,o=!0,a=Infinity,f=t.getTabSize(),l=!1;if(!this.lineCommentStart){if(!this.blockComment)return!1;var c=this.blockComment.start,h=this.blockComment.end,p=new RegExp("^(\\s*)(?:"+u.escapeRegExp(c)+")"),d=new RegExp("(?:"+u.escapeRegExp(h)+")\\s*$"),v=function(e,t){if(g(e,t))return;if(!s||/\S/.test(e))i.insertInLine({row:t,column:e.length},h),i.insertInLine({row:t,column:a},c)},m=function(e,t){var n;(n=e.match(d))&&i.removeInLine(t,e.length-n[0].length,e.length),(n=e.match(p))&&i.removeInLine(t,n[1].length,n[0].length)},g=function(e,n){if(p.test(e))return!0;var r=t.getTokens(n);for(var i=0;i2?r%f!=f-1:r%f==0}}var E=Infinity;w(function(e,t){var n=e.search(/\S/);n!==-1?(ne.length&&(E=e.length)}),a==Infinity&&(a=E,s=!1,o=!1),l&&a%f!=0&&(a=Math.floor(a/f)*f),w(o?m:v)},this.toggleBlockComment=function(e,t,n,r){var i=this.blockComment;if(!i)return;!i.start&&i[0]&&(i=i[0]);var s=new a(t,r.row,r.column),o=s.getCurrentToken(),u=t.selection,l=t.selection.toOrientedRange(),c,h;if(o&&/comment/.test(o.type)){var p,d;while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.start);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;p=new f(m,g,m,g+i.start.length);break}o=s.stepBackward()}var s=new a(t,r.row,r.column),o=s.getCurrentToken();while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.end);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;d=new f(m,g,m,g+i.end.length);break}o=s.stepForward()}d&&t.remove(d),p&&(t.remove(p),c=p.start.row,h=-i.start.length)}else h=i.start.length,c=n.start.row,t.insert(n.end,i.end),t.insert(n.start,i.start);l.start.row==c&&(l.start.column+=h),l.end.row==c&&(l.end.column+=h),t.selection.fromOrientedRange(l)},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);var n=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(var t=0;t=0&&t.row=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){function e(e,t,n){var r=n?e.column<=t.column:e.columnthis.row)return;var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){r.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new u(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},this.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e0,r=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){!e instanceof o&&(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),i(this.$lines,e,t),this._signal("change",e)},this.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,r=n.length,i=e.start.row,s=e.start.column,o=0,u=0;do{o=u,u+=t-1;var a=n.slice(o,u);if(u>r){e.lines=a,e.start.row=i+o,e.start.column=s;break}a.push(""),this.applyDelta({start:this.pos(i+o,s),end:this.pos(i+u,s=0),action:e.action,lines:a},!0)}while(!0)},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:e.action=="insert"?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i20){n.running=setTimeout(n.$worker,20);break}}n.currentLine=t,s<=r&&n.fireUpdateEvent(s,r)}};(function(){r.implement(this,i),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._signal("update",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,n=e.end.row-t;if(n===0)this.lines[t]=null;else if(e.action=="remove")this.lines.splice(t,n+1,null),this.states.splice(t,n+1,null);else{var r=Array(n+1);r.unshift(t,1),this.lines.splice.apply(this.lines,r),this.states.splice.apply(this.states,r)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],r=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=r.state+""?(this.states[e]=r.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=r.tokens}}).call(s.prototype),t.BackgroundTokenizer=s}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){if(this.regExp+""==e+"")return;this.regExp=e,this.cache=[]},this.update=function(e,t,n,i){if(!this.regExp)return;var o=i.firstRow,u=i.lastRow;for(var a=o;a<=u;a++){var f=this.cache[a];f==null&&(f=r.getMatchOffsets(n.getLine(a),this.regExp),f.length>this.MAX_RANGES&&(f=f.slice(0,this.MAX_RANGES)),f=f.map(function(e){return new s(a,e.offset,a,e.offset+e.length)}),this.cache[a]=f.length?f:"");for(var l=f.length;l--;)t.drawSingleLineMarker(e,f[l].toScreenRange(n),this.clazz,i)}}}).call(o.prototype),t.SearchHighlight=o}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){"use strict";function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var r=0,i=this.folds,s,o,u,a=!0;t==null&&(t=this.end.row,n=this.end.column);for(var f=0;f0)continue;var a=i(e,o.start);return u===0?t&&a!==0?-s-2:s:a>0||a===0&&!t?s:-s-1}return-s-1},this.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var r=this.pointIndex(e.end,t,n);return r<0?r=-r-1:r++,this.ranges.splice(n,r-n,e)},this.addList=function(e){var t=[];for(var n=e.length;n--;)t.push.call(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return i(e.start,t.start)});var n=t[0],r;for(var s=1;s=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.rowr)break;l.start.row==r&&l.start.column>=t.column&&(l.start.column!=t.column||!this.$insertRight)&&(l.start.column+=o,l.start.row+=s);if(l.end.row==r&&l.end.column>=t.column){if(l.end.column==t.column&&this.$insertRight)continue;l.end.column==t.column&&o>0&&al.start.column&&l.end.column==u[a+1].start.column&&(l.end.column-=o),l.end.column+=o,l.end.row+=s}}if(s!=0&&a=e)return i;if(i.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r=e)return i}return null},this.getFoldedRowCount=function(e,t){var n=this.$foldData,r=t-e+1;for(var i=0;i=t){u=e?r-=t-u:r=0);break}o>=e&&(u>=e?r-=o-u:r-=o-e+1)}return r},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n=this.$foldData,r=!1,o;e instanceof s?o=e:(o=new s(t,e),o.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(o.range);var u=o.start.row,a=o.start.column,f=o.end.row,l=o.end.column;if(u0&&(this.removeFolds(p),p.forEach(function(e){o.addSubFold(e)}));for(var d=0;d0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var n,i;e==null?(n=new r(0,0,this.getLength(),0),t=!0):typeof e=="number"?n=new r(e,0,e,this.getLine(e).length):"row"in e?n=r.fromPoints(e,e):n=e,i=this.getFoldsInRangeList(n);if(t)this.removeFolds(i);else{var s=i;while(s.length)this.expandFolds(s),s=this.getFoldsInRangeList(n)}if(i.length)return i},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,r,i){r==null&&(r=e.start.row),i==null&&(i=0),t==null&&(t=e.end.row),n==null&&(n=this.getLine(t).length);var s=this.doc,o="";return e.walk(function(e,t,n,u){if(t=e){i=s.end.row;try{var o=this.addFold("...",s);o&&(o.collapseChildren=n)}catch(u){}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle==e)return;this.$foldStyle=e,e=="manual"&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)},this.$setFolding=function(e){if(this.$foldMode==e)return;this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._emit("changeAnnotation");if(!e||this.$foldStyle=="manual"){this.foldWidgets=null;return}this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)},this.getParentFoldRangeData=function(e,t){var n=this.foldWidgets;if(!n||t&&n[e])return{};var r=e-1,i;while(r>=0){var s=n[r];s==null&&(s=n[r]=this.getFoldWidget(r));if(s=="start"){var o=this.getFoldWidgetRange(r);i||(i=o);if(o&&o.end.row>=e)break}r--}return{range:r!==-1&&o,firstRange:i}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var n={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},r=this.$toggleFoldWidget(e,n);if(!r){var i=t.target||t.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(!this.getFoldWidget)return;var n=this.getFoldWidget(e),r=this.getLine(e),i=n==="end"?-1:1,s=this.getFoldAt(e,i===-1?0:r.length,i);if(s){t.children||t.all?this.removeFold(s):this.expandFold(s);return}var o=this.getFoldWidgetRange(e,!0);if(o&&!o.isMultiLine()){s=this.getFoldAt(o.start.row,o.start.column,1);if(s&&o.isEqual(s.range)){this.removeFold(s);return}}if(t.siblings){var u=this.getParentFoldRangeData(e);if(u.range)var a=u.range.start.row+1,f=u.range.end.row;this.foldAll(a,f,t.all?1e4:0)}else t.children?(f=o?o.end.row:this.getLength(),this.foldAll(e+1,f,t.all?1e4:0)):o&&(t.all&&(o.collapseChildren=1e4),this.addFold("...",o));return o},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(n)return;var r=this.getParentFoldRangeData(t,!0);n=r.range||r.firstRange;if(n){t=n.start.row;var i=this.getFoldAt(t,this.getLine(t).length,1);i?this.removeFold(i):this.addFold("...",n)}},this.updateFoldWidgets=function(e){var t=e.start.row,n=e.end.row-t;if(n===0)this.foldWidgets[t]=null;else if(e.action=="remove")this.foldWidgets.splice(t,n+1,null);else{var r=Array(n+1);r.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,r)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var r=e("../range").Range,i=e("./fold_line").FoldLine,s=e("./fold").Fold,o=e("../token_iterator").TokenIterator;t.Folding=u}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,n){"use strict";function s(){this.findMatchingBracket=function(e,t){if(e.column==0)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(n=="")return null;var r=n.match(/([\(\[\{])|([\)\]\}])/);return r?r[1]?this.$findClosingBracket(r[1],e):this.$findOpeningBracket(r[2],e):null},this.getBracketRange=function(e){var t=this.getLine(e.row),n=!0,r,s=t.charAt(e.column-1),o=s&&s.match(/([\(\[\{])|([\)\]\}])/);o||(s=t.charAt(e.column),e={row:e.row,column:e.column+1},o=s&&s.match(/([\(\[\{])|([\)\]\}])/),n=!1);if(!o)return null;if(o[1]){var u=this.$findClosingBracket(o[1],e);if(!u)return null;r=i.fromPoints(e,u),n||(r.end.column++,r.start.column--),r.cursor=r.end}else{var u=this.$findOpeningBracket(o[2],e);if(!u)return null;r=i.fromPoints(u,e),n||(r.start.column++,r.end.column--),r.cursor=r.start}return r},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));var a=t.column-o.getCurrentTokenColumn()-2,f=u.value;for(;;){while(a>=0){var l=f.charAt(a);if(l==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else l==e&&(s+=1);a-=1}do u=o.stepBackward();while(u&&!n.test(u.type));if(u==null)break;f=u.value,a=f.length-1}return null},this.$findClosingBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));var a=t.column-o.getCurrentTokenColumn();for(;;){var f=u.value,l=f.length;while(a=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510}r.implement(this,o),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e){this.$docRowCache=[],this.$screenRowCache=[];return}var t=this.$docRowCache.length,n=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>n&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},this.$getRowCacheIndex=function(e,t){var n=0,r=e.length-1;while(n<=r){var i=n+r>>1,s=e[i];if(t>s)n=i+1;else{if(!(t=t)break}return r=n[s],r?(r.index=s,r.start=i-r.value.length,r):null},this.setUndoManager=function(e){this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel();if(e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=i.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?i.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize===0},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(r=!!n.charAt(t-1).match(this.tokenRe)),r||(r=!!n.charAt(t).match(this.tokenRe));if(r)var i=this.tokenRe;else if(/^\s+$/.test(n.slice(t-1,t+1)))var i=/\s/;else var i=this.nonTokenRe;var s=t;if(s>0){do s--;while(s>=0&&n.charAt(s).match(i));s++}var o=t;while(oe&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){this.$modified=!1;if(this.$useWrapMode)return this.screenWidth=this.$wrapLimit;var t=this.doc.getAllLines(),n=this.$rowLengthCache,r=0,i=0,s=this.$foldData[i],o=s?s.start.row:Infinity,u=t.length;for(var a=0;ao){a=s.end.row+1;if(a>=u)break;s=this.$foldData[i++],o=s?s.start.row:Infinity}n[a]==null&&(n[a]=this.$getStringScreenWidth(t[a])[0]),n[a]>r&&(r=n[a])}this.screenWidth=r}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=e.length-1;r!=-1;r--){var i=e[r];i.group=="doc"?(this.doc.revertDeltas(i.deltas),n=this.$getUndoSelection(i.deltas,!0,n)):i.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n},this.redoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=0;re.end.column&&(s.start.column+=u),s.end.row==e.end.row&&s.end.column>e.end.column&&(s.end.column+=u)),o&&s.start.row>=e.end.row&&(s.start.row+=o,s.end.row+=o)}s.end=this.insert(s.start,r);if(i.length){var a=e.start,l=s.start,o=l.row-a.row,u=l.column-a.column;this.addFolds(i.map(function(e){return e=e.clone(),e.start.row==a.row&&(e.start.column+=u),e.end.row==a.row&&(e.end.column+=u),e.start.row+=o,e.end.row+=o,e}))}return s},this.indentRows=function(e,t,n){n=n.replace(/\t/g,this.getTabString());for(var r=e;r<=t;r++)this.doc.insertInLine({row:r,column:0},n)},this.outdentRows=function(e){var t=e.collapseRows(),n=new f(0,0,0,0),r=this.getTabSize();for(var i=t.start.row;i<=t.end.row;++i){var s=this.getLine(i);n.start.row=i,n.end.row=i;for(var o=0;o0){var r=this.getRowFoldEnd(t+n);if(r>this.doc.getLength()-1)return 0;var i=r-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var i=t-e+1}var s=new f(e,0,t,Number.MAX_VALUE),o=this.getFoldsInRange(s).map(function(e){return e=e.clone(),e.start.row+=i,e.end.row+=i,e}),u=n==0?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+i,u),o.length&&this.addFolds(o),i},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){t=Math.max(0,t);if(e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0);if(e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){if(this.$wrapLimitRange.min!==e||this.$wrapLimitRange.max!==t)this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$useWrapMode&&this._signal("changeWrapMode")},this.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var r=this.$constrainWrapLimit(e,n.min,n.max);return r!=this.$wrapLimit&&r>1?(this.$wrapLimit=r,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n=e.action,r=e.start,i=e.end,s=r.row,o=i.row,u=o-s,a=null;this.$updating=!0;if(u!=0)if(n==="remove"){this[t?"$wrapData":"$rowLengthCache"].splice(s,u);var f=this.$foldData;a=this.getFoldsInRange(e),this.removeFolds(a);var l=this.getFoldLine(i.row),c=0;if(l){l.addRemoveChars(i.row,i.column,r.column-i.column),l.shiftRow(-u);var h=this.getFoldLine(s);h&&h!==l&&(h.merge(l),l=h),c=f.indexOf(l)+1}for(c;c=i.row&&l.shiftRow(-u)}o=s}else{var p=Array(u);p.unshift(s,0);var d=t?this.$wrapData:this.$rowLengthCache;d.splice.apply(d,p);var f=this.$foldData,l=this.getFoldLine(s),c=0;if(l){var v=l.range.compareInside(r.row,r.column);v==0?(l=l.split(r.row,r.column),l&&(l.shiftRow(u),l.addRemoveChars(o,0,i.column-r.column))):v==-1&&(l.addRemoveChars(s,0,i.column-r.column),l.shiftRow(u)),c=f.indexOf(l)+1}for(c;c=s&&l.shiftRow(u)}}else{u=Math.abs(e.start.column-e.end.column),n==="remove"&&(a=this.getFoldsInRange(e),this.removeFolds(a),u=-u);var l=this.getFoldLine(s);l&&l.addRemoveChars(s,r.column,u)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(s,o):this.$updateRowLengthCache(s,o),a},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var r=this.doc.getAllLines(),i=this.getTabSize(),s=this.$wrapData,o=this.$wrapLimit,a,f,l=e;t=Math.min(t,r.length-1);while(l<=t)f=this.getFoldLine(l,f),f?(a=[],f.walk(function(e,t,i,s){var o;if(e!=null){o=this.$getDisplayTokens(e,a.length),o[0]=n;for(var f=1;fr-b){var w=a+r-b;if(e[w-1]>=p&&e[w]>=p){y(w);continue}if(e[w]==n||e[w]==u){for(w;w!=a-1;w--)if(e[w]==n)break;if(w>a){y(w);continue}w=a+r;for(w;w>2)),a-1);while(w>E&&e[w]E&&e[w]E&&e[w]==l)w--}else while(w>E&&e[w]E){y(++w);continue}w=a+r,e[w]==t&&w--,y(w-b)}return s},this.$getDisplayTokens=function(n,r){var i=[],s;r=r||0;for(var o=0;o39&&u<48||u>57&&u<64?i.push(l):u>=4352&&m(u)?i.push(e,t):i.push(e)}return i},this.$getStringScreenWidth=function(e,t,n){if(t==0)return[0,0];t==null&&(t=Infinity),n=n||0;var r,i;for(i=0;i=4352&&m(r)?n+=2:n+=1;if(n>t)break}return[n,i]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.getRowLineCount=function(e){return!this.$useWrapMode||!this.$wrapData[e]?1:this.$wrapData[e].length+1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),n=this.$wrapData[t.row];return n.length&&n[0]=0)var o=a[f],r=this.$docRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getLength()-1,p=this.getNextFoldLine(r),d=p?p.start.row:Infinity;while(o<=e){u=this.getRowLength(r);if(o+u>e||r>=h)break;o+=u,r++,r>d&&(r=p.end.row+1,p=this.getNextFoldLine(r,p),d=p?p.start.row:Infinity),c&&(this.$docRowCache.push(r),this.$screenRowCache.push(o))}if(p&&p.start.row<=r)n=this.getFoldDisplayLine(p),r=p.start.row;else{if(o+u<=e||r>h)return{row:h,column:this.getLine(h).length};n=this.getLine(r),p=null}var v=0;if(this.$useWrapMode){var m=this.$wrapData[r];if(m){var g=Math.floor(e-o);s=m[g],g>0&&m.length&&(v=m.indent,i=m[g-1]||m[m.length-1],n=n.substring(i))}}return i+=this.$getStringScreenWidth(n,t-v)[1],this.$useWrapMode&&i>=s&&(i=s-1),p?p.idxToPosition(i):{row:r,column:i}},this.documentToScreenPosition=function(e,t){if(typeof t=="undefined")var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var r=0,i=null,s=null;s=this.getFoldAt(e,t,1),s&&(e=s.start.row,t=s.start.column);var o,u=0,a=this.$docRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var u=a[f],r=this.$screenRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getNextFoldLine(u),p=h?h.start.row:Infinity;while(u=p){o=h.end.row+1;if(o>e)break;h=this.getNextFoldLine(o,h),p=h?h.start.row:Infinity}else o=u+1;r+=this.getRowLength(u),u=o,c&&(this.$docRowCache.push(u),this.$screenRowCache.push(r))}var d="";h&&u>=p?(d=this.getFoldDisplayLine(h,e,t),i=h.start.row):(d=this.getLine(e).substring(0,t),i=e);var v=0;if(this.$useWrapMode){var m=this.$wrapData[i];if(m){var g=0;while(d.length>=m[g])r++,g++;d=d.substring(m[g-1]||0,d.length),v=g>0?m.indent:0}}return{row:r,column:v+this.$getStringScreenWidth(d)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(!this.$useWrapMode){e=this.getLength();var n=this.$foldData;for(var r=0;ro&&(s=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:Infinity)}}return this.lineWidgets&&(e+=this.$getWidgetScreenLength()),e},this.$setFontMetrics=function(e){},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()}}).call(p.prototype),e("./edit_session/folding").Folding.call(p.prototype),e("./edit_session/bracket_match").BracketMatch.call(p.prototype),s.defineOptions(p.prototype,"session",{wrap:{set:function(e){!e||e=="off"?e=!1:e=="free"?e=!0:e=="printMargin"?e=-1:typeof e=="string"&&(e=parseInt(e,10)||!1);if(this.$wrap==e)return;this.$wrap=e;if(!e)this.setUseWrapMode(!1);else{var t=typeof e=="number"?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e=e=="auto"?this.$mode.type!="text":e!="text",e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){if(isNaN(e)||this.$tabSize===e)return;this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize")},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=p}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(){this.$options={}};(function(){this.set=function(e){return i.mixin(this.$options,e),this},this.getOptions=function(){return r.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,n=this.$matchIterator(e,t);if(!n)return!1;var r=null;return n.forEach(function(e,n,i){if(!e.start){var o=e.offset+(i||0);r=new s(n,o,n,o+e.length);if(!e.length&&t.start&&t.start.start&&t.skipCurrent!=0&&r.isEqual(t.start))return r=null,!1}else r=e;return!0}),r},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,i=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),o=[],u=t.re;if(t.$isMultiLine){var a=u.length,f=i.length-a,l;e:for(var c=u.offset||0;c<=f;c++){for(var h=0;hv)continue;o.push(l=new s(c,v,c+a-1,m)),a>2&&(c=c+a-2)}}else for(var g=0;gE&&o[h].end.row==n.end.row)h--;o=o.slice(g,h+1);for(g=0,h=o.length;g=0;u--)if(i(o[u],t,s))return!0};else var u=function(e,t,s){var o=r.getMatchOffsets(e,n);for(var u=0;u=o;r--)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=u,o=s.row;r>=o;r--)if(n(e.getLine(r),r))return}:function(n){var r=s.row,i=e.getLine(r).substr(s.column);if(n(i,r,s.column))return;for(r+=1;r<=u;r++)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=o,u=s.row;r<=u;r++)if(n(e.getLine(r),r))return};return{forEach:a}}}).call(o.prototype),t.Search=o}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function o(e,t){this.platform=t||(i.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function u(e,t){o.call(this,e,t),this.$singleCommand=!1}var r=e("../lib/keys"),i=e("../lib/useragent"),s=r.KEY_MODS;u.prototype=o.prototype,function(){function e(e){return typeof e=="object"&&e.bindKey&&e.bindKey.position||0}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var n=e&&(typeof e=="string"?e:e.name);e=this.commands[n],t||delete this.commands[n];var r=this.commandKeyBinding;for(var i in r){var s=r[i];if(s==e)delete r[i];else if(Array.isArray(s)){var o=s.indexOf(e);o!=-1&&(s.splice(o,1),s.length==1&&(r[i]=s[0]))}}},this.bindKey=function(e,t,n){typeof e=="object"&&(n==undefined&&(n=e.position),e=e[this.platform]);if(!e)return;if(typeof t=="function")return this.addCommand({exec:t,bindKey:e,name:t.name||e});e.split("|").forEach(function(e){var r="";if(e.indexOf(" ")!=-1){var i=e.split(/\s+/);e=i.pop(),i.forEach(function(e){var t=this.parseKeys(e),n=s[t.hashId]+t.key;r+=(r?" ":"")+n,this._addCommandToBinding(r,"chainKeys")},this),r+=" "}var o=this.parseKeys(e),u=s[o.hashId]+o.key;this._addCommandToBinding(r+u,t,n)},this)},this._addCommandToBinding=function(t,n,r){var i=this.commandKeyBinding,s;if(!n)delete i[t];else if(!i[t]||this.$singleCommand)i[t]=n;else{Array.isArray(i[t])?(s=i[t].indexOf(n))!=-1&&i[t].splice(s,1):i[t]=[i[t]],typeof r!="number"&&(r||n.isDefault?r=-100:r=e(n));var o=i[t];for(s=0;sr)break}o.splice(s,0,n)}},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(!n)return;if(typeof n=="string")return this.bindKey(n,t);typeof n=="function"&&(n={exec:n});if(typeof n!="object")return;n.name||(n.name=t),this.addCommand(n)},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),n=t.pop(),i=r[n];if(r.FUNCTION_KEYS[i])n=r.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(t.length==1&&t[0]=="shift")return{key:n.toUpperCase(),hashId:-1}}var s=0;for(var o=t.length;o--;){var u=r.KEY_MODS[t[o]];if(u==null)return typeof console!="undefined"&&console.error("invalid modifier "+t[o]+" in "+e),!1;s|=u}return{key:n,hashId:s}},this.findKeyCommand=function(t,n){var r=s[t]+n;return this.commandKeyBinding[r]},this.handleKeyboard=function(e,t,n,r){var i=s[t]+n,o=this.commandKeyBinding[i];e.$keyChain&&(e.$keyChain+=" "+i,o=this.commandKeyBinding[e.$keyChain]||o);if(o)if(o=="chainKeys"||o[o.length-1]=="chainKeys")return e.$keyChain=e.$keyChain||i,{command:"null"};if(e.$keyChain)if(!!t&&t!=4||n.length!=1){if(t==-1||r>0)e.$keyChain=""}else e.$keyChain=e.$keyChain.slice(0,-i.length-1);return{command:o}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(o.prototype),t.HashHandler=o,t.MultiHashHandler=u}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../keyboard/hash_handler").MultiHashHandler,s=e("../lib/event_emitter").EventEmitter,o=function(e,t){i.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};r.inherits(o,i),function(){r.implement(this,s),this.exec=function(e,t,n){if(Array.isArray(e)){for(var r=e.length;r--;)if(this.exec(e[r],t,n))return!0;return!1}typeof e=="string"&&(e=this.commands[e]);if(!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var i={editor:t,command:e,args:n};return i.returnValue=this._emit("exec",i),this._signal("afterExec",i),i.returnValue===!1?!1:!0},this.toggleRecording=function(e){if(this.$inReplay)return;return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(this.$inReplay||!this.macro)return;if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){typeof t=="string"?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}},this.trimMacro=function(e){return e.map(function(e){return typeof e[0]!="string"&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(o.prototype),t.CommandManager=o}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,n){"use strict";function o(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),i=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:o("Ctrl-,","Command-,"),exec:function(e){i.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:o("Alt-E","Ctrl-E"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:o("Alt-Shift-E","Ctrl-Shift-E"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:o("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:o(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:o("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:o("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:o("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:o("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:o("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:o(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:o("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:o("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:o("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:o("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:o("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:o("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:o("Ctrl-F","Command-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:o("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:o("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:o("Shift-Up","Shift-Up"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:o("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:o("Ctrl-Shift-End","Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:o("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:o("Shift-Down","Shift-Down"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:o("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:o("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:o("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:o("Alt-Shift-Left","Command-Shift-Left"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:o("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:o("Shift-Left","Shift-Left"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:o("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:o("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:o("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:o("Alt-Shift-Right","Command-Shift-Right"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:o("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:o("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:o("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:o(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:o("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:o(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:o("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:o("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:o("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:o("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:o("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:o("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:o("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:o(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(e){},readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",bindKey:o("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:o("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:o("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:o("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:o("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:o("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:o("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:o("Ctrl-H","Command-Option-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:o("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:o("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:o("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:o("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:o("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:o("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:o("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:o("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:o("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:o("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:o("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:o("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:o("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:o("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:o("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:o("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:o("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:o(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:o("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:o("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:o("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:o("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:o(null,null),exec:function(e){var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),i=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(n.row).length,u=e.session.doc.getTextRange(e.selection.getRange()),a=u.replace(/\n\s*/," ").length,f=e.session.doc.getLine(n.row);for(var l=n.row+1;l<=i.row+1;l++){var c=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(l)));c.length!==0&&(c=" "+c),f+=c}i.row+10?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+a)):(o=e.session.doc.getLine(n.row).length>o?o+1:o,e.selection.moveCursorTo(n.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:o(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,r=e.selection.rangeList.ranges,i=[];r.length<1&&(r=[e.selection.getRange()]);for(var o=0;o0&&this.$blockScrolling--;var n=t&&t.scrollIntoView;if(n){switch(n){case"center-animate":n="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var r=this.selection.getRange(),i=this.renderer.layerConfig;(r.start.row>=i.lastRow||r.end.row<=i.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break;default:}n=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(!this.$mergeUndoDeltas)return;var t=this.prevOp,n=this.$mergeableCommands,r=t.command&&e.command.name==t.command.name;if(e.command.name=="insertstring"){var i=e.args;this.mergeNextCommand===undefined&&(this.mergeNextCommand=!0),r=r&&this.mergeNextCommand&&(!/\s/.test(i)||/\s/.test(t.args)),this.mergeNextCommand=!0}else r=r&&n.indexOf(e.command.name)!==-1;this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2e3&&(r=!1),r?this.session.mergeUndoDeltas=!0:n.indexOf(e.command.name)!==-1&&(this.sequenceStartTime=Date.now())},this.setKeyboardHandler=function(e,t){if(e&&typeof e=="string"){this.$keybindingId=e;var n=this;g.loadModule(["keybinding",e],function(r){n.$keybindingId==e&&n.keyBinding.setKeyboardHandler(r&&r.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session==e)return;this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.removeEventListener("change",this.$onDocumentChange),this.session.removeEventListener("changeMode",this.$onChangeMode),this.session.removeEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.session.removeEventListener("changeTabSize",this.$onChangeTabSize),this.session.removeEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.session.removeEventListener("changeWrapMode",this.$onChangeWrapMode),this.session.removeEventListener("onChangeFold",this.$onChangeFold),this.session.removeEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.session.removeEventListener("changeBackMarker",this.$onChangeBackMarker),this.session.removeEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.session.removeEventListener("changeAnnotation",this.$onChangeAnnotation),this.session.removeEventListener("changeOverwrite",this.$onCursorChange),this.session.removeEventListener("changeScrollTop",this.$onScrollTopChange),this.session.removeEventListener("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.removeEventListener("changeCursor",this.$onCursorChange),n.removeEventListener("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.addEventListener("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.addEventListener("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.addEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.addEventListener("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.addEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.addEventListener("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.addEventListener("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.addEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.addEventListener("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.addEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.addEventListener("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.addEventListener("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.addEventListener("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.addEventListener("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.addEventListener("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.addEventListener("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this})},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?t==1?this.navigateFileEnd():t==-1&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||i.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null);if(this.$highlightPending)return;var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=t.findMatchingBracket(e.getCursorPosition());if(n)var r=new p(n.row,n.column,n.row,n.column+1);else if(t.$mode.getMatching)var r=t.$mode.getMatching(e.session);r&&(t.$bracketHighlight=t.addMarker(r,"ace_bracket","text"))},50)},this.$highlightTags=function(){if(this.$highlightTagPending)return;var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=e.getCursorPosition(),r=new y(e.session,n.row,n.column),i=r.getCurrentToken();if(!i||!/\b(?:tag-open|tag-name)/.test(i.type)){t.removeMarker(t.$tagHighlight),t.$tagHighlight=null;return}if(i.type.indexOf("tag-open")!=-1){i=r.stepForward();if(!i)return}var s=i.value,o=0,u=r.stepBackward();if(u.value=="<"){do u=i,i=r.stepForward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="=0)}else{do i=u,u=r.stepBackward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="1)&&(t=!1)}if(e.$highlightLineMarker&&!t)e.removeMarker(e.$highlightLineMarker.id),e.$highlightLineMarker=null;else if(!e.$highlightLineMarker&&t){var n=new p(t.row,t.column,t.row,Infinity);n.id=e.addMarker(n,"ace_active-line","screenLine"),e.$highlightLineMarker=n}else t&&(e.$highlightLineMarker.start.row=t.row,e.$highlightLineMarker.end.row=t.row,e.$highlightLineMarker.start.column=t.column,e._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null;if(!this.selection.isEmpty()){var n=this.selection.getRange(),r=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",r)}else this.$updateHighlightActiveLine();var i=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(i),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(t.isEmpty()||t.isMultiLine())return;var n=t.start.column-1,r=t.end.column+1,i=e.getLine(t.start.row),s=i.length,o=i.substring(Math.max(n,0),Math.min(r,s));if(n>=0&&/^[\w\d]/.test(o)||r<=s&&/[\w\d]$/.test(o))return;o=i.substring(t.start.column,t.end.column);if(!/^[\w\d]+$/.test(o))return;var u=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:o});return u},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e,t){var n={text:e,event:t};this.commands.exec("paste",this,n)},this.$handlePaste=function(e){typeof e=="string"&&(e={text:e}),this._signal("paste",e);var t=e.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(t);else{var n=t.split(/\r\n|\r|\n/),r=this.selection.rangeList.ranges;if(n.length>r.length||n.length<2||!n[1])return this.commands.exec("insertstring",this,t);for(var i=r.length;i--;){var s=r[i];s.isEmpty()||this.session.remove(s),this.session.insert(s.start,n[i])}}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var n=this.session,r=n.getMode(),i=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var s=r.transformAction(n.getState(i.row),"insertion",this,n,e);s&&(e!==s.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=s.text)}e==" "&&(e=this.session.getTabString());if(!this.selection.isEmpty()){var o=this.getSelectionRange();i=this.session.remove(o),this.clearSelection()}else if(this.session.getOverwrite()){var o=new p.fromPoints(i,i);o.end.column+=e.length,this.session.remove(o)}if(e=="\n"||e=="\r\n"){var u=n.getLine(i.row);if(i.column>u.search(/\S|$/)){var a=u.substr(i.column).search(/\S|$/);n.doc.removeInLine(i.row,i.column,i.column+a)}}this.clearSelection();var f=i.column,l=n.getState(i.row),u=n.getLine(i.row),c=r.checkOutdent(l,u,e),h=n.insert(i,e);s&&s.selection&&(s.selection.length==2?this.selection.setSelectionRange(new p(i.row,f+s.selection[0],i.row,f+s.selection[1])):this.selection.setSelectionRange(new p(i.row+s.selection[0],s.selection[1],i.row+s.selection[2],s.selection[3])));if(n.getDocument().isNewLine(e)){var d=r.getNextLineIndent(l,u.slice(0,i.column),n.getTabString());n.insert({row:i.row+1,column:0},d)}c&&r.autoOutdent(l,n,i.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,n){this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&(e=="left"?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,r=n.getState(t.start.row),i=n.getMode().transformAction(r,"deletion",this,n,t);if(t.end.column===0){var s=n.getTextRange(t);if(s[s.length-1]=="\n"){var o=n.getLine(t.end.row);/^\s+$/.test(o)&&(t.end.column=o.length)}}i&&(t=i)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(!this.selection.isEmpty())return;var e=this.getCursorPosition(),t=e.column;if(t===0)return;var n=this.session.getLine(e.row),r,i;tt.toLowerCase()?1:0});var r=new p(0,0,0,0);for(var i=e.first;i<=e.last;i++){var s=t.getLine(i);r.start.row=i,r.end.row=i,r.end.column=s.length,t.replace(r,n[i-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},this.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;var r=this.session.getLine(e);while(n.lastIndex=t){var s={value:i[0],start:i.index,end:i.index+i[0].length};return s}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,r=new p(t,n-1,t,n),i=this.session.getTextRange(r);if(!isNaN(parseFloat(i))&&isFinite(i)){var s=this.getNumberAt(t,n);if(s){var o=s.value.indexOf(".")>=0?s.start+s.value.indexOf(".")+1:s.end,u=s.start+s.value.length-o,a=parseFloat(s.value);a*=Math.pow(10,u),o!==s.end&&np+1)break;p=d.last}l--,u=this.session.$moveLines(h,p,t?0:e),t&&e==-1&&(c=l+1);while(c<=l)o[c].moveBy(u,0),c++;t||(u=0),a+=u}i.fromOrientedRange(i.ranges[0]),i.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,r=this.renderer.layerConfig,i=e*Math.floor(r.height/r.lineHeight);this.$blockScrolling++,t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(i,0)}):t===!1&&(this.selection.moveCursorBy(i,0),this.selection.clearSelection()),this.$blockScrolling--;var s=n.scrollTop;n.scrollBy(0,i*r.lineHeight),t!=null&&n.scrollCursorIntoView(null,.5),n.animateScrolling(s)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,r){this.renderer.scrollToLine(e,t,n,r)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var n=this.getCursorPosition(),r=new y(this.session,n.row,n.column),i=r.getCurrentToken(),s=i||r.stepForward();if(!s)return;var o,u=!1,a={},f=n.column-s.start,l,c={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(s.value.match(/[{}()\[\]]/g))for(;f=0;--s)this.$tryReplace(n[s],e)&&r++;return this.selection.setSelectionRange(i),this.$blockScrolling-=1,r},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return t=this.$search.replace(n,t),t!==null?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),typeof e=="string"||e instanceof RegExp?t.needle=e:typeof e=="object"&&r.mixin(t,e);var i=this.selection.getRange();t.needle==null&&(e=this.session.getTextRange(i)||this.$search.$options.needle,e||(i=this.session.getWordRange(i.start.row,i.start.column),e=this.session.getTextRange(i)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:i});var s=this.$search.find(this.session);if(t.preventScroll)return s;if(s)return this.revealRange(s,n),s;t.backwards?i.start=i.end:i.end=i.start,this.selection.setRange(i)},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(n)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(!e)return;var t,n=this,r=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var i=this.$scrollAnchor;i.style.cssText="position:absolute",this.container.insertBefore(i,this.container.firstChild);var s=this.on("changeSelection",function(){r=!0}),o=this.renderer.on("beforeRender",function(){r&&(t=n.renderer.container.getBoundingClientRect())}),u=this.renderer.on("afterRender",function(){if(r&&t&&(n.isFocused()||n.searchBox&&n.searchBox.isFocused())){var e=n.renderer,s=e.$cursorLayer.$pixelPos,o=e.layerConfig,u=s.top-o.offset;s.top>=0&&u+t.top<0?r=!0:s.topwindow.innerHeight?r=!1:r=null,r!=null&&(i.style.top=u+"px",i.style.left=s.left+"px",i.style.height=o.lineHeight+"px",i.scrollIntoView(r)),r=t=null}});this.setAutoScrollEditorIntoView=function(e){if(e)return;delete this.setAutoScrollEditorIntoView,this.removeEventListener("changeSelection",s),this.renderer.removeEventListener("afterRender",u),this.renderer.removeEventListener("beforeRender",o)}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;if(!t)return;t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&e!="wide",i.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e))}}).call(b.prototype),g.defineOptions(b.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),t.Editor=b}),ace.define("ace/undomanager",["require","exports","module"],function(e,t,n){"use strict";var r=function(){this.reset()};(function(){function e(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines.length==1?null:e.lines,text:e.lines.length==1?e.lines[0]:null}}function t(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines||[e.text]}}function n(e,t){var n=new Array(e.length);for(var r=0;r0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return this.dirtyCounter===0},this.$serializeDeltas=function(t){return n(t,e)},this.$deserializeDeltas=function(e){return n(e,t)}}).call(r.prototype),t.UndoManager=r}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/lang"),o=e("../lib/event_emitter").EventEmitter,u=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){i.implement(this,o),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e&&e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;to&&(v=s.end.row+1,s=t.getNextFoldLine(v,s),o=s?s.start.row:Infinity);if(v>i){while(this.$cells.length>d+1)p=this.$cells.pop(),this.element.removeChild(p.element);break}p=this.$cells[++d],p||(p={element:null,textNode:null,foldWidget:null},p.element=r.createElement("div"),p.textNode=document.createTextNode(""),p.element.appendChild(p.textNode),this.element.appendChild(p.element),this.$cells[d]=p);var m="ace_gutter-cell ";a[v]&&(m+=a[v]),f[v]&&(m+=f[v]),this.$annotations[v]&&(m+=this.$annotations[v].className),p.element.className!=m&&(p.element.className=m);var g=t.getRowLength(v)*e.lineHeight+"px";g!=p.element.style.height&&(p.element.style.height=g);if(u){var y=u[v];y==null&&(y=u[v]=t.getFoldWidget(v))}if(y){p.foldWidget||(p.foldWidget=r.createElement("span"),p.element.appendChild(p.foldWidget));var m="ace_fold-widget ace_"+y;y=="start"&&v==o&&vn.right-t.right)return"foldWidgets"}}).call(u.prototype),t.Gutter=u}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../lib/dom"),s=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,n,r){return(e?1:0)|(t?2:0)|(n?4:0)|(r?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){var e=e||this.config;if(!e)return;this.config=e;var t=[];for(var n in this.markers){var r=this.markers[n];if(!r.range){r.update(t,this,this.session,e);continue}var i=r.range.clipRows(e.firstRow,e.lastRow);if(i.isEmpty())continue;i=i.toScreenRange(this.session);if(r.renderer){var s=this.$getTop(i.start.row,e),o=this.$padding+i.start.column*e.characterWidth;r.renderer(t,i,o,s,e)}else r.type=="fullLine"?this.drawFullLineMarker(t,i,r.clazz,e):r.type=="screenLine"?this.drawScreenLineMarker(t,i,r.clazz,e):i.isMultiLine()?r.type=="text"?this.drawTextMarker(t,i,r.clazz,e):this.drawMultiLineMarker(t,i,r.clazz,e):this.drawSingleLineMarker(t,i,r.clazz+" ace_start"+" ace_br15",e)}this.element.innerHTML=t.join("")},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(t,n,i,s,o){var u=this.session,a=n.start.row,f=n.end.row,l=a,c=0,h=0,p=u.getScreenLastRowColumn(l),d=new r(l,n.start.column,l,h);for(;l<=f;l++)d.start.row=d.end.row=l,d.start.column=l==a?n.start.column:u.getRowWrapIndent(l),d.end.column=p,c=h,h=p,p=l+1p,l==f),s,l==f?0:1,o)},this.drawMultiLineMarker=function(e,t,n,r,i){var s=this.$padding,o=r.lineHeight,u=this.$getTop(t.start.row,r),a=s+t.start.column*r.characterWidth;i=i||"",e.push("
"),u=this.$getTop(t.end.row,r);var f=t.end.column*r.characterWidth;e.push("
"),o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<=0)return;u=this.$getTop(t.start.row+1,r);var l=(t.start.column?1:0)|(t.end.column?0:8);e.push("
")},this.drawSingleLineMarker=function(e,t,n,r,i,s){var o=r.lineHeight,u=(t.end.column+(i||0)-t.start.column)*r.characterWidth,a=this.$getTop(t.start.row,r),f=this.$padding+t.start.column*r.characterWidth;e.push("
")},this.drawFullLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;t.start.row!=t.end.row&&(o+=this.$getTop(t.end.row,r)-s),e.push("
")},this.drawScreenLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;e.push("
")}}).call(s.prototype),t.Marker=s}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){r.implement(this,u),this.EOF_CHAR="\u00b6",this.EOL_CHAR_LF="\u00ac",this.EOL_CHAR_CRLF="\u00a4",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="\u2014",this.SPACE_CHAR="\u00b7",this.$padding=0,this.$updateEolChar=function(){var e=this.session.doc.getNewLineCharacter()=="\n"?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;var t=this.$tabStrings=[0];for(var n=1;n"+s.stringRepeat(this.TAB_CHAR,n)+""):t.push(s.stringRepeat(" ",n));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var r="ace_indent-guide",i="",o="";if(this.showInvisibles){r+=" ace_invisible",i=" ace_invisible_space",o=" ace_invisible_tab";var u=s.stringRepeat(this.SPACE_CHAR,this.tabSize),a=s.stringRepeat(this.TAB_CHAR,this.tabSize)}else var u=s.stringRepeat(" ",this.tabSize),a=u;this.$tabStrings[" "]=""+u+"",this.$tabStrings[" "]=""+a+""}},this.updateLines=function(e,t,n){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;var r=Math.max(t,e.firstRow),i=Math.min(n,e.lastRow),s=this.element.childNodes,o=0;for(var u=e.firstRow;uf&&(u=a.end.row+1,a=this.session.getNextFoldLine(u,a),f=a?a.start.row:Infinity);if(u>i)break;var l=s[o++];if(l){var c=[];this.$renderLine(c,u,!this.$useLineGroups(),u==f?a:!1),l.style.height=e.lineHeight*this.session.getRowLength(u)+"px",l.innerHTML=c.join("")}u++}},this.scrollLines=function(e){var t=this.config;this.config=e;if(!t||t.lastRow0;r--)n.removeChild(n.firstChild);if(t.lastRow>e.lastRow)for(var r=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);r>0;r--)n.removeChild(n.lastChild);if(e.firstRowt.lastRow){var i=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);n.appendChild(i)}},this.$renderLinesFragment=function(e,t,n){var r=this.element.ownerDocument.createDocumentFragment(),s=t,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>n)break;var a=i.createElement("div"),f=[];this.$renderLine(f,s,!1,s==u?o:!1),a.innerHTML=f.join("");if(this.$useLineGroups())a.className="ace_line_group",r.appendChild(a),a.style.height=e.lineHeight*this.session.getRowLength(s)+"px";else while(a.firstChild)r.appendChild(a.firstChild);s++}return r},this.update=function(e){this.config=e;var t=[],n=e.firstRow,r=e.lastRow,i=n,s=this.session.getNextFoldLine(i),o=s?s.start.row:Infinity;for(;;){i>o&&(i=s.end.row+1,s=this.session.getNextFoldLine(i,s),o=s?s.start.row:Infinity);if(i>r)break;this.$useLineGroups()&&t.push("
"),this.$renderLine(t,i,!1,i==o?s:!1),this.$useLineGroups()&&t.push("
"),i++}this.element.innerHTML=t.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,r){var i=this,o=/\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g,u=function(e,n,r,o,u){if(n)return i.showInvisibles?""+s.stringRepeat(i.SPACE_CHAR,e.length)+"":e;if(e=="&")return"&";if(e=="<")return"<";if(e==">")return">";if(e==" "){var a=i.session.getScreenTabSize(t+o);return t+=a-1,i.$tabStrings[a]}if(e=="\u3000"){var f=i.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",l=i.showInvisibles?i.SPACE_CHAR:"";return t+=1,""+l+""}return r?""+i.SPACE_CHAR+"":(t+=1,""+e+"")},a=r.replace(o,u);if(!this.$textToken[n.type]){var f="ace_"+n.type.replace(/\./g," ace_"),l="";n.type=="fold"&&(l=" style='width:"+n.value.length*this.config.characterWidth+"px;' "),e.push("",a,"")}else e.push(a);return t+r.length},this.renderIndentGuide=function(e,t,n){var r=t.search(this.$indentGuideRe);return r<=0||r>=n?t:t[0]==" "?(r-=r%this.tabSize,e.push(s.stringRepeat(this.$tabStrings[" "],r/this.tabSize)),t.substr(r)):t[0]==" "?(e.push(s.stringRepeat(this.$tabStrings[" "],r)),t.substr(r)):t},this.$renderWrappedLine=function(e,t,n,r){var i=0,o=0,u=n[0],a=0;for(var f=0;f=u)a=this.$renderToken(e,a,l,c.substring(0,u-i)),c=c.substring(u-i),i=u,r||e.push("","
"),e.push(s.stringRepeat("\u00a0",n.indent)),o++,a=0,u=n[o]||Number.MAX_VALUE;c.length!=0&&(i+=c.length,a=this.$renderToken(e,a,l,c))}}},this.$renderSimpleLine=function(e,t){var n=0,r=t[0],i=r.value;this.displayIndentGuides&&(i=this.renderIndentGuide(e,i)),i&&(n=this.$renderToken(e,n,r,i));for(var s=1;s");if(i.length){var s=this.session.getRowSplitData(t);s&&s.length?this.$renderWrappedLine(e,i,s,n):this.$renderSimpleLine(e,i)}this.showInvisibles&&(r&&(t=r.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),n||e.push("
")},this.$getFoldLineTokens=function(e,t){function i(e,t,n){var i=0,s=0;while(s+e[i].value.lengthn-t&&(o=o.substring(0,n-t)),r.push({type:e[i].type,value:o}),s=t+o.length,i+=1}while(sn?r.push({type:e[i].type,value:o.substring(0,n-s)}):r.push(e[i]),s+=o.length,i+=1}}var n=this.session,r=[],s=n.getTokens(e);return t.walk(function(e,t,o,u,a){e!=null?r.push({type:"fold",value:e}):(a&&(s=n.getTokens(t)),s.length&&i(s,u,o))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../lib/dom"),i,s=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),i===undefined&&(i=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(i?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e!=this.smoothBlinking&&!i&&(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0);if(!this.isBlinking||!this.blinkInterval||!this.isVisible)return;this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e),r=this.$padding+n.column*this.config.characterWidth,i=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:i}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,n=0,r=0;if(t===undefined||t.length===0)t=[{cursor:null}];for(var n=0,i=t.length;ne.height+e.offset||s.top<0)&&n>1)continue;var o=(this.cursors[r++]||this.addCursor()).style;this.drawCursor?this.drawCursor(o,s,e,t[n],this.session):(o.left=s.left+"px",o.top=s.top+"px",o.width=e.characterWidth+"px",o.height=e.lineHeight+"px")}while(this.cursors.length>r)this.removeCursor();var u=this.session.getOverwrite();this.$setOverwrite(u),this.$pixelPos=s,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(s.prototype),t.Cursor=s}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/event_emitter").EventEmitter,u=function(e){this.element=i.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=i.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,s.addListener(this.element,"scroll",this.onScroll.bind(this)),s.addListener(this.element,"mousedown",s.preventDefault)};(function(){r.implement(this,o),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e}}).call(u.prototype);var a=function(e,t){u.call(this,e),this.scrollTop=0,t.$scrollbarWidth=this.width=i.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};r.inherits(a,u),function(){this.classSuffix="-v",this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=function(e){this.inner.style.height=e+"px"},this.setScrollHeight=function(e){this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=e)}}.call(a.prototype);var f=function(e,t){u.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};r.inherits(f,u),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(f.prototype),t.ScrollBar=a,t.ScrollBarV=a,t.ScrollBarH=f,t.VScrollBar=a,t.HScrollBar=f}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){"use strict";var r=e("./lib/event"),i=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){this.changes=this.changes|e;if(!this.pending&&this.changes){this.pending=!0;var t=this;r.nextFrame(function(){t.pending=!1;var e;while(e=t.changes)t.changes=0,t.onRender(e)},this.window)}}}).call(i.prototype),t.RenderLoop=i}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=0,f=t.FontMetrics=function(e,t){this.el=i.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=i.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=i.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),a||this.$testFractionalRect(),this.$measureNode.innerHTML=s.stringRepeat("X",a),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){r.implement(this,u),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=i.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;t>0&&t<1?a=50:a=100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",o.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(a===50){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}var n={height:e.height,width:e.width/a}}else var n={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/a};return n.width===0||n.height===0?null:n},this.$measureCharWidth=function(e){this.$main.innerHTML=s.stringRepeat(e,a);var t=this.$main.getBoundingClientRect();return t.width/a},this.getCharacterWidth=function(e){var t=this.charSizes[e];return t===undefined&&(this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(f.prototype)}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./config"),o=e("./lib/useragent"),u=e("./layer/gutter").Gutter,a=e("./layer/marker").Marker,f=e("./layer/text").Text,l=e("./layer/cursor").Cursor,c=e("./scrollbar").HScrollBar,h=e("./scrollbar").VScrollBar,p=e("./renderloop").RenderLoop,d=e("./layer/font_metrics").FontMetrics,v=e("./lib/event_emitter").EventEmitter,m='.ace_editor {position: relative;overflow: hidden;font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;direction: ltr;}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;min-width: 100%;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \'\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;text-indent: -1em;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: inherit;color: inherit;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-webkit-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-webkit-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-webkit-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}.ace_br1 {border-top-left-radius : 3px;}.ace_br2 {border-top-right-radius : 3px;}.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}';i.importCssString(m,"ace_editor.css");var g=function(e,t){var n=this;this.container=e||i.createElement("div"),this.$keepTextAreaAtCursor=!o.isOldIE,i.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=i.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=i.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=i.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new u(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new a(this.content);var r=this.$textLayer=new f(this.content);this.canvas=r.element,this.$markerFront=new a(this.content),this.$cursorLayer=new l(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new h(this.container,this),this.scrollBarH=new c(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollTop(e.data-n.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollLeft(e.data-n.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new d(this.container,500),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new p(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),s.resetOptions(this),s._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,r.implement(this,v),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e);if(!e)return;this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode)},this.updateLines=function(e,t,n){t===undefined&&(t=Infinity),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow)return;this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar()},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,n,r){if(this.resizing>2)return;this.resizing>0?this.resizing++:this.resizing=e?1:0;var i=this.container;r||(r=i.clientHeight||i.scrollHeight),n||(n=i.clientWidth||i.scrollWidth);var s=this.$updateCachedSize(e,t,n,r);if(!this.$size.scrollerHeight||!n&&!r)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(s|this.$changes,!0):this.$loop.schedule(s|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null},this.$updateCachedSize=function(e,t,n,r){r-=this.$extraHeight||0;var i=0,s=this.$size,o={width:s.width,height:s.height,scrollerHeight:s.scrollerHeight,scrollerWidth:s.scrollerWidth};r&&(e||s.height!=r)&&(s.height=r,i|=this.CHANGE_SIZE,s.scrollerHeight=s.height,this.$horizScroll&&(s.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",i|=this.CHANGE_SCROLL);if(n&&(e||s.width!=n)){i|=this.CHANGE_SIZE,s.width=n,t==null&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",s.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px";if(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)i|=this.CHANGE_FULL}return s.$dirty=!n||!r,i&&this._signal("resize",o),i},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-this.$padding*2,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var n=this.session.selection.getCursor();n.column=0,e=this.$cursorLayer.getPixelPosition(n,!0),t*=this.session.getRowLength(n.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(!this.$showPrintMargin&&!this.$printMarginEl)return;if(!this.$printMarginEl){var e=i.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=i.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(!this.$keepTextAreaAtCursor)return;var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,n=this.$cursorLayer.$pixelPos.left;t-=e.offset;var r=this.textarea.style,i=this.lineHeight;if(t<0||t>e.height-i){r.top=r.left="0";return}var s=this.characterWidth;if(this.$composition){var o=this.textarea.value.replace(/^\x01+/,"");s*=this.session.$getStringScreenWidth(o)[0]+2,i+=2}n-=this.scrollLeft,n>this.$size.scrollerWidth-s&&(n=this.$size.scrollerWidth-s),n+=this.gutterWidth,r.height=i+"px",r.width=s+"px",r.left=Math.min(n,this.$size.scrollerWidth-s)+"px",r.top=Math.min(t,this.$size.height-i)+"px"},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},this.getLastFullyVisibleRow=function(){var e=Math.floor((this.layerConfig.height+this.layerConfig.offset)/this.layerConfig.lineHeight);return this.layerConfig.firstRow-1+e},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,n,r){var i=this.scrollMargin;i.top=e|0,i.bottom=t|0,i.right=r|0,i.left=n|0,i.v=i.top+i.bottom,i.h=i.left+i.right,i.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-i.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){this.$changes&&(e|=this.$changes,this.$changes=0);if(!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t){this.$changes|=e;return}if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){e|=this.$computeLayerConfig();if(n.firstRow!=this.layerConfig.firstRow&&n.firstRowScreen==this.layerConfig.firstRowScreen){var r=this.scrollTop+(n.firstRow-this.layerConfig.firstRow)*this.lineHeight;r>0&&(this.scrollTop=r,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig())}n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-n.offset+"px",this.content.style.marginTop=-n.offset+"px",this.content.style.width=n.width+2*this.$padding+"px",this.content.style.height=n.minHeight+"px"}e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left");if(e&this.CHANGE_FULL){this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this._signal("afterRender");return}if(e&this.CHANGE_SCROLL){e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),this._signal("afterRender");return}e&this.CHANGE_TEXT?(this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(n),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender")},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.max((this.$minLines||1)*this.lineHeight,Math.min(t,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(n+=this.scrollBarH.getHeight());var r=e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||r!=this.$vScroll){r!=this.$vScroll&&(this.$vScroll=r,this.scrollBarV.setVisible(r));var i=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,i,n),this.desiredHeight=n,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,r=this.session.getScreenLength(),i=r*this.lineHeight,s=this.$getLongestLine(),o=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-s-2*this.$padding<0),u=this.$horizScroll!==o;u&&(this.$horizScroll=o,this.scrollBarH.setVisible(o));var a=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var f=this.scrollTop%this.lineHeight,l=t.scrollerHeight+this.lineHeight,c=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;i+=c;var h=this.scrollMargin;this.session.setScrollTop(Math.max(-h.top,Math.min(this.scrollTop,i-t.scrollerHeight+h.bottom))),this.session.setScrollLeft(Math.max(-h.left,Math.min(this.scrollLeft,s+2*this.$padding-t.scrollerWidth+h.right)));var p=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i+c<0||this.scrollTop>h.top),d=a!==p;d&&(this.$vScroll=p,this.scrollBarV.setVisible(p));var v=Math.ceil(l/this.lineHeight)-1,m=Math.max(0,Math.round((this.scrollTop-f)/this.lineHeight)),g=m+v,y,b,w=this.lineHeight;m=e.screenToDocumentRow(m,0);var E=e.getFoldLine(m);E&&(m=E.start.row),y=e.documentToScreenRow(m,0),b=e.getRowLength(m)*w,g=Math.min(e.screenToDocumentRow(g,0),e.getLength()-1),l=t.scrollerHeight+e.getRowLength(g)*w+b,f=this.scrollTop-y*w;var S=0;this.layerConfig.width!=s&&(S=this.CHANGE_H_SCROLL);if(u||d)S=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),d&&(s=this.$getLongestLine());return this.layerConfig={width:s,padding:this.$padding,firstRow:m,firstRowScreen:y,lastRow:g,lineHeight:w,characterWidth:this.characterWidth,minHeight:l,maxHeight:i,offset:f,gutterOffset:Math.max(0,Math.ceil((f+t.height-t.scrollerHeight)/w)),height:this.$size.scrollerHeight},S},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(e>n.lastRow+1)return;if(ts?(t&&(s-=t*this.$size.scrollerHeight),s===0&&(s=-this.scrollMargin.top),this.session.setScrollTop(s)):a+this.$size.scrollerHeight-ui?(i=1-this.scrollMargin.top)return!0;if(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom)return!0;if(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left)return!0;if(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},this.pixelToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=(e+this.scrollLeft-n.left-this.$padding)/this.characterWidth,i=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),s=Math.round(r);return{row:i,column:s,side:r-s>0?1:-1}},this.screenToTextCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=Math.round((e+this.scrollLeft-n.left-this.$padding)/this.characterWidth),i=(t+this.scrollTop-n.top)/this.lineHeight;return this.session.screenToDocumentPosition(i,Math.max(r,0))},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=this.session.documentToScreenPosition(e,t),i=this.$padding+Math.round(r.column*this.characterWidth),s=r.row*this.lineHeight;return{pageX:n.left+i-this.scrollLeft,pageY:n.top+s-this.scrollTop}},this.visualizeFocus=function(){i.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){i.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,i.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){if(!this.$composition)return;i.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null},this.setTheme=function(e,t){function o(r){if(n.$themeId!=e)return t&&t();if(!r.cssClass)return;i.importCssString(r.cssText,r.cssClass,n.container.ownerDocument),n.theme&&i.removeCssClass(n.container,n.theme.cssClass);var s="padding"in r?r.padding:"padding"in(n.theme||{})?4:n.$padding;n.$padding&&s!=n.$padding&&n.setPadding(s),n.$theme=r.cssClass,n.theme=r,i.addCssClass(n.container,r.cssClass),i.setCssClass(n.container,"ace_dark",r.isDark),n.$size&&(n.$size.width=0,n.$updateSizeAsync()),n._dispatchEvent("themeLoaded",{theme:r}),t&&t()}var n=this;this.$themeId=e,n._dispatchEvent("themeChange",{theme:e});if(!e||typeof e=="string"){var r=e||this.$options.theme.initialValue;s.loadModule(["theme",r],o)}else o(e)},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){i.setCssClass(this.container,e,t!==!1)},this.unsetStyle=function(e){i.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(g.prototype),s.defineOptions(g.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){typeof e=="number"&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){i.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){if(!this.$gutterLineHighlight){this.$gutterLineHighlight=i.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",this.$gutter.appendChild(this.$gutterLineHighlight);return}this.$gutterLineHighlight.style.display=e?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){(!this.$vScrollBarAlwaysVisible||!this.$vScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){typeof e=="number"&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},scrollPastEnd:{set:function(e){e=+e||0;if(this.$scrollPastEnd==e)return;this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=g}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/net"),s=e("../lib/event_emitter").EventEmitter,o=e("../config"),u=function(t,n,r,i){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl);if(o.get("packaged")||!e.toUrl)i=i||o.moduleUrl(n,"worker");else{var s=this.$normalizePath;i=i||s(e.toUrl("ace/worker/worker.js",null,"_"));var u={};t.forEach(function(t){u[t]=s(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}try{this.$worker=new Worker(i)}catch(a){if(!(a instanceof window.DOMException))throw a;var f=this.$workerBlob(i),l=window.URL||window.webkitURL,c=l.createObjectURL(f);this.$worker=new Worker(c),l.revokeObjectURL(c)}this.$worker.postMessage({init:!0,tlns:u,module:n,classname:r}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){r.implement(this,s),this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var n=this.callbacks[t.id];n&&(n(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return i.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,n){if(n){var r=this.callbackId++;this.callbacks[r]=n,t.push(r)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(n){console.error(n.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),e.action=="insert"?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;if(!e)return;this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e})},this.$workerBlob=function(e){var t="importScripts('"+i.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(n){var r=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,s=new r;return s.append(t),s.getBlob("application/javascript")}}}).call(u.prototype);var a=function(e,t,n){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var r=null,i=!1,u=Object.create(s),a=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){a.messageBuffer.push(e),r&&(i?setTimeout(f):f())},this.setEmitSync=function(e){i=e};var f=function(){var e=a.messageBuffer.shift();e.command?r[e.command].apply(r,e.args):e.event&&u._signal(e.event,e.data)};u.postMessage=function(e){a.onMessage({data:e})},u.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},u.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},o.loadModule(["worker",t],function(e){r=new e[n](u);while(a.messageBuffer.length)f()})};a.prototype=u.prototype,t.UIWorkerClient=a,t.WorkerClient=u}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./range").Range,i=e("./lib/event_emitter").EventEmitter,s=e("./lib/oop"),o=function(e,t,n,r,i,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=i,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=r,this.$onCursorChange=function(){setTimeout(function(){o.onCursorChange()})},this.$pos=n;var u=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=u.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){s.implement(this,i),this.setup=function(){var e=this,t=this.doc,n=this.session,i=this.$pos;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=t.createAnchor(i.row,i.column),this.markerId=n.addMarker(new r(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.pos.on("change",function(t){n.removeMarker(e.markerId),e.markerId=n.addMarker(new r(t.value.row,t.value.column,t.value.row,t.value.column+e.length),e.mainClass,null,!1)}),this.others=[],this.$others.forEach(function(n){var r=t.createAnchor(n.row,n.column);e.others.push(r)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(this.othersActive)return;var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new r(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1),n.on("change",function(i){e.removeMarker(n.markerId),n.markerId=e.addMarker(new r(i.value.row,i.value.column,i.value.row,i.value.column+t.length),t.othersClass,null,!1)})})},this.hideOtherMarkers=function(){if(!this.othersActive)return;this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1){var i=t.start.column-this.pos.column;this.length+=n;if(!this.session.$fromUndo){if(e.action==="insert")for(var s=this.others.length-1;s>=0;s--){var o=this.others[s],u={row:o.row,column:o.column+i};o.row===t.start.row&&t.start.column=0;s--){var o=this.others[s],u={row:o.row,column:o.column+i};o.row===t.start.row&&t.start.column=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))},this.detach=function(){this.session.removeMarker(this.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.pos.detach();for(var e=0;e1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var r=this.ranges.indexOf(e[n]);this.ranges.splice(r,1)}this._signal("removeRange",{ranges:e}),this.rangeCount===0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){if(this.rangeList)return;this.rangeList=new r,this.ranges=[],this.rangeCount=0},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var n=this.getRange(),r=this.isBackwards(),s=n.start.row,o=n.end.row;if(s==o){if(r)var u=n.end,a=n.start;else var u=n.start,a=n.end;this.addRange(i.fromPoints(a,a)),this.addRange(i.fromPoints(u,u));return}var f=[],l=this.getLineRange(s,!0);l.start.column=n.start.column,f.push(l);for(var c=s+1;c1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var r=this.session.documentToScreenPosition(this.selectionLead),s=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(r,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var r=[],s=e.column0)d--;if(d>0){var m=0;while(r[m].isEmpty())m++}for(var g=d;g>=m;g--)r[g].isEmpty()&&r.splice(g,1)}return r}}.call(s.prototype);var d=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(!e.marker)return;this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);t!=-1&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length},this.removeSelectionMarkers=function(e){var t=this.session.$selectionMarkers;for(var n=e.length;n--;){var r=e[n];if(!r.marker)continue;this.session.removeMarker(r.marker);var i=t.indexOf(r);i!=-1&&t.splice(i,1)}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){if(this.inMultiSelectMode)return;this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onSingleSelect=function(e){if(this.session.multiSelect.inVirtualMode)return;this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection")},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(!n.multiSelect)return;if(!t.multiSelectAction){var r=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}else t.multiSelectAction=="forEach"?r=n.forEachSelection(t,e.args):t.multiSelectAction=="forEachLine"?r=n.forEachSelection(t,e.args,!0):t.multiSelectAction=="single"?(n.exitMultiSelectMode(),r=t.exec(n,e.args||{})):r=t.multiSelectAction(n,e.args||{});return r},this.forEachSelection=function(e,t,n){if(this.inVirtualSelectionMode)return;var r=n&&n.keepOrder,i=n==1||n&&n.$byLines,o=this.session,u=this.selection,a=u.rangeList,f=(r?u:a).ranges,l;if(!f.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var c=u._eventRegistry;u._eventRegistry={};var h=new s(o);this.inVirtualSelectionMode=!0;for(var p=f.length;p--;){if(i)while(p>0&&f[p].start.row==f[p-1].end.row)p--;h.fromOrientedRange(f[p]),h.index=p,this.selection=o.selection=h;var d=e.exec?e.exec(this,t||{}):e(this,t||{});!l&&d!==undefined&&(l=d),h.toOrientedRange(f[p])}h.detach(),this.selection=o.selection=u,this.inVirtualSelectionMode=!1,u._eventRegistry=c,u.mergeOverlappingRanges();var v=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),v&&v.from==v.to&&this.renderer.animateScrolling(v.from),l},this.exitMultiSelectMode=function(){if(!this.inMultiSelectMode||this.inVirtualSelectionMode)return;this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var t=this.multiSelect.rangeList.ranges,n=[];for(var r=0;r0);u<0&&(u=0),f>=c&&(f=c-1)}var p=this.session.removeFullLines(u,f);p=this.$reAlignText(p,l),this.session.insert({row:u,column:0},p.join("\n")+"\n"),l||(o.start.column=0,o.end.column=p[p.length-1].length),this.selection.setRange(o)}else{s.forEach(function(e){t.substractPoint(e.cursor)});var d=0,v=Infinity,m=n.map(function(t){var n=t.cursor,r=e.getLine(n.row),i=r.substr(n.column).search(/\S/g);return i==-1&&(i=0),n.column>d&&(d=n.column),io?e.insert(r,a.stringRepeat(" ",s-o)):e.remove(new i(r.row,r.column,r.row,r.column-s+o)),t.start.column=t.end.column=d,t.start.row=t.end.row=r.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(e,t){function u(e){return a.stringRepeat(" ",e)}function f(e){return e[2]?u(i)+e[2]+u(s-e[2].length+o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function l(e){return e[2]?u(i+s-e[2].length)+e[2]+u(o," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function c(e){return e[2]?u(i)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var n=!0,r=!0,i,s,o;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?i==null?(i=t[1].length,s=t[2].length,o=t[3].length,t):(i+s+o!=t[1].length+t[2].length+t[3].length&&(r=!1),i!=t[1].length&&(n=!1),i>t[1].length&&(i=t[1].length),st[3].length&&(o=t[3].length),t):[e]}).map(t?f:n?r?l:f:c)}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.off("addRange",this.$onAddRange),n.multiSelect.off("removeRange",this.$onRemoveRange),n.multiSelect.off("multiSelect",this.$onMultiSelect),n.multiSelect.off("singleSelect",this.$onSingleSelect),n.multiSelect.lead.off("change",this.$checkMultiselectChange),n.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=m,e("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(e){m(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",o)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",o))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../../range").Range,i=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?"start":t=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(r)?"end":""},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var i=/\S/,s=e.getLine(t),o=s.search(i);if(o==-1)return;var u=n||s.length,a=e.getLength(),f=t,l=t;while(++tf){var h=e.getLine(l).length;return new r(f,u,l,h)}},this.openingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i+1},u=e.$findClosingBracket(t,o,s);if(!u)return;var a=e.foldWidgets[u.row];return a==null&&(a=e.getFoldWidget(u.row)),a=="start"&&u.row>o.row&&(u.row--,u.column=e.getLine(u.row).length),r.fromPoints(o,u)},this.closingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i},u=e.$findOpeningBracket(t,o);if(!u)return;return u.column++,o.column--,r.fromPoints(u,o)}}).call(i.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeEditor",this.$onChangeEditor)}var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./range").Range;(function(){this.getRowLength=function(e){var t;return this.lineWidgets?t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:t=0,!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach();if(this.editor==e)return;this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets))},this.detach=function(e){var t=this.editor;if(!t)return;this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var n=this.session.lineWidgets;n&&n.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})},this.updateOnChange=function(e){var t=this.session.lineWidgets;if(!t)return;var n=e.start.row,r=e.end.row-n;if(r!==0)if(e.action=="remove"){var i=t.splice(n+1,r);i.forEach(function(e){e&&this.removeLineWidget(e)},this),this.$updateRows()}else{var s=new Array(r);s.unshift(n,0),t.splice.apply(t,s),this.$updateRows()}},this.$updateRows=function(){var e=this.session.lineWidgets;if(!e)return;var t=!0;e.forEach(function(e,n){e&&(t=!1,e.row=n)}),t&&(this.session.lineWidgets=null)},this.addLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength())),this.session.lineWidgets[e.row]=e;var t=this.editor.renderer;return e.html&&!e.el&&(e.el=i.createElement("div"),e.el.innerHTML=e.html),e.el&&(i.addCssClass(e.el,"ace_lineWidgetContainer"),e.el.style.position="absolute",e.el.style.zIndex=5,t.container.appendChild(e.el),e._inDocument=!0),e.coverGutter||(e.el.style.zIndex=3),e.pixelHeight||(e.pixelHeight=e.el.offsetHeight),e.rowCount==null&&(e.rowCount=e.pixelHeight/t.layerConfig.lineHeight),this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,t),e},this.removeLineWidget=function(e){e._inDocument=!1,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el);if(e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(t){}this.session.lineWidgets&&(this.session.lineWidgets[e.row]=undefined),this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows()},this.onWidgetChanged=function(e){this.session._changedWidgets.push(e),this.editor&&this.editor.renderer.updateFull()},this.measureWidgets=function(e,t){var n=this.session._changedWidgets,r=t.layerConfig;if(!n||!n.length)return;var i=Infinity;for(var s=0;s0&&!r[i])i--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var o=i;o<=s;o++){var u=r[o];if(!u||!u.el)continue;u._inDocument||(u._inDocument=!0,t.container.appendChild(u.el));var a=t.$cursorLayer.getPixelPosition({row:o,column:0},!0).top;u.coverLine||(a+=n.lineHeight*this.session.getRowLineCount(u.row)),u.el.style.top=a-n.offset+"px";var f=u.coverGutter?0:t.gutterWidth;u.fixedWidth||(f-=t.scrollLeft),u.el.style.left=f+"px",u.fixedWidth?u.el.style.right=t.scrollBar.getWidth()+"px":u.el.style.right=""}}}).call(o.prototype),t.LineWidgets=o}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e,t,n){var r=0,i=e.length-1;while(r<=i){var s=r+i>>1,o=n(t,e[s]);if(o>0)r=s+1;else{if(!(o<0))return s;i=s-1}}return-(r+1)}function u(e,t,n){var r=e.getAnnotations().sort(s.comparePoints);if(!r.length)return;var i=o(r,{row:t,column:-1},s.comparePoints);i<0&&(i=-i-1),i>=r.length?i=n>0?0:r.length-1:i===0&&n<0&&(i=r.length-1);var u=r[i];if(!u||!n)return;if(u.row===t){do u=r[i+=n];while(u&&u.row===t);if(!u)return r.slice()}var a=[];t=u.row;do a[n<0?"unshift":"push"](u),u=r[i+=n];while(u&&u.row==t);return a.length&&a}var r=e("../line_widgets").LineWidgets,i=e("../lib/dom"),s=e("../range").Range;t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new r(n),n.widgetManager.attach(e));var s=e.getCursorPosition(),o=s.row,a=n.lineWidgets&&n.lineWidgets[o];a?a.destroy():o-=t;var f=u(n,o,t),l;if(f){var c=f[0];s.column=(c.pos&&typeof c.column!="number"?c.pos.sc:c.column)||0,s.row=c.row,l=e.renderer.$gutterLayer.$annotations[s.row]}else{if(a)return;l={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(s.row),e.selection.moveToPosition(s);var h={row:s.row,fixedWidth:!0,coverGutter:!0,el:i.createElement("div")},p=h.el.appendChild(i.createElement("div")),d=h.el.appendChild(i.createElement("div"));d.className="error_widget_arrow "+l.className;var v=e.renderer.$cursorLayer.getPixelPosition(s).left;d.style.left=v+e.renderer.gutterWidth-5+"px",h.el.className="error_widget_wrapper",p.className="error_widget "+l.className,p.innerHTML=l.text.join("
"),p.appendChild(i.createElement("div"));var m=function(e,t,n){if(t===0&&(n==="esc"||n==="return"))return h.destroy(),{command:"null"}};h.destroy=function(){if(e.$mouseHandler.isMousePressed)return;e.keyBinding.removeKeyboardHandler(m),n.widgetManager.removeLineWidget(h),e.off("changeSelection",h.destroy),e.off("changeSession",h.destroy),e.off("mouseup",h.destroy),e.off("change",h.destroy)},e.keyBinding.addKeyboardHandler(m),e.on("changeSelection",h.destroy),e.on("changeSession",h.destroy),e.on("mouseup",h.destroy),e.on("change",h.destroy),e.session.widgetManager.addLineWidget(h),h.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:h.el.offsetHeight})},i.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")}),ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,n){"use strict";e("./lib/fixoldbrowsers");var r=e("./lib/dom"),i=e("./lib/event"),s=e("./editor").Editor,o=e("./edit_session").EditSession,u=e("./undomanager").UndoManager,a=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.require=e,t.edit=function(e){if(typeof e=="string"){var n=e;e=document.getElementById(n);if(!e)throw new Error("ace.edit can't find div #"+n)}if(e&&e.env&&e.env.editor instanceof s)return e.env.editor;var o="";if(e&&/input|textarea/i.test(e.tagName)){var u=e;o=u.value,e=r.createElement("pre"),u.parentNode.replaceChild(e,u)}else e&&(o=r.getInnerText(e),e.innerHTML="");var f=t.createEditSession(o),l=new s(new a(e));l.setSession(f);var c={document:f,editor:l,onResize:l.resize.bind(l,null)};return u&&(c.textarea=u),i.addListener(window,"resize",c.onResize),l.on("destroy",function(){i.removeListener(window,"resize",c.onResize),c.editor.container.env=null}),l.container.env=l.env=c,l},t.createEditSession=function(e,t){var n=new o(e,t);return n.setUndoManager(new u),n},t.EditSession=o,t.UndoManager=u}); - (function() { - ace.require(["ace/ace"], function(a) { - a && a.config.init(true); - if (!window.ace) - window.ace = a; - for (var key in a) if (a.hasOwnProperty(key)) - window.ace[key] = a[key]; - }); - })(); +(function(){function o(n){var i=e;n&&(e[n]||(e[n]={}),i=e[n]);if(!i.define||!i.define.packaged)t.original=i.define,i.define=t,i.define.packaged=!0;if(!i.require||!i.require.packaged)r.original=i.require,i.require=r,i.require.packaged=!0}var ACE_NAMESPACE = "ace",e=function(){return this}();!e&&typeof window!="undefined"&&(e=window);if(!ACE_NAMESPACE&&typeof requirejs!="undefined")return;var t=function(e,n,r){if(typeof e!="string"){t.original?t.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(r=n),t.modules[e]||(t.payloads[e]=r,t.modules[e]=null)};t.modules={},t.payloads={};var n=function(e,t,n){if(typeof t=="string"){var i=s(e,t);if(i!=undefined)return n&&n(),i}else if(Object.prototype.toString.call(t)==="[object Array]"){var o=[];for(var u=0,a=t.length;u1&&u(t,"")>-1&&(a=RegExp(this.source,r.replace.call(o(this),"g","")),r.replace.call(e.slice(t.index),a,function(){for(var e=1;et.index&&this.lastIndex--}return t},s||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t})}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+ta)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n=0?parseFloat((i.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((i.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&window.navigator.product==="Gecko",t.isOldGecko=t.isGecko&&parseInt((i.match(/rv\:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&Object.prototype.toString.call(window.opera)=="[object Opera]",t.isWebKit=parseFloat(i.split("WebKit/")[1])||undefined,t.isChrome=parseFloat(i.split(" Chrome/")[1])||undefined,t.isAIR=i.indexOf("AdobeAIR")>=0,t.isIPad=i.indexOf("iPad")>=0,t.isTouchPad=i.indexOf("TouchPad")>=0,t.isChromeOS=i.indexOf(" CrOS ")>=0}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function o(e,t,n){var o=s(t);if(!i.isMac&&u){if(u[91]||u[92])o|=8;if(u.altGr){if((3&o)==3)return;u.altGr=0}if(n===18||n===17){var f="location"in t?t.location:t.keyLocation;if(n===17&&f===1)u[n]==1&&(a=t.timeStamp);else if(n===18&&o===3&&f===2){var l=t.timeStamp-a;l<50&&(u.altGr=!0)}}}n in r.MODIFIER_KEYS&&(n=-1),o&8&&(n===91||n===93)&&(n=-1);if(!o&&n===13){var f="location"in t?t.location:t.keyLocation;if(f===3){e(t,o,-n);if(t.defaultPrevented)return}}if(i.isChromeOS&&o&8){e(t,o,n);if(t.defaultPrevented)return;o&=-9}return!!o||n in r.FUNCTION_KEYS||n in r.PRINTABLE_KEYS?e(t,o,n):!1}function f(e){u=Object.create(null)}var r=e("./keys"),i=e("./useragent");t.addListener=function(e,t,n){if(e.addEventListener)return e.addEventListener(t,n,!1);if(e.attachEvent){var r=function(){n.call(e,window.event)};n._wrapper=r,e.attachEvent("on"+t,r)}},t.removeListener=function(e,t,n){if(e.removeEventListener)return e.removeEventListener(t,n,!1);e.detachEvent&&e.detachEvent("on"+t,n._wrapper||n)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return e.type=="dblclick"?0:e.type=="contextmenu"||i.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,n,r){function i(e){n&&n(e),r&&r(e),t.removeListener(document,"mousemove",n,!0),t.removeListener(document,"mouseup",i,!0),t.removeListener(document,"dragstart",i,!0)}return t.addListener(document,"mousemove",n,!0),t.addListener(document,"mouseup",i,!0),t.addListener(document,"dragstart",i,!0),i},t.addTouchMoveListener=function(e,n){if("ontouchmove"in e){var r,i;t.addListener(e,"touchstart",function(e){var t=e.changedTouches[0];r=t.clientX,i=t.clientY}),t.addListener(e,"touchmove",function(e){var t=1,s=e.changedTouches[0];e.wheelX=-(s.clientX-r)/t,e.wheelY=-(s.clientY-i)/t,r=s.clientX,i=s.clientY,n(e)})}},t.addMouseWheelListener=function(e,n){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){var t=8;e.wheelDeltaX!==undefined?(e.wheelX=-e.wheelDeltaX/t,e.wheelY=-e.wheelDeltaY/t):(e.wheelX=0,e.wheelY=-e.wheelDelta/t),n(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){var t=.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*t||0,e.wheelY=e.deltaY*t||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=(e.deltaX||0)*5,e.wheelY=(e.deltaY||0)*5}n(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=(e.detail||0)*5,e.wheelY=0):(e.wheelX=0,e.wheelY=(e.detail||0)*5),n(e)})},t.addMultiMouseDownListener=function(e,n,r,s){var o=0,u,a,f,l={2:"dblclick",3:"tripleclick",4:"quadclick"};t.addListener(e,"mousedown",function(e){t.getButton(e)!==0?o=0:e.detail>1?(o++,o>4&&(o=1)):o=1;if(i.isIE){var c=Math.abs(e.clientX-u)>5||Math.abs(e.clientY-a)>5;if(!f||c)o=1;f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),o==1&&(u=e.clientX,a=e.clientY)}e._clicks=o,r[s]("mousedown",e);if(o>4)o=0;else if(o>1)return r[s](l[o],e)}),i.isOldIE&&t.addListener(e,"dblclick",function(e){o=2,f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),r[s]("mousedown",e),r[s](l[o],e)})};var s=!i.isMac||!i.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};t.getModifierString=function(e){return r.KEY_MODS[s(e)]};var u=null,a=0;t.addCommandKeyListener=function(e,n){var r=t.addListener;if(i.isOldGecko||i.isOpera&&!("KeyboardEvent"in window)){var s=null;r(e,"keydown",function(e){s=e.keyCode}),r(e,"keypress",function(e){return o(n,e,s)})}else{var a=null;r(e,"keydown",function(e){u[e.keyCode]=(u[e.keyCode]||0)+1;var t=o(n,e,e.keyCode);return a=e.defaultPrevented,t}),r(e,"keypress",function(e){a&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),a=null)}),r(e,"keyup",function(e){u[e.keyCode]=null}),u||(f(),r(window,"focus",f))}};if(typeof window=="object"&&window.postMessage&&!i.isOldIE){var l=1;t.nextTick=function(e,n){n=n||window;var r="zero-timeout-message-"+l;t.addListener(n,"message",function i(s){s.data==r&&(t.stopPropagation(s),t.removeListener(n,"message",i),e())}),n.postMessage(r,"*")}}t.nextFrame=typeof window=="object"&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n1),e.preventDefault()},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;n.$blockScrolling++,this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(e):t||n.selection.moveToPosition(e),t||this.select(),n.renderer.scroller.setCapture&&n.renderer.scroller.setCapture(),n.setStyle("ace_selecting"),this.setState("select"),n.$blockScrolling--},this.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);t.$blockScrolling++;if(this.$clickSelection){var r=this.$clickSelection.comparePoint(n);if(r==-1)e=this.$clickSelection.end;else if(r==1)e=this.$clickSelection.start;else{var i=f(this.$clickSelection,n);n=i.cursor,e=i.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.$blockScrolling--,t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,n=this.editor,r=n.renderer.screenToTextCoordinates(this.x,this.y),i=n.selection[e](r.row,r.column);n.$blockScrolling++;if(this.$clickSelection){var s=this.$clickSelection.comparePoint(i.start),o=this.$clickSelection.comparePoint(i.end);if(s==-1&&o<=0){t=this.$clickSelection.end;if(i.end.row!=r.row||i.end.column!=r.column)r=i.start}else if(o==1&&s>=0){t=this.$clickSelection.start;if(i.start.row!=r.row||i.start.column!=r.column)r=i.end}else if(s==-1&&o==1)r=i.end,t=i.start;else{var u=f(this.$clickSelection,r);r=u.cursor,t=u.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(r),n.$blockScrolling--,n.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=a(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>o||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,r=n.session,i=r.getBracketRange(t);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=i,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var r=n.getSelectionRange();r.isMultiLine()&&r.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(r.start.row),this.$clickSelection.end=n.selection.getLineRange(r.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(e.getAccelKey())return;e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),r=this.editor,i=r.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);if(i||n<200)return this.$lastScrollTime=t,r.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()},this.onTouchMove=function(e){var t=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),r=this.editor,i=r.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);if(i||n<200)return this.$lastScrollTime=t,r.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()}}).call(u.prototype),t.DefaultHandlers=u}),ace.define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,n){"use strict";function s(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var r=e("./lib/oop"),i=e("./lib/dom");(function(){this.$init=function(){return this.$element=i.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){i.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){i.addCssClass(this.getElement(),e)},this.show=function(e,t,n){e!=null&&this.setText(e),t!=null&&n!=null&&this.setPosition(t,n),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(s.prototype),t.Tooltip=s}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,n){"use strict";function u(e){function l(){var r=u.getDocumentPosition().row,s=n.$annotations[r];if(!s)return c();var o=t.session.getLength();if(r==o){var a=t.renderer.pixelToScreenCoordinates(0,u.y).row,l=u.$pos;if(a>t.session.documentToScreenRow(l.row,l.column))return c()}if(f==s)return;f=s.text.join("
"),i.setHtml(f),i.show(),t.on("mousewheel",c);if(e.$tooltipFollowsMouse)h(u);else{var p=n.$cells[t.session.documentToScreenRow(r,0)].element,d=p.getBoundingClientRect(),v=i.getElement().style;v.left=d.right+"px",v.top=d.bottom+"px"}}function c(){o&&(o=clearTimeout(o)),f&&(i.hide(),f=null,t.removeEventListener("mousewheel",c))}function h(e){i.setPosition(e.x,e.y)}var t=e.editor,n=t.renderer.$gutterLayer,i=new a(t.container);e.editor.setDefaultHandler("guttermousedown",function(r){if(!t.isFocused()||r.getButton()!=0)return;var i=n.getRegion(r);if(i=="foldWidgets")return;var s=r.getDocumentPosition().row,o=t.session.selection;if(r.getShiftKey())o.selectTo(s,0);else{if(r.domEvent.detail==2)return t.selectAll(),r.preventDefault();e.$clickSelection=t.selection.getLineRange(s)}return e.setState("selectByLines"),e.captureMouse(r),r.preventDefault()});var o,u,f;e.editor.setDefaultHandler("guttermousemove",function(t){var n=t.domEvent.target||t.domEvent.srcElement;if(r.hasCssClass(n,"ace_fold-widget"))return c();f&&e.$tooltipFollowsMouse&&h(t),u=t;if(o)return;o=setTimeout(function(){o=null,u&&!e.isMousePressed?l():c()},50)}),s.addListener(t.renderer.$gutter,"mouseout",function(e){u=null;if(!f||o)return;o=setTimeout(function(){o=null,c()},50)}),t.on("changeSession",c)}function a(e){o.call(this,e)}var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/event"),o=e("../tooltip").Tooltip;i.inherits(a,o),function(){this.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,r=window.innerHeight||document.documentElement.clientHeight,i=this.getWidth(),s=this.getHeight();e+=15,t+=15,e+i>n&&(e-=e+i-n),t+s>r&&(t-=20+s),o.prototype.setPosition.call(this,e,t)}}.call(a.prototype),t.GutterHandler=u}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){r.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){r.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(this.$inSelection!==null)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var n=this.getDocumentPosition();this.$inSelection=t.contains(n.row,n.column)}return this.$inSelection},this.getButton=function(){return r.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=i.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(s.prototype)}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function f(e){function T(e,n){var r=Date.now(),i=!n||e.row!=n.row,s=!n||e.column!=n.column;if(!S||i||s)t.$blockScrolling+=1,t.moveCursorToPosition(e),t.$blockScrolling-=1,S=r,x={x:p,y:d};else{var o=l(x.x,x.y,p,d);o>a?S=null:r-S>=u&&(t.renderer.scrollCursorIntoView(),S=null)}}function N(e,n){var r=Date.now(),i=t.renderer.layerConfig.lineHeight,s=t.renderer.layerConfig.characterWidth,u=t.renderer.scroller.getBoundingClientRect(),a={x:{left:p-u.left,right:u.right-p},y:{top:d-u.top,bottom:u.bottom-d}},f=Math.min(a.x.left,a.x.right),l=Math.min(a.y.top,a.y.bottom),c={row:e.row,column:e.column};f/s<=2&&(c.column+=a.x.left=o&&t.renderer.scrollCursorIntoView(c):E=r:E=null}function C(){var e=g;g=t.renderer.screenToTextCoordinates(p,d),T(g,e),N(g,e)}function k(){m=t.selection.toOrientedRange(),h=t.session.addMarker(m,"ace_selection",t.getSelectionStyle()),t.clearSelection(),t.isFocused()&&t.renderer.$cursorLayer.setBlinking(!1),clearInterval(v),C(),v=setInterval(C,20),y=0,i.addListener(document,"mousemove",O)}function L(){clearInterval(v),t.session.removeMarker(h),h=null,t.$blockScrolling+=1,t.selection.fromOrientedRange(m),t.$blockScrolling-=1,t.isFocused()&&!w&&t.renderer.$cursorLayer.setBlinking(!t.getReadOnly()),m=null,g=null,y=0,E=null,S=null,i.removeListener(document,"mousemove",O)}function O(){A==null&&(A=setTimeout(function(){A!=null&&h&&L()},20))}function M(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return e=="text/plain"||e=="Text"})}function _(e){var t=["copy","copymove","all","uninitialized"],n=["move","copymove","linkmove","all","uninitialized"],r=s.isMac?e.altKey:e.ctrlKey,i="uninitialized";try{i=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return r&&t.indexOf(i)>=0?o="copy":n.indexOf(i)>=0?o="move":t.indexOf(i)>=0&&(o="copy"),o}var t=e.editor,n=r.createElement("img");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",s.isOpera&&(n.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var f=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];f.forEach(function(t){e[t]=this[t]},this),t.addEventListener("mousedown",this.onMouseDown.bind(e));var c=t.container,h,p,d,v,m,g,y=0,b,w,E,S,x;this.onDragStart=function(e){if(this.cancelDrag||!c.draggable){var r=this;return setTimeout(function(){r.startSelect(),r.captureMouse(e)},0),e.preventDefault()}m=t.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=t.getReadOnly()?"copy":"copyMove",s.isOpera&&(t.container.appendChild(n),n.scrollTop=0),i.setDragImage&&i.setDragImage(n,0,0),s.isOpera&&t.container.removeChild(n),i.clearData(),i.setData("Text",t.session.getTextRange()),w=!0,this.setState("drag")},this.onDragEnd=function(e){c.draggable=!1,w=!1,this.setState(null);if(!t.getReadOnly()){var n=e.dataTransfer.dropEffect;!b&&n=="move"&&t.session.remove(t.getSelectionRange()),t.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||k(),y++,e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragOver=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||(k(),y++),A!==null&&(A=null),e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragLeave=function(e){y--;if(y<=0&&h)return L(),b=null,i.preventDefault(e)},this.onDrop=function(e){if(!g)return;var n=e.dataTransfer;if(w)switch(b){case"move":m.contains(g.row,g.column)?m={start:g,end:g}:m=t.moveText(m,g);break;case"copy":m=t.moveText(m,g,!0)}else{var r=n.getData("Text");m={start:g,end:t.session.insert(g,r)},t.focus(),b=null}return L(),i.preventDefault(e)},i.addListener(c,"dragstart",this.onDragStart.bind(e)),i.addListener(c,"dragend",this.onDragEnd.bind(e)),i.addListener(c,"dragenter",this.onDragEnter.bind(e)),i.addListener(c,"dragover",this.onDragOver.bind(e)),i.addListener(c,"dragleave",this.onDragLeave.bind(e)),i.addListener(c,"drop",this.onDrop.bind(e));var A=null}function l(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=200,u=200,a=5;(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor,t=e.container;t.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var n=s.isWin?"default":"move";e.renderer.setCursorStyle(n),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(s.isIE&&this.state=="dragReady"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>3&&t.dragDrop()}if(this.state==="dragWait"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(!this.$dragEnabled)return;this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),r=e.getButton(),i=e.domEvent.detail||1;if(i===1&&r===0&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;"unselectable"in o&&(o.unselectable="on");if(t.getDragDelay()){if(s.isWebKit){this.cancelDrag=!0;var u=t.container;u.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}).call(f.prototype),t.DragdropHandler=f}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("./dom");t.get=function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.onreadystatechange=function(){n.readyState===4&&t(n.responseText)},n.send(null)},t.loadScript=function(e,t){var n=r.getDocumentHead(),i=document.createElement("script");i.src=e,n.appendChild(i),i.onload=i.onreadystatechange=function(e,n){if(n||!i.readyState||i.readyState=="loaded"||i.readyState=="complete")i=i.onload=i.onreadystatechange=null,n||t()}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o1&&(i=n[n.length-2]);var o=a[t+"Path"];return o==null?o=a.basePath:r=="/"&&(t=r=""),o&&o.slice(-1)!="/"&&(o+="/"),o+t+r+i+this.get("suffix")},t.setModuleUrl=function(e,t){return a.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(n,r){var i,o;Array.isArray(n)&&(o=n[0],n=n[1]);try{i=e(n)}catch(u){}if(i&&!t.$loading[n])return r&&r(i);t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(r);if(t.$loading[n].length>1)return;var a=function(){e([n],function(e){t._emit("load.module",{name:n,module:e});var r=t.$loading[n];t.$loading[n]=null,r.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return a();s.loadScript(t.moduleUrl(n,o),a)},t.init=f}),ace.define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=e("./default_handlers").DefaultHandlers,o=e("./default_gutter_handler").GutterHandler,u=e("./mouse_event").MouseEvent,a=e("./dragdrop_handler").DragdropHandler,f=e("../config"),l=function(e){var t=this;this.editor=e,new s(this),new o(this),new a(this);var n=function(t){(!document.hasFocus||!document.hasFocus())&&window.focus(),e.focus()},u=e.renderer.getMouseEventTarget();r.addListener(u,"click",this.onMouseEvent.bind(this,"click")),r.addListener(u,"mousemove",this.onMouseMove.bind(this,"mousemove")),r.addMultiMouseDownListener(u,[400,300,250],this,"onMouseEvent"),e.renderer.scrollBarV&&(r.addMultiMouseDownListener(e.renderer.scrollBarV.inner,[400,300,250],this,"onMouseEvent"),r.addMultiMouseDownListener(e.renderer.scrollBarH.inner,[400,300,250],this,"onMouseEvent"),i.isIE&&(r.addListener(e.renderer.scrollBarV.element,"mousedown",n),r.addListener(e.renderer.scrollBarH.element,"mousedown",n))),r.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),r.addTouchMoveListener(e.container,this.onTouchMove.bind(this,"touchmove"));var f=e.renderer.$gutter;r.addListener(f,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),r.addListener(f,"click",this.onMouseEvent.bind(this,"gutterclick")),r.addListener(f,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),r.addListener(f,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),r.addListener(u,"mousedown",n),r.addListener(f,"mousedown",function(t){return e.focus(),r.preventDefault(t)}),e.on("mousemove",function(n){if(t.state||t.$dragDelay||!t.$dragEnabled)return;var r=e.renderer.screenToTextCoordinates(n.x,n.y),i=e.session.selection.getRange(),s=e.renderer;!i.isEmpty()&&i.insideStart(r.row,r.column)?s.setCursorStyle("default"):s.setCursorStyle("")})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new u(t,this.editor))},this.onMouseMove=function(e,t){var n=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;if(!n||!n.length)return;this.editor._emit(e,new u(t,this.editor))},this.onMouseWheel=function(e,t){var n=new u(t,this.editor);n.speed=this.$scrollSpeed*2,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.onTouchMove=function(e,t){var n=new u(t,this.editor);n.speed=1,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var n=this.editor.renderer;n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=null);var s=this,o=function(e){if(!e)return;if(i.isWebKit&&!e.which&&s.releaseMouse)return s.releaseMouse();s.x=e.clientX,s.y=e.clientY,t&&t(e),s.mouseEvent=new u(e,s.editor),s.$mouseMoved=!0},a=function(e){clearInterval(l),f(),s[s.state+"End"]&&s[s.state+"End"](e),s.state="",n.$keepTextAreaAtCursor==null&&(n.$keepTextAreaAtCursor=!0,n.$moveTextAreaToCursor()),s.isMousePressed=!1,s.$onCaptureMouseMove=s.releaseMouse=null,e&&s.onMouseEvent("mouseup",e)},f=function(){s[s.state]&&s[s.state](),s.$mouseMoved=!1};if(i.isOldIE&&e.domEvent.type=="dblclick")return setTimeout(function(){a(e)});s.$onCaptureMouseMove=o,s.releaseMouse=r.capture(this.editor.container,o,a);var l=setInterval(f,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){if(t&&t.domEvent&&t.domEvent.type!="contextmenu")return;this.editor.off("nativecontextmenu",e),t&&t.domEvent&&r.stopEvent(t.domEvent)}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(l.prototype),f.defineOptions(l.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:i.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=l}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,n){"use strict";function r(e){e.on("click",function(t){var n=t.getDocumentPosition(),r=e.session,i=r.getFoldAt(n.row,n.column,1);i&&(t.getAccelKey()?r.removeFold(i):r.expandFold(i),t.stop())}),e.on("gutterclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session;i.foldWidgets&&i.foldWidgets[r]&&e.session.onFoldWidgetClick(r,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session,s=i.getParentFoldRangeData(r,!0),o=s.range||s.firstRange;if(o){r=o.start.row;var u=i.getFoldAt(r,i.getLine(r).length,1);u?i.removeFold(u):(i.addFold("...",o),e.renderer.scrollCursorIntoView({row:o.start.row,column:0}))}t.stop()}})}t.FoldHandler=r}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,n){"use strict";var r=e("../lib/keys"),i=e("../lib/event"),s=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]==e)return;while(t[t.length-1]&&t[t.length-1]!=this.$defaultHandler)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)},this.addKeyboardHandler=function(e,t){if(!e)return;typeof e=="function"&&!e.handleKeyboard&&(e.handleKeyboard=e);var n=this.$handlers.indexOf(e);n!=-1&&this.$handlers.splice(n,1),t==undefined?this.$handlers.push(e):this.$handlers.splice(t,0,e),n==-1&&e.attach&&e.attach(this.$editor)},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return t==-1?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(n){return n.getStatusText&&n.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,n,r){var s,o=!1,u=this.$editor.commands;for(var a=this.$handlers.length;a--;){s=this.$handlers[a].handleKeyboard(this.$data,e,t,n,r);if(!s||!s.command)continue;s.command=="null"?o=!0:o=u.exec(s.command,this.$editor,s.args,r),o&&r&&e!=-1&&s.passEvent!=1&&s.command.passEvent!=1&&i.stopEvent(r);if(o)break}return o},this.onCommandKey=function(e,t,n){var i=r.keyCodeToString(n);this.$callKeyboardHandlers(t,i,n,e)},this.onTextInput=function(e){var t=this.$callKeyboardHandlers(-1,e);t||this.$editor.commands.exec("insertstring",this.$editor,e)}}).call(s.prototype),t.KeyBinding=s}),ace.define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?tthis.end.column?1:0:ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.rowt)var r={row:t+1,column:0};else if(this.start.rowt.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?o.fromPoints(t,t):this.isBackwards()?o.fromPoints(t,e):o.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(typeof t=="undefined"){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n=typeof e=="number"?e:this.lead.row,r,i=this.session.getFoldLine(n);return i?(n=i.start.row,r=i.end.row):r=n,t===!0?new o(n,0,r,this.session.getLine(r).length):new o(n,0,r+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(e.column===0)e.row>0&&this.moveCursorTo(e.row-1,this.doc.getLine(e.row-1).length);else{var n=this.session.getTabSize();this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(e.column-n,e.column).split(" ").length-1==n?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=r)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i;this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var s=this.session.getFoldAt(e,t,1);if(s){this.moveCursorTo(s.end.row,s.end.column);return}if(i=this.session.nonTokenRe.exec(r))t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(t);if(t>=n.length){this.moveCursorTo(e,n.length),this.moveCursorRight(),e0&&this.moveCursorWordLeft();return}if(o=this.session.tokenRe.exec(s))t-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0;this.moveCursorTo(e,t)},this.$shortWordEndIndex=function(e){var t,n=0,r,i=/\s/,s=this.session.tokenRe;s.lastIndex=0;if(t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{while((r=e[n])&&i.test(r))n++;if(n<1){s.lastIndex=0;while((r=e[n])&&!s.test(r)){s.lastIndex=0,n++;if(i.test(r)){if(n>2){n--;break}while((r=e[n])&&i.test(r))n++;if(n>2)break}}}}return s.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i=this.session.getFoldAt(e,t,1);if(i)return this.moveCursorTo(i.end.row,i.end.column);if(t==n.length){var s=this.doc.getLength();do e++,r=this.doc.getLine(e);while(e0&&/^\s*$/.test(r));t=r.length,/\s+$/.test(r)||(r="")}var s=i.stringReverse(r),o=this.$shortWordEndIndex(s);return this.moveCursorTo(e,t-o)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n=this.session.documentToScreenPosition(this.lead.row,this.lead.column);t===0&&(this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var r=this.session.screenToDocumentPosition(n.row+e,n.column);e!==0&&t===0&&r.row===this.lead.row&&r.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[r.row]&&r.row++,this.moveCursorTo(r.row,r.column+t,t===0)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var r=this.session.getFoldAt(e,t,1);r&&(e=r.start.row,t=r.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var r=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(r.row,r.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e.call(null,this);var n=this.getCursor();return o.fromPoints(t,n)}catch(r){return o.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(e.start==undefined){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=o.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(u.prototype),t.Selection=u}),ace.define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,n){"use strict";var r=e("./config"),i=2e3,s=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){var n=this.states[t],r=[],i=0,s=this.matchMappings[t]={defaultToken:"text"},o="g",u=[];for(var a=0;a1?f.onMatch=this.$applyToken:f.onMatch=f.token),c>1&&(/\\\d/.test(f.regex)?l=f.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+i+1)}):(c=1,l=this.removeCapturingGroups(f.regex)),!f.splitRegex&&typeof f.token!="string"&&u.push(f)),s[i]=a,i+=c,r.push(l),f.onMatch||(f.onMatch=null)}r.length||(s[0]=0,r.push("$")),u.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,o)},this),this.regExps[t]=new RegExp("("+r.join(")|(")+")|($)",o)}};(function(){this.$setMaxTokenCount=function(e){i=e|0},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if(typeof n=="string")return[{type:n,value:e}];var r=[];for(var i=0,s=n.length;il){var g=e.substring(l,m-v.length);h.type==p?h.value+=g:(h.type&&f.push(h),h={type:p,value:g})}for(var y=0;yi){c>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});while(l1&&n[0]!==r&&n.unshift("#tmp",r),{tokens:f,state:n.length?n:r}},this.reportError=r.reportError}).call(s.prototype),t.Tokenizer=s}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../lib/lang"),i=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(!t){for(var n in e)this.$rules[n]=e[n];return}for(var n in e){var r=e[n];for(var i=0;i=this.$rowTokens.length){this.$row+=1,e||(e=this.$session.getLength());if(this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(n!==undefined)return n;n=0;while(t>0)t-=1,n+=e[t].value.length;return n},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}}}).call(r.prototype),t.TokenIterator=r}),ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t,n){"use strict";var r=e("../tokenizer").Tokenizer,i=e("./text_highlight_rules").TextHighlightRules,s=e("./behaviour").Behaviour,o=e("../unicode"),u=e("../lib/lang"),a=e("../token_iterator").TokenIterator,f=e("../range").Range,l=function(){this.HighlightRules=i,this.$behaviour=new s};(function(){this.tokenRe=new RegExp("^["+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules,this.$tokenizer=new r(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,n,r){function w(e){for(var t=n;t<=r;t++)e(i.getLine(t),t)}var i=t.doc,s=!0,o=!0,a=Infinity,f=t.getTabSize(),l=!1;if(!this.lineCommentStart){if(!this.blockComment)return!1;var c=this.blockComment.start,h=this.blockComment.end,p=new RegExp("^(\\s*)(?:"+u.escapeRegExp(c)+")"),d=new RegExp("(?:"+u.escapeRegExp(h)+")\\s*$"),v=function(e,t){if(g(e,t))return;if(!s||/\S/.test(e))i.insertInLine({row:t,column:e.length},h),i.insertInLine({row:t,column:a},c)},m=function(e,t){var n;(n=e.match(d))&&i.removeInLine(t,e.length-n[0].length,e.length),(n=e.match(p))&&i.removeInLine(t,n[1].length,n[0].length)},g=function(e,n){if(p.test(e))return!0;var r=t.getTokens(n);for(var i=0;i2?r%f!=f-1:r%f==0}}var E=Infinity;w(function(e,t){var n=e.search(/\S/);n!==-1?(ne.length&&(E=e.length)}),a==Infinity&&(a=E,s=!1,o=!1),l&&a%f!=0&&(a=Math.floor(a/f)*f),w(o?m:v)},this.toggleBlockComment=function(e,t,n,r){var i=this.blockComment;if(!i)return;!i.start&&i[0]&&(i=i[0]);var s=new a(t,r.row,r.column),o=s.getCurrentToken(),u=t.selection,l=t.selection.toOrientedRange(),c,h;if(o&&/comment/.test(o.type)){var p,d;while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.start);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;p=new f(m,g,m,g+i.start.length);break}o=s.stepBackward()}var s=new a(t,r.row,r.column),o=s.getCurrentToken();while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.end);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;d=new f(m,g,m,g+i.end.length);break}o=s.stepForward()}d&&t.remove(d),p&&(t.remove(p),c=p.start.row,h=-i.start.length)}else h=i.start.length,c=n.start.row,t.insert(n.end,i.end),t.insert(n.start,i.start);l.start.row==c&&(l.start.column+=h),l.end.row==c&&(l.end.column+=h),t.selection.fromOrientedRange(l)},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);var n=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(var t=0;t=0&&t.row=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){function e(e,t,n){var r=n?e.column<=t.column:e.columnthis.row)return;var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){r.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new u(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},this.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e0,r=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){!e instanceof o&&(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),i(this.$lines,e,t),this._signal("change",e)},this.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,r=n.length,i=e.start.row,s=e.start.column,o=0,u=0;do{o=u,u+=t-1;var a=n.slice(o,u);if(u>r){e.lines=a,e.start.row=i+o,e.start.column=s;break}a.push(""),this.applyDelta({start:this.pos(i+o,s),end:this.pos(i+u,s=0),action:e.action,lines:a},!0)}while(!0)},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:e.action=="insert"?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i20){n.running=setTimeout(n.$worker,20);break}}n.currentLine=t,s<=r&&n.fireUpdateEvent(s,r)}};(function(){r.implement(this,i),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._signal("update",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,n=e.end.row-t;if(n===0)this.lines[t]=null;else if(e.action=="remove")this.lines.splice(t,n+1,null),this.states.splice(t,n+1,null);else{var r=Array(n+1);r.unshift(t,1),this.lines.splice.apply(this.lines,r),this.states.splice.apply(this.states,r)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],r=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=r.state+""?(this.states[e]=r.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=r.tokens}}).call(s.prototype),t.BackgroundTokenizer=s}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){if(this.regExp+""==e+"")return;this.regExp=e,this.cache=[]},this.update=function(e,t,n,i){if(!this.regExp)return;var o=i.firstRow,u=i.lastRow;for(var a=o;a<=u;a++){var f=this.cache[a];f==null&&(f=r.getMatchOffsets(n.getLine(a),this.regExp),f.length>this.MAX_RANGES&&(f=f.slice(0,this.MAX_RANGES)),f=f.map(function(e){return new s(a,e.offset,a,e.offset+e.length)}),this.cache[a]=f.length?f:"");for(var l=f.length;l--;)t.drawSingleLineMarker(e,f[l].toScreenRange(n),this.clazz,i)}}}).call(o.prototype),t.SearchHighlight=o}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){"use strict";function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var r=0,i=this.folds,s,o,u,a=!0;t==null&&(t=this.end.row,n=this.end.column);for(var f=0;f0)continue;var a=i(e,o.start);return u===0?t&&a!==0?-s-2:s:a>0||a===0&&!t?s:-s-1}return-s-1},this.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var r=this.pointIndex(e.end,t,n);return r<0?r=-r-1:r++,this.ranges.splice(n,r-n,e)},this.addList=function(e){var t=[];for(var n=e.length;n--;)t.push.call(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return i(e.start,t.start)});var n=t[0],r;for(var s=1;s=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.rowr)break;l.start.row==r&&l.start.column>=t.column&&(l.start.column!=t.column||!this.$insertRight)&&(l.start.column+=o,l.start.row+=s);if(l.end.row==r&&l.end.column>=t.column){if(l.end.column==t.column&&this.$insertRight)continue;l.end.column==t.column&&o>0&&al.start.column&&l.end.column==u[a+1].start.column&&(l.end.column-=o),l.end.column+=o,l.end.row+=s}}if(s!=0&&a=e)return i;if(i.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r=e)return i}return null},this.getFoldedRowCount=function(e,t){var n=this.$foldData,r=t-e+1;for(var i=0;i=t){u=e?r-=t-u:r=0);break}o>=e&&(u>=e?r-=o-u:r-=o-e+1)}return r},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n=this.$foldData,r=!1,o;e instanceof s?o=e:(o=new s(t,e),o.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(o.range);var u=o.start.row,a=o.start.column,f=o.end.row,l=o.end.column;if(u0&&(this.removeFolds(p),p.forEach(function(e){o.addSubFold(e)}));for(var d=0;d0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var n,i;e==null?(n=new r(0,0,this.getLength(),0),t=!0):typeof e=="number"?n=new r(e,0,e,this.getLine(e).length):"row"in e?n=r.fromPoints(e,e):n=e,i=this.getFoldsInRangeList(n);if(t)this.removeFolds(i);else{var s=i;while(s.length)this.expandFolds(s),s=this.getFoldsInRangeList(n)}if(i.length)return i},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,r,i){r==null&&(r=e.start.row),i==null&&(i=0),t==null&&(t=e.end.row),n==null&&(n=this.getLine(t).length);var s=this.doc,o="";return e.walk(function(e,t,n,u){if(t=e){i=s.end.row;try{var o=this.addFold("...",s);o&&(o.collapseChildren=n)}catch(u){}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle==e)return;this.$foldStyle=e,e=="manual"&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)},this.$setFolding=function(e){if(this.$foldMode==e)return;this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._emit("changeAnnotation");if(!e||this.$foldStyle=="manual"){this.foldWidgets=null;return}this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)},this.getParentFoldRangeData=function(e,t){var n=this.foldWidgets;if(!n||t&&n[e])return{};var r=e-1,i;while(r>=0){var s=n[r];s==null&&(s=n[r]=this.getFoldWidget(r));if(s=="start"){var o=this.getFoldWidgetRange(r);i||(i=o);if(o&&o.end.row>=e)break}r--}return{range:r!==-1&&o,firstRange:i}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var n={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},r=this.$toggleFoldWidget(e,n);if(!r){var i=t.target||t.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(!this.getFoldWidget)return;var n=this.getFoldWidget(e),r=this.getLine(e),i=n==="end"?-1:1,s=this.getFoldAt(e,i===-1?0:r.length,i);if(s){t.children||t.all?this.removeFold(s):this.expandFold(s);return}var o=this.getFoldWidgetRange(e,!0);if(o&&!o.isMultiLine()){s=this.getFoldAt(o.start.row,o.start.column,1);if(s&&o.isEqual(s.range)){this.removeFold(s);return}}if(t.siblings){var u=this.getParentFoldRangeData(e);if(u.range)var a=u.range.start.row+1,f=u.range.end.row;this.foldAll(a,f,t.all?1e4:0)}else t.children?(f=o?o.end.row:this.getLength(),this.foldAll(e+1,f,t.all?1e4:0)):o&&(t.all&&(o.collapseChildren=1e4),this.addFold("...",o));return o},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(n)return;var r=this.getParentFoldRangeData(t,!0);n=r.range||r.firstRange;if(n){t=n.start.row;var i=this.getFoldAt(t,this.getLine(t).length,1);i?this.removeFold(i):this.addFold("...",n)}},this.updateFoldWidgets=function(e){var t=e.start.row,n=e.end.row-t;if(n===0)this.foldWidgets[t]=null;else if(e.action=="remove")this.foldWidgets.splice(t,n+1,null);else{var r=Array(n+1);r.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,r)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var r=e("../range").Range,i=e("./fold_line").FoldLine,s=e("./fold").Fold,o=e("../token_iterator").TokenIterator;t.Folding=u}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,n){"use strict";function s(){this.findMatchingBracket=function(e,t){if(e.column==0)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(n=="")return null;var r=n.match(/([\(\[\{])|([\)\]\}])/);return r?r[1]?this.$findClosingBracket(r[1],e):this.$findOpeningBracket(r[2],e):null},this.getBracketRange=function(e){var t=this.getLine(e.row),n=!0,r,s=t.charAt(e.column-1),o=s&&s.match(/([\(\[\{])|([\)\]\}])/);o||(s=t.charAt(e.column),e={row:e.row,column:e.column+1},o=s&&s.match(/([\(\[\{])|([\)\]\}])/),n=!1);if(!o)return null;if(o[1]){var u=this.$findClosingBracket(o[1],e);if(!u)return null;r=i.fromPoints(e,u),n||(r.end.column++,r.start.column--),r.cursor=r.end}else{var u=this.$findOpeningBracket(o[2],e);if(!u)return null;r=i.fromPoints(u,e),n||(r.start.column++,r.end.column--),r.cursor=r.start}return r},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));var a=t.column-o.getCurrentTokenColumn()-2,f=u.value;for(;;){while(a>=0){var l=f.charAt(a);if(l==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else l==e&&(s+=1);a-=1}do u=o.stepBackward();while(u&&!n.test(u.type));if(u==null)break;f=u.value,a=f.length-1}return null},this.$findClosingBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));var a=t.column-o.getCurrentTokenColumn();for(;;){var f=u.value,l=f.length;while(a=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510}r.implement(this,o),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e){this.$docRowCache=[],this.$screenRowCache=[];return}var t=this.$docRowCache.length,n=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>n&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},this.$getRowCacheIndex=function(e,t){var n=0,r=e.length-1;while(n<=r){var i=n+r>>1,s=e[i];if(t>s)n=i+1;else{if(!(t=t)break}return r=n[s],r?(r.index=s,r.start=i-r.value.length,r):null},this.setUndoManager=function(e){this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel();if(e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=i.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?i.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize===0},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(r=!!n.charAt(t-1).match(this.tokenRe)),r||(r=!!n.charAt(t).match(this.tokenRe));if(r)var i=this.tokenRe;else if(/^\s+$/.test(n.slice(t-1,t+1)))var i=/\s/;else var i=this.nonTokenRe;var s=t;if(s>0){do s--;while(s>=0&&n.charAt(s).match(i));s++}var o=t;while(oe&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){this.$modified=!1;if(this.$useWrapMode)return this.screenWidth=this.$wrapLimit;var t=this.doc.getAllLines(),n=this.$rowLengthCache,r=0,i=0,s=this.$foldData[i],o=s?s.start.row:Infinity,u=t.length;for(var a=0;ao){a=s.end.row+1;if(a>=u)break;s=this.$foldData[i++],o=s?s.start.row:Infinity}n[a]==null&&(n[a]=this.$getStringScreenWidth(t[a])[0]),n[a]>r&&(r=n[a])}this.screenWidth=r}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=e.length-1;r!=-1;r--){var i=e[r];i.group=="doc"?(this.doc.revertDeltas(i.deltas),n=this.$getUndoSelection(i.deltas,!0,n)):i.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n},this.redoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=0;re.end.column&&(s.start.column+=u),s.end.row==e.end.row&&s.end.column>e.end.column&&(s.end.column+=u)),o&&s.start.row>=e.end.row&&(s.start.row+=o,s.end.row+=o)}s.end=this.insert(s.start,r);if(i.length){var a=e.start,l=s.start,o=l.row-a.row,u=l.column-a.column;this.addFolds(i.map(function(e){return e=e.clone(),e.start.row==a.row&&(e.start.column+=u),e.end.row==a.row&&(e.end.column+=u),e.start.row+=o,e.end.row+=o,e}))}return s},this.indentRows=function(e,t,n){n=n.replace(/\t/g,this.getTabString());for(var r=e;r<=t;r++)this.doc.insertInLine({row:r,column:0},n)},this.outdentRows=function(e){var t=e.collapseRows(),n=new f(0,0,0,0),r=this.getTabSize();for(var i=t.start.row;i<=t.end.row;++i){var s=this.getLine(i);n.start.row=i,n.end.row=i;for(var o=0;o0){var r=this.getRowFoldEnd(t+n);if(r>this.doc.getLength()-1)return 0;var i=r-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var i=t-e+1}var s=new f(e,0,t,Number.MAX_VALUE),o=this.getFoldsInRange(s).map(function(e){return e=e.clone(),e.start.row+=i,e.end.row+=i,e}),u=n==0?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+i,u),o.length&&this.addFolds(o),i},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){t=Math.max(0,t);if(e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0);if(e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){if(this.$wrapLimitRange.min!==e||this.$wrapLimitRange.max!==t)this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$useWrapMode&&this._signal("changeWrapMode")},this.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var r=this.$constrainWrapLimit(e,n.min,n.max);return r!=this.$wrapLimit&&r>1?(this.$wrapLimit=r,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n=e.action,r=e.start,i=e.end,s=r.row,o=i.row,u=o-s,a=null;this.$updating=!0;if(u!=0)if(n==="remove"){this[t?"$wrapData":"$rowLengthCache"].splice(s,u);var f=this.$foldData;a=this.getFoldsInRange(e),this.removeFolds(a);var l=this.getFoldLine(i.row),c=0;if(l){l.addRemoveChars(i.row,i.column,r.column-i.column),l.shiftRow(-u);var h=this.getFoldLine(s);h&&h!==l&&(h.merge(l),l=h),c=f.indexOf(l)+1}for(c;c=i.row&&l.shiftRow(-u)}o=s}else{var p=Array(u);p.unshift(s,0);var d=t?this.$wrapData:this.$rowLengthCache;d.splice.apply(d,p);var f=this.$foldData,l=this.getFoldLine(s),c=0;if(l){var v=l.range.compareInside(r.row,r.column);v==0?(l=l.split(r.row,r.column),l&&(l.shiftRow(u),l.addRemoveChars(o,0,i.column-r.column))):v==-1&&(l.addRemoveChars(s,0,i.column-r.column),l.shiftRow(u)),c=f.indexOf(l)+1}for(c;c=s&&l.shiftRow(u)}}else{u=Math.abs(e.start.column-e.end.column),n==="remove"&&(a=this.getFoldsInRange(e),this.removeFolds(a),u=-u);var l=this.getFoldLine(s);l&&l.addRemoveChars(s,r.column,u)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(s,o):this.$updateRowLengthCache(s,o),a},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var r=this.doc.getAllLines(),i=this.getTabSize(),s=this.$wrapData,o=this.$wrapLimit,a,f,l=e;t=Math.min(t,r.length-1);while(l<=t)f=this.getFoldLine(l,f),f?(a=[],f.walk(function(e,t,i,s){var o;if(e!=null){o=this.$getDisplayTokens(e,a.length),o[0]=n;for(var f=1;fr-b){var w=a+r-b;if(e[w-1]>=p&&e[w]>=p){y(w);continue}if(e[w]==n||e[w]==u){for(w;w!=a-1;w--)if(e[w]==n)break;if(w>a){y(w);continue}w=a+r;for(w;w>2)),a-1);while(w>E&&e[w]E&&e[w]E&&e[w]==l)w--}else while(w>E&&e[w]E){y(++w);continue}w=a+r,e[w]==t&&w--,y(w-b)}return s},this.$getDisplayTokens=function(n,r){var i=[],s;r=r||0;for(var o=0;o39&&u<48||u>57&&u<64?i.push(l):u>=4352&&m(u)?i.push(e,t):i.push(e)}return i},this.$getStringScreenWidth=function(e,t,n){if(t==0)return[0,0];t==null&&(t=Infinity),n=n||0;var r,i;for(i=0;i=4352&&m(r)?n+=2:n+=1;if(n>t)break}return[n,i]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.getRowLineCount=function(e){return!this.$useWrapMode||!this.$wrapData[e]?1:this.$wrapData[e].length+1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),n=this.$wrapData[t.row];return n.length&&n[0]=0)var o=a[f],r=this.$docRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getLength()-1,p=this.getNextFoldLine(r),d=p?p.start.row:Infinity;while(o<=e){u=this.getRowLength(r);if(o+u>e||r>=h)break;o+=u,r++,r>d&&(r=p.end.row+1,p=this.getNextFoldLine(r,p),d=p?p.start.row:Infinity),c&&(this.$docRowCache.push(r),this.$screenRowCache.push(o))}if(p&&p.start.row<=r)n=this.getFoldDisplayLine(p),r=p.start.row;else{if(o+u<=e||r>h)return{row:h,column:this.getLine(h).length};n=this.getLine(r),p=null}var v=0;if(this.$useWrapMode){var m=this.$wrapData[r];if(m){var g=Math.floor(e-o);s=m[g],g>0&&m.length&&(v=m.indent,i=m[g-1]||m[m.length-1],n=n.substring(i))}}return i+=this.$getStringScreenWidth(n,t-v)[1],this.$useWrapMode&&i>=s&&(i=s-1),p?p.idxToPosition(i):{row:r,column:i}},this.documentToScreenPosition=function(e,t){if(typeof t=="undefined")var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var r=0,i=null,s=null;s=this.getFoldAt(e,t,1),s&&(e=s.start.row,t=s.start.column);var o,u=0,a=this.$docRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var u=a[f],r=this.$screenRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getNextFoldLine(u),p=h?h.start.row:Infinity;while(u=p){o=h.end.row+1;if(o>e)break;h=this.getNextFoldLine(o,h),p=h?h.start.row:Infinity}else o=u+1;r+=this.getRowLength(u),u=o,c&&(this.$docRowCache.push(u),this.$screenRowCache.push(r))}var d="";h&&u>=p?(d=this.getFoldDisplayLine(h,e,t),i=h.start.row):(d=this.getLine(e).substring(0,t),i=e);var v=0;if(this.$useWrapMode){var m=this.$wrapData[i];if(m){var g=0;while(d.length>=m[g])r++,g++;d=d.substring(m[g-1]||0,d.length),v=g>0?m.indent:0}}return{row:r,column:v+this.$getStringScreenWidth(d)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(!this.$useWrapMode){e=this.getLength();var n=this.$foldData;for(var r=0;ro&&(s=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:Infinity)}}return this.lineWidgets&&(e+=this.$getWidgetScreenLength()),e},this.$setFontMetrics=function(e){},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()}}).call(p.prototype),e("./edit_session/folding").Folding.call(p.prototype),e("./edit_session/bracket_match").BracketMatch.call(p.prototype),s.defineOptions(p.prototype,"session",{wrap:{set:function(e){!e||e=="off"?e=!1:e=="free"?e=!0:e=="printMargin"?e=-1:typeof e=="string"&&(e=parseInt(e,10)||!1);if(this.$wrap==e)return;this.$wrap=e;if(!e)this.setUseWrapMode(!1);else{var t=typeof e=="number"?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e=e=="auto"?this.$mode.type!="text":e!="text",e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){if(isNaN(e)||this.$tabSize===e)return;this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize")},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=p}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(){this.$options={}};(function(){this.set=function(e){return i.mixin(this.$options,e),this},this.getOptions=function(){return r.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,n=this.$matchIterator(e,t);if(!n)return!1;var r=null;return n.forEach(function(e,n,i){if(!e.start){var o=e.offset+(i||0);r=new s(n,o,n,o+e.length);if(!e.length&&t.start&&t.start.start&&t.skipCurrent!=0&&r.isEqual(t.start))return r=null,!1}else r=e;return!0}),r},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,i=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),o=[],u=t.re;if(t.$isMultiLine){var a=u.length,f=i.length-a,l;e:for(var c=u.offset||0;c<=f;c++){for(var h=0;hv)continue;o.push(l=new s(c,v,c+a-1,m)),a>2&&(c=c+a-2)}}else for(var g=0;gE&&o[h].end.row==n.end.row)h--;o=o.slice(g,h+1);for(g=0,h=o.length;g=0;u--)if(i(o[u],t,s))return!0};else var u=function(e,t,s){var o=r.getMatchOffsets(e,n);for(var u=0;u=o;r--)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=u,o=s.row;r>=o;r--)if(n(e.getLine(r),r))return}:function(n){var r=s.row,i=e.getLine(r).substr(s.column);if(n(i,r,s.column))return;for(r+=1;r<=u;r++)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=o,u=s.row;r<=u;r++)if(n(e.getLine(r),r))return};return{forEach:a}}}).call(o.prototype),t.Search=o}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function o(e,t){this.platform=t||(i.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function u(e,t){o.call(this,e,t),this.$singleCommand=!1}var r=e("../lib/keys"),i=e("../lib/useragent"),s=r.KEY_MODS;u.prototype=o.prototype,function(){function e(e){return typeof e=="object"&&e.bindKey&&e.bindKey.position||0}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var n=e&&(typeof e=="string"?e:e.name);e=this.commands[n],t||delete this.commands[n];var r=this.commandKeyBinding;for(var i in r){var s=r[i];if(s==e)delete r[i];else if(Array.isArray(s)){var o=s.indexOf(e);o!=-1&&(s.splice(o,1),s.length==1&&(r[i]=s[0]))}}},this.bindKey=function(e,t,n){typeof e=="object"&&(n==undefined&&(n=e.position),e=e[this.platform]);if(!e)return;if(typeof t=="function")return this.addCommand({exec:t,bindKey:e,name:t.name||e});e.split("|").forEach(function(e){var r="";if(e.indexOf(" ")!=-1){var i=e.split(/\s+/);e=i.pop(),i.forEach(function(e){var t=this.parseKeys(e),n=s[t.hashId]+t.key;r+=(r?" ":"")+n,this._addCommandToBinding(r,"chainKeys")},this),r+=" "}var o=this.parseKeys(e),u=s[o.hashId]+o.key;this._addCommandToBinding(r+u,t,n)},this)},this._addCommandToBinding=function(t,n,r){var i=this.commandKeyBinding,s;if(!n)delete i[t];else if(!i[t]||this.$singleCommand)i[t]=n;else{Array.isArray(i[t])?(s=i[t].indexOf(n))!=-1&&i[t].splice(s,1):i[t]=[i[t]],typeof r!="number"&&(r||n.isDefault?r=-100:r=e(n));var o=i[t];for(s=0;sr)break}o.splice(s,0,n)}},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(!n)return;if(typeof n=="string")return this.bindKey(n,t);typeof n=="function"&&(n={exec:n});if(typeof n!="object")return;n.name||(n.name=t),this.addCommand(n)},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),n=t.pop(),i=r[n];if(r.FUNCTION_KEYS[i])n=r.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(t.length==1&&t[0]=="shift")return{key:n.toUpperCase(),hashId:-1}}var s=0;for(var o=t.length;o--;){var u=r.KEY_MODS[t[o]];if(u==null)return typeof console!="undefined"&&console.error("invalid modifier "+t[o]+" in "+e),!1;s|=u}return{key:n,hashId:s}},this.findKeyCommand=function(t,n){var r=s[t]+n;return this.commandKeyBinding[r]},this.handleKeyboard=function(e,t,n,r){var i=s[t]+n,o=this.commandKeyBinding[i];e.$keyChain&&(e.$keyChain+=" "+i,o=this.commandKeyBinding[e.$keyChain]||o);if(o)if(o=="chainKeys"||o[o.length-1]=="chainKeys")return e.$keyChain=e.$keyChain||i,{command:"null"};if(e.$keyChain)if(!!t&&t!=4||n.length!=1){if(t==-1||r>0)e.$keyChain=""}else e.$keyChain=e.$keyChain.slice(0,-i.length-1);return{command:o}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(o.prototype),t.HashHandler=o,t.MultiHashHandler=u}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../keyboard/hash_handler").MultiHashHandler,s=e("../lib/event_emitter").EventEmitter,o=function(e,t){i.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};r.inherits(o,i),function(){r.implement(this,s),this.exec=function(e,t,n){if(Array.isArray(e)){for(var r=e.length;r--;)if(this.exec(e[r],t,n))return!0;return!1}typeof e=="string"&&(e=this.commands[e]);if(!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var i={editor:t,command:e,args:n};return i.returnValue=this._emit("exec",i),this._signal("afterExec",i),i.returnValue===!1?!1:!0},this.toggleRecording=function(e){if(this.$inReplay)return;return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(this.$inReplay||!this.macro)return;if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){typeof t=="string"?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}},this.trimMacro=function(e){return e.map(function(e){return typeof e[0]!="string"&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(o.prototype),t.CommandManager=o}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,n){"use strict";function o(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),i=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:o("Ctrl-,","Command-,"),exec:function(e){i.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:o("Alt-E","Ctrl-E"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:o("Alt-Shift-E","Ctrl-Shift-E"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:o("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:o(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:o("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:o("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:o("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:o("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:o("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:o(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:o("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:o("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:o("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:o("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:o("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:o("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:o("Ctrl-F","Command-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:o("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:o("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:o("Shift-Up","Shift-Up"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:o("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:o("Ctrl-Shift-End","Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:o("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:o("Shift-Down","Shift-Down"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:o("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:o("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:o("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:o("Alt-Shift-Left","Command-Shift-Left"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:o("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:o("Shift-Left","Shift-Left"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:o("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:o("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:o("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:o("Alt-Shift-Right","Command-Shift-Right"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:o("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:o("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:o("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:o(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:o("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:o(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:o("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:o("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:o("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:o("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:o("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:o("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:o("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:o(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(e){},readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",bindKey:o("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:o("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:o("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:o("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:o("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:o("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:o("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:o("Ctrl-H","Command-Option-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:o("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:o("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:o("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:o("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:o("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:o("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:o("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:o("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:o("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:o("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:o("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:o("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:o("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:o("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:o("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:o("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:o("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:o(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:o("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:o("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:o("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:o("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:o(null,null),exec:function(e){var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),i=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(n.row).length,u=e.session.doc.getTextRange(e.selection.getRange()),a=u.replace(/\n\s*/," ").length,f=e.session.doc.getLine(n.row);for(var l=n.row+1;l<=i.row+1;l++){var c=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(l)));c.length!==0&&(c=" "+c),f+=c}i.row+10?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+a)):(o=e.session.doc.getLine(n.row).length>o?o+1:o,e.selection.moveCursorTo(n.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:o(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,r=e.selection.rangeList.ranges,i=[];r.length<1&&(r=[e.selection.getRange()]);for(var o=0;o0&&this.$blockScrolling--;var n=t&&t.scrollIntoView;if(n){switch(n){case"center-animate":n="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var r=this.selection.getRange(),i=this.renderer.layerConfig;(r.start.row>=i.lastRow||r.end.row<=i.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break;default:}n=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(!this.$mergeUndoDeltas)return;var t=this.prevOp,n=this.$mergeableCommands,r=t.command&&e.command.name==t.command.name;if(e.command.name=="insertstring"){var i=e.args;this.mergeNextCommand===undefined&&(this.mergeNextCommand=!0),r=r&&this.mergeNextCommand&&(!/\s/.test(i)||/\s/.test(t.args)),this.mergeNextCommand=!0}else r=r&&n.indexOf(e.command.name)!==-1;this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2e3&&(r=!1),r?this.session.mergeUndoDeltas=!0:n.indexOf(e.command.name)!==-1&&(this.sequenceStartTime=Date.now())},this.setKeyboardHandler=function(e,t){if(e&&typeof e=="string"){this.$keybindingId=e;var n=this;g.loadModule(["keybinding",e],function(r){n.$keybindingId==e&&n.keyBinding.setKeyboardHandler(r&&r.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session==e)return;this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.removeEventListener("change",this.$onDocumentChange),this.session.removeEventListener("changeMode",this.$onChangeMode),this.session.removeEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.session.removeEventListener("changeTabSize",this.$onChangeTabSize),this.session.removeEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.session.removeEventListener("changeWrapMode",this.$onChangeWrapMode),this.session.removeEventListener("onChangeFold",this.$onChangeFold),this.session.removeEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.session.removeEventListener("changeBackMarker",this.$onChangeBackMarker),this.session.removeEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.session.removeEventListener("changeAnnotation",this.$onChangeAnnotation),this.session.removeEventListener("changeOverwrite",this.$onCursorChange),this.session.removeEventListener("changeScrollTop",this.$onScrollTopChange),this.session.removeEventListener("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.removeEventListener("changeCursor",this.$onCursorChange),n.removeEventListener("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.addEventListener("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.addEventListener("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.addEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.addEventListener("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.addEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.addEventListener("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.addEventListener("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.addEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.addEventListener("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.addEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.addEventListener("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.addEventListener("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.addEventListener("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.addEventListener("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.addEventListener("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.addEventListener("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this})},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?t==1?this.navigateFileEnd():t==-1&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||i.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null);if(this.$highlightPending)return;var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=t.findMatchingBracket(e.getCursorPosition());if(n)var r=new p(n.row,n.column,n.row,n.column+1);else if(t.$mode.getMatching)var r=t.$mode.getMatching(e.session);r&&(t.$bracketHighlight=t.addMarker(r,"ace_bracket","text"))},50)},this.$highlightTags=function(){if(this.$highlightTagPending)return;var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=e.getCursorPosition(),r=new y(e.session,n.row,n.column),i=r.getCurrentToken();if(!i||!/\b(?:tag-open|tag-name)/.test(i.type)){t.removeMarker(t.$tagHighlight),t.$tagHighlight=null;return}if(i.type.indexOf("tag-open")!=-1){i=r.stepForward();if(!i)return}var s=i.value,o=0,u=r.stepBackward();if(u.value=="<"){do u=i,i=r.stepForward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="=0)}else{do i=u,u=r.stepBackward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="1)&&(t=!1)}if(e.$highlightLineMarker&&!t)e.removeMarker(e.$highlightLineMarker.id),e.$highlightLineMarker=null;else if(!e.$highlightLineMarker&&t){var n=new p(t.row,t.column,t.row,Infinity);n.id=e.addMarker(n,"ace_active-line","screenLine"),e.$highlightLineMarker=n}else t&&(e.$highlightLineMarker.start.row=t.row,e.$highlightLineMarker.end.row=t.row,e.$highlightLineMarker.start.column=t.column,e._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null;if(!this.selection.isEmpty()){var n=this.selection.getRange(),r=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",r)}else this.$updateHighlightActiveLine();var i=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(i),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(t.isEmpty()||t.isMultiLine())return;var n=t.start.column-1,r=t.end.column+1,i=e.getLine(t.start.row),s=i.length,o=i.substring(Math.max(n,0),Math.min(r,s));if(n>=0&&/^[\w\d]/.test(o)||r<=s&&/[\w\d]$/.test(o))return;o=i.substring(t.start.column,t.end.column);if(!/^[\w\d]+$/.test(o))return;var u=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:o});return u},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e,t){var n={text:e,event:t};this.commands.exec("paste",this,n)},this.$handlePaste=function(e){typeof e=="string"&&(e={text:e}),this._signal("paste",e);var t=e.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(t);else{var n=t.split(/\r\n|\r|\n/),r=this.selection.rangeList.ranges;if(n.length>r.length||n.length<2||!n[1])return this.commands.exec("insertstring",this,t);for(var i=r.length;i--;){var s=r[i];s.isEmpty()||this.session.remove(s),this.session.insert(s.start,n[i])}}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var n=this.session,r=n.getMode(),i=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var s=r.transformAction(n.getState(i.row),"insertion",this,n,e);s&&(e!==s.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=s.text)}e==" "&&(e=this.session.getTabString());if(!this.selection.isEmpty()){var o=this.getSelectionRange();i=this.session.remove(o),this.clearSelection()}else if(this.session.getOverwrite()){var o=new p.fromPoints(i,i);o.end.column+=e.length,this.session.remove(o)}if(e=="\n"||e=="\r\n"){var u=n.getLine(i.row);if(i.column>u.search(/\S|$/)){var a=u.substr(i.column).search(/\S|$/);n.doc.removeInLine(i.row,i.column,i.column+a)}}this.clearSelection();var f=i.column,l=n.getState(i.row),u=n.getLine(i.row),c=r.checkOutdent(l,u,e),h=n.insert(i,e);s&&s.selection&&(s.selection.length==2?this.selection.setSelectionRange(new p(i.row,f+s.selection[0],i.row,f+s.selection[1])):this.selection.setSelectionRange(new p(i.row+s.selection[0],s.selection[1],i.row+s.selection[2],s.selection[3])));if(n.getDocument().isNewLine(e)){var d=r.getNextLineIndent(l,u.slice(0,i.column),n.getTabString());n.insert({row:i.row+1,column:0},d)}c&&r.autoOutdent(l,n,i.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,n){this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&(e=="left"?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,r=n.getState(t.start.row),i=n.getMode().transformAction(r,"deletion",this,n,t);if(t.end.column===0){var s=n.getTextRange(t);if(s[s.length-1]=="\n"){var o=n.getLine(t.end.row);/^\s+$/.test(o)&&(t.end.column=o.length)}}i&&(t=i)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(!this.selection.isEmpty())return;var e=this.getCursorPosition(),t=e.column;if(t===0)return;var n=this.session.getLine(e.row),r,i;tt.toLowerCase()?1:0});var r=new p(0,0,0,0);for(var i=e.first;i<=e.last;i++){var s=t.getLine(i);r.start.row=i,r.end.row=i,r.end.column=s.length,t.replace(r,n[i-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},this.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;var r=this.session.getLine(e);while(n.lastIndex=t){var s={value:i[0],start:i.index,end:i.index+i[0].length};return s}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,r=new p(t,n-1,t,n),i=this.session.getTextRange(r);if(!isNaN(parseFloat(i))&&isFinite(i)){var s=this.getNumberAt(t,n);if(s){var o=s.value.indexOf(".")>=0?s.start+s.value.indexOf(".")+1:s.end,u=s.start+s.value.length-o,a=parseFloat(s.value);a*=Math.pow(10,u),o!==s.end&&np+1)break;p=d.last}l--,u=this.session.$moveLines(h,p,t?0:e),t&&e==-1&&(c=l+1);while(c<=l)o[c].moveBy(u,0),c++;t||(u=0),a+=u}i.fromOrientedRange(i.ranges[0]),i.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,r=this.renderer.layerConfig,i=e*Math.floor(r.height/r.lineHeight);this.$blockScrolling++,t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(i,0)}):t===!1&&(this.selection.moveCursorBy(i,0),this.selection.clearSelection()),this.$blockScrolling--;var s=n.scrollTop;n.scrollBy(0,i*r.lineHeight),t!=null&&n.scrollCursorIntoView(null,.5),n.animateScrolling(s)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,r){this.renderer.scrollToLine(e,t,n,r)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var n=this.getCursorPosition(),r=new y(this.session,n.row,n.column),i=r.getCurrentToken(),s=i||r.stepForward();if(!s)return;var o,u=!1,a={},f=n.column-s.start,l,c={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(s.value.match(/[{}()\[\]]/g))for(;f=0;--s)this.$tryReplace(n[s],e)&&r++;return this.selection.setSelectionRange(i),this.$blockScrolling-=1,r},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return t=this.$search.replace(n,t),t!==null?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),typeof e=="string"||e instanceof RegExp?t.needle=e:typeof e=="object"&&r.mixin(t,e);var i=this.selection.getRange();t.needle==null&&(e=this.session.getTextRange(i)||this.$search.$options.needle,e||(i=this.session.getWordRange(i.start.row,i.start.column),e=this.session.getTextRange(i)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:i});var s=this.$search.find(this.session);if(t.preventScroll)return s;if(s)return this.revealRange(s,n),s;t.backwards?i.start=i.end:i.end=i.start,this.selection.setRange(i)},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(n)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(!e)return;var t,n=this,r=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var i=this.$scrollAnchor;i.style.cssText="position:absolute",this.container.insertBefore(i,this.container.firstChild);var s=this.on("changeSelection",function(){r=!0}),o=this.renderer.on("beforeRender",function(){r&&(t=n.renderer.container.getBoundingClientRect())}),u=this.renderer.on("afterRender",function(){if(r&&t&&(n.isFocused()||n.searchBox&&n.searchBox.isFocused())){var e=n.renderer,s=e.$cursorLayer.$pixelPos,o=e.layerConfig,u=s.top-o.offset;s.top>=0&&u+t.top<0?r=!0:s.topwindow.innerHeight?r=!1:r=null,r!=null&&(i.style.top=u+"px",i.style.left=s.left+"px",i.style.height=o.lineHeight+"px",i.scrollIntoView(r)),r=t=null}});this.setAutoScrollEditorIntoView=function(e){if(e)return;delete this.setAutoScrollEditorIntoView,this.removeEventListener("changeSelection",s),this.renderer.removeEventListener("afterRender",u),this.renderer.removeEventListener("beforeRender",o)}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;if(!t)return;t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&e!="wide",i.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e))}}).call(b.prototype),g.defineOptions(b.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),t.Editor=b}),ace.define("ace/undomanager",["require","exports","module"],function(e,t,n){"use strict";var r=function(){this.reset()};(function(){function e(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines.length==1?null:e.lines,text:e.lines.length==1?e.lines[0]:null}}function t(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines||[e.text]}}function n(e,t){var n=new Array(e.length);for(var r=0;r0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return this.dirtyCounter===0},this.$serializeDeltas=function(t){return n(t,e)},this.$deserializeDeltas=function(e){return n(e,t)}}).call(r.prototype),t.UndoManager=r}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/lang"),o=e("../lib/event_emitter").EventEmitter,u=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){i.implement(this,o),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e&&e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;to&&(v=s.end.row+1,s=t.getNextFoldLine(v,s),o=s?s.start.row:Infinity);if(v>i){while(this.$cells.length>d+1)p=this.$cells.pop(),this.element.removeChild(p.element);break}p=this.$cells[++d],p||(p={element:null,textNode:null,foldWidget:null},p.element=r.createElement("div"),p.textNode=document.createTextNode(""),p.element.appendChild(p.textNode),this.element.appendChild(p.element),this.$cells[d]=p);var m="ace_gutter-cell ";a[v]&&(m+=a[v]),f[v]&&(m+=f[v]),this.$annotations[v]&&(m+=this.$annotations[v].className),p.element.className!=m&&(p.element.className=m);var g=t.getRowLength(v)*e.lineHeight+"px";g!=p.element.style.height&&(p.element.style.height=g);if(u){var y=u[v];y==null&&(y=u[v]=t.getFoldWidget(v))}if(y){p.foldWidget||(p.foldWidget=r.createElement("span"),p.element.appendChild(p.foldWidget));var m="ace_fold-widget ace_"+y;y=="start"&&v==o&&vn.right-t.right)return"foldWidgets"}}).call(u.prototype),t.Gutter=u}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../lib/dom"),s=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,n,r){return(e?1:0)|(t?2:0)|(n?4:0)|(r?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){var e=e||this.config;if(!e)return;this.config=e;var t=[];for(var n in this.markers){var r=this.markers[n];if(!r.range){r.update(t,this,this.session,e);continue}var i=r.range.clipRows(e.firstRow,e.lastRow);if(i.isEmpty())continue;i=i.toScreenRange(this.session);if(r.renderer){var s=this.$getTop(i.start.row,e),o=this.$padding+i.start.column*e.characterWidth;r.renderer(t,i,o,s,e)}else r.type=="fullLine"?this.drawFullLineMarker(t,i,r.clazz,e):r.type=="screenLine"?this.drawScreenLineMarker(t,i,r.clazz,e):i.isMultiLine()?r.type=="text"?this.drawTextMarker(t,i,r.clazz,e):this.drawMultiLineMarker(t,i,r.clazz,e):this.drawSingleLineMarker(t,i,r.clazz+" ace_start"+" ace_br15",e)}this.element.innerHTML=t.join("")},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(t,n,i,s,o){var u=this.session,a=n.start.row,f=n.end.row,l=a,c=0,h=0,p=u.getScreenLastRowColumn(l),d=new r(l,n.start.column,l,h);for(;l<=f;l++)d.start.row=d.end.row=l,d.start.column=l==a?n.start.column:u.getRowWrapIndent(l),d.end.column=p,c=h,h=p,p=l+1p,l==f),s,l==f?0:1,o)},this.drawMultiLineMarker=function(e,t,n,r,i){var s=this.$padding,o=r.lineHeight,u=this.$getTop(t.start.row,r),a=s+t.start.column*r.characterWidth;i=i||"",e.push("
"),u=this.$getTop(t.end.row,r);var f=t.end.column*r.characterWidth;e.push("
"),o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<=0)return;u=this.$getTop(t.start.row+1,r);var l=(t.start.column?1:0)|(t.end.column?0:8);e.push("
")},this.drawSingleLineMarker=function(e,t,n,r,i,s){var o=r.lineHeight,u=(t.end.column+(i||0)-t.start.column)*r.characterWidth,a=this.$getTop(t.start.row,r),f=this.$padding+t.start.column*r.characterWidth;e.push("
")},this.drawFullLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;t.start.row!=t.end.row&&(o+=this.$getTop(t.end.row,r)-s),e.push("
")},this.drawScreenLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;e.push("
")}}).call(s.prototype),t.Marker=s}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){r.implement(this,u),this.EOF_CHAR="\u00b6",this.EOL_CHAR_LF="\u00ac",this.EOL_CHAR_CRLF="\u00a4",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="\u2014",this.SPACE_CHAR="\u00b7",this.$padding=0,this.$updateEolChar=function(){var e=this.session.doc.getNewLineCharacter()=="\n"?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;var t=this.$tabStrings=[0];for(var n=1;n"+s.stringRepeat(this.TAB_CHAR,n)+""):t.push(s.stringRepeat(" ",n));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var r="ace_indent-guide",i="",o="";if(this.showInvisibles){r+=" ace_invisible",i=" ace_invisible_space",o=" ace_invisible_tab";var u=s.stringRepeat(this.SPACE_CHAR,this.tabSize),a=s.stringRepeat(this.TAB_CHAR,this.tabSize)}else var u=s.stringRepeat(" ",this.tabSize),a=u;this.$tabStrings[" "]=""+u+"",this.$tabStrings[" "]=""+a+""}},this.updateLines=function(e,t,n){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;var r=Math.max(t,e.firstRow),i=Math.min(n,e.lastRow),s=this.element.childNodes,o=0;for(var u=e.firstRow;uf&&(u=a.end.row+1,a=this.session.getNextFoldLine(u,a),f=a?a.start.row:Infinity);if(u>i)break;var l=s[o++];if(l){var c=[];this.$renderLine(c,u,!this.$useLineGroups(),u==f?a:!1),l.style.height=e.lineHeight*this.session.getRowLength(u)+"px",l.innerHTML=c.join("")}u++}},this.scrollLines=function(e){var t=this.config;this.config=e;if(!t||t.lastRow0;r--)n.removeChild(n.firstChild);if(t.lastRow>e.lastRow)for(var r=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);r>0;r--)n.removeChild(n.lastChild);if(e.firstRowt.lastRow){var i=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);n.appendChild(i)}},this.$renderLinesFragment=function(e,t,n){var r=this.element.ownerDocument.createDocumentFragment(),s=t,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>n)break;var a=i.createElement("div"),f=[];this.$renderLine(f,s,!1,s==u?o:!1),a.innerHTML=f.join("");if(this.$useLineGroups())a.className="ace_line_group",r.appendChild(a),a.style.height=e.lineHeight*this.session.getRowLength(s)+"px";else while(a.firstChild)r.appendChild(a.firstChild);s++}return r},this.update=function(e){this.config=e;var t=[],n=e.firstRow,r=e.lastRow,i=n,s=this.session.getNextFoldLine(i),o=s?s.start.row:Infinity;for(;;){i>o&&(i=s.end.row+1,s=this.session.getNextFoldLine(i,s),o=s?s.start.row:Infinity);if(i>r)break;this.$useLineGroups()&&t.push("
"),this.$renderLine(t,i,!1,i==o?s:!1),this.$useLineGroups()&&t.push("
"),i++}this.element.innerHTML=t.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,r){var i=this,o=/\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g,u=function(e,n,r,o,u){if(n)return i.showInvisibles?""+s.stringRepeat(i.SPACE_CHAR,e.length)+"":e;if(e=="&")return"&";if(e=="<")return"<";if(e==">")return">";if(e==" "){var a=i.session.getScreenTabSize(t+o);return t+=a-1,i.$tabStrings[a]}if(e=="\u3000"){var f=i.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",l=i.showInvisibles?i.SPACE_CHAR:"";return t+=1,""+l+""}return r?""+i.SPACE_CHAR+"":(t+=1,""+e+"")},a=r.replace(o,u);if(!this.$textToken[n.type]){var f="ace_"+n.type.replace(/\./g," ace_"),l="";n.type=="fold"&&(l=" style='width:"+n.value.length*this.config.characterWidth+"px;' "),e.push("",a,"")}else e.push(a);return t+r.length},this.renderIndentGuide=function(e,t,n){var r=t.search(this.$indentGuideRe);return r<=0||r>=n?t:t[0]==" "?(r-=r%this.tabSize,e.push(s.stringRepeat(this.$tabStrings[" "],r/this.tabSize)),t.substr(r)):t[0]==" "?(e.push(s.stringRepeat(this.$tabStrings[" "],r)),t.substr(r)):t},this.$renderWrappedLine=function(e,t,n,r){var i=0,o=0,u=n[0],a=0;for(var f=0;f=u)a=this.$renderToken(e,a,l,c.substring(0,u-i)),c=c.substring(u-i),i=u,r||e.push("","
"),e.push(s.stringRepeat("\u00a0",n.indent)),o++,a=0,u=n[o]||Number.MAX_VALUE;c.length!=0&&(i+=c.length,a=this.$renderToken(e,a,l,c))}}},this.$renderSimpleLine=function(e,t){var n=0,r=t[0],i=r.value;this.displayIndentGuides&&(i=this.renderIndentGuide(e,i)),i&&(n=this.$renderToken(e,n,r,i));for(var s=1;s");if(i.length){var s=this.session.getRowSplitData(t);s&&s.length?this.$renderWrappedLine(e,i,s,n):this.$renderSimpleLine(e,i)}this.showInvisibles&&(r&&(t=r.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),n||e.push("
")},this.$getFoldLineTokens=function(e,t){function i(e,t,n){var i=0,s=0;while(s+e[i].value.lengthn-t&&(o=o.substring(0,n-t)),r.push({type:e[i].type,value:o}),s=t+o.length,i+=1}while(sn?r.push({type:e[i].type,value:o.substring(0,n-s)}):r.push(e[i]),s+=o.length,i+=1}}var n=this.session,r=[],s=n.getTokens(e);return t.walk(function(e,t,o,u,a){e!=null?r.push({type:"fold",value:e}):(a&&(s=n.getTokens(t)),s.length&&i(s,u,o))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../lib/dom"),i,s=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),i===undefined&&(i=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(i?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e!=this.smoothBlinking&&!i&&(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0);if(!this.isBlinking||!this.blinkInterval||!this.isVisible)return;this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e),r=this.$padding+n.column*this.config.characterWidth,i=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:i}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,n=0,r=0;if(t===undefined||t.length===0)t=[{cursor:null}];for(var n=0,i=t.length;ne.height+e.offset||s.top<0)&&n>1)continue;var o=(this.cursors[r++]||this.addCursor()).style;this.drawCursor?this.drawCursor(o,s,e,t[n],this.session):(o.left=s.left+"px",o.top=s.top+"px",o.width=e.characterWidth+"px",o.height=e.lineHeight+"px")}while(this.cursors.length>r)this.removeCursor();var u=this.session.getOverwrite();this.$setOverwrite(u),this.$pixelPos=s,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(s.prototype),t.Cursor=s}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/event_emitter").EventEmitter,u=function(e){this.element=i.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=i.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,s.addListener(this.element,"scroll",this.onScroll.bind(this)),s.addListener(this.element,"mousedown",s.preventDefault)};(function(){r.implement(this,o),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e}}).call(u.prototype);var a=function(e,t){u.call(this,e),this.scrollTop=0,t.$scrollbarWidth=this.width=i.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};r.inherits(a,u),function(){this.classSuffix="-v",this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=function(e){this.inner.style.height=e+"px"},this.setScrollHeight=function(e){this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=e)}}.call(a.prototype);var f=function(e,t){u.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};r.inherits(f,u),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(f.prototype),t.ScrollBar=a,t.ScrollBarV=a,t.ScrollBarH=f,t.VScrollBar=a,t.HScrollBar=f}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){"use strict";var r=e("./lib/event"),i=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){this.changes=this.changes|e;if(!this.pending&&this.changes){this.pending=!0;var t=this;r.nextFrame(function(){t.pending=!1;var e;while(e=t.changes)t.changes=0,t.onRender(e)},this.window)}}}).call(i.prototype),t.RenderLoop=i}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=0,f=t.FontMetrics=function(e,t){this.el=i.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=i.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=i.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),a||this.$testFractionalRect(),this.$measureNode.innerHTML=s.stringRepeat("X",a),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){r.implement(this,u),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=i.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;t>0&&t<1?a=50:a=100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",o.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(a===50){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}var n={height:e.height,width:e.width/a}}else var n={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/a};return n.width===0||n.height===0?null:n},this.$measureCharWidth=function(e){this.$main.innerHTML=s.stringRepeat(e,a);var t=this.$main.getBoundingClientRect();return t.width/a},this.getCharacterWidth=function(e){var t=this.charSizes[e];return t===undefined&&(this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(f.prototype)}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./config"),o=e("./lib/useragent"),u=e("./layer/gutter").Gutter,a=e("./layer/marker").Marker,f=e("./layer/text").Text,l=e("./layer/cursor").Cursor,c=e("./scrollbar").HScrollBar,h=e("./scrollbar").VScrollBar,p=e("./renderloop").RenderLoop,d=e("./layer/font_metrics").FontMetrics,v=e("./lib/event_emitter").EventEmitter,m='.ace_editor {position: relative;overflow: hidden;font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;direction: ltr;}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;min-width: 100%;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \'\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;text-indent: -1em;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: inherit;color: inherit;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-webkit-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-webkit-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-webkit-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}.ace_br1 {border-top-left-radius : 3px;}.ace_br2 {border-top-right-radius : 3px;}.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}';i.importCssString(m,"ace_editor.css");var g=function(e,t){var n=this;this.container=e||i.createElement("div"),this.$keepTextAreaAtCursor=!o.isOldIE,i.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=i.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=i.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=i.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new u(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new a(this.content);var r=this.$textLayer=new f(this.content);this.canvas=r.element,this.$markerFront=new a(this.content),this.$cursorLayer=new l(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new h(this.container,this),this.scrollBarH=new c(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollTop(e.data-n.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollLeft(e.data-n.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new d(this.container,500),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new p(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),s.resetOptions(this),s._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,r.implement(this,v),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e);if(!e)return;this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode)},this.updateLines=function(e,t,n){t===undefined&&(t=Infinity),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow)return;this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar()},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,n,r){if(this.resizing>2)return;this.resizing>0?this.resizing++:this.resizing=e?1:0;var i=this.container;r||(r=i.clientHeight||i.scrollHeight),n||(n=i.clientWidth||i.scrollWidth);var s=this.$updateCachedSize(e,t,n,r);if(!this.$size.scrollerHeight||!n&&!r)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(s|this.$changes,!0):this.$loop.schedule(s|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null},this.$updateCachedSize=function(e,t,n,r){r-=this.$extraHeight||0;var i=0,s=this.$size,o={width:s.width,height:s.height,scrollerHeight:s.scrollerHeight,scrollerWidth:s.scrollerWidth};r&&(e||s.height!=r)&&(s.height=r,i|=this.CHANGE_SIZE,s.scrollerHeight=s.height,this.$horizScroll&&(s.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",i|=this.CHANGE_SCROLL);if(n&&(e||s.width!=n)){i|=this.CHANGE_SIZE,s.width=n,t==null&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",s.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px";if(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)i|=this.CHANGE_FULL}return s.$dirty=!n||!r,i&&this._signal("resize",o),i},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-this.$padding*2,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var n=this.session.selection.getCursor();n.column=0,e=this.$cursorLayer.getPixelPosition(n,!0),t*=this.session.getRowLength(n.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(!this.$showPrintMargin&&!this.$printMarginEl)return;if(!this.$printMarginEl){var e=i.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=i.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(!this.$keepTextAreaAtCursor)return;var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,n=this.$cursorLayer.$pixelPos.left;t-=e.offset;var r=this.textarea.style,i=this.lineHeight;if(t<0||t>e.height-i){r.top=r.left="0";return}var s=this.characterWidth;if(this.$composition){var o=this.textarea.value.replace(/^\x01+/,"");s*=this.session.$getStringScreenWidth(o)[0]+2,i+=2}n-=this.scrollLeft,n>this.$size.scrollerWidth-s&&(n=this.$size.scrollerWidth-s),n+=this.gutterWidth,r.height=i+"px",r.width=s+"px",r.left=Math.min(n,this.$size.scrollerWidth-s)+"px",r.top=Math.min(t,this.$size.height-i)+"px"},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},this.getLastFullyVisibleRow=function(){var e=Math.floor((this.layerConfig.height+this.layerConfig.offset)/this.layerConfig.lineHeight);return this.layerConfig.firstRow-1+e},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,n,r){var i=this.scrollMargin;i.top=e|0,i.bottom=t|0,i.right=r|0,i.left=n|0,i.v=i.top+i.bottom,i.h=i.left+i.right,i.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-i.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){this.$changes&&(e|=this.$changes,this.$changes=0);if(!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t){this.$changes|=e;return}if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){e|=this.$computeLayerConfig();if(n.firstRow!=this.layerConfig.firstRow&&n.firstRowScreen==this.layerConfig.firstRowScreen){var r=this.scrollTop+(n.firstRow-this.layerConfig.firstRow)*this.lineHeight;r>0&&(this.scrollTop=r,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig())}n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-n.offset+"px",this.content.style.marginTop=-n.offset+"px",this.content.style.width=n.width+2*this.$padding+"px",this.content.style.height=n.minHeight+"px"}e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left");if(e&this.CHANGE_FULL){this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this._signal("afterRender");return}if(e&this.CHANGE_SCROLL){e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),this._signal("afterRender");return}e&this.CHANGE_TEXT?(this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(n),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender")},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.max((this.$minLines||1)*this.lineHeight,Math.min(t,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(n+=this.scrollBarH.getHeight());var r=e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||r!=this.$vScroll){r!=this.$vScroll&&(this.$vScroll=r,this.scrollBarV.setVisible(r));var i=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,i,n),this.desiredHeight=n,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,r=this.session.getScreenLength(),i=r*this.lineHeight,s=this.$getLongestLine(),o=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-s-2*this.$padding<0),u=this.$horizScroll!==o;u&&(this.$horizScroll=o,this.scrollBarH.setVisible(o));var a=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var f=this.scrollTop%this.lineHeight,l=t.scrollerHeight+this.lineHeight,c=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;i+=c;var h=this.scrollMargin;this.session.setScrollTop(Math.max(-h.top,Math.min(this.scrollTop,i-t.scrollerHeight+h.bottom))),this.session.setScrollLeft(Math.max(-h.left,Math.min(this.scrollLeft,s+2*this.$padding-t.scrollerWidth+h.right)));var p=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i+c<0||this.scrollTop>h.top),d=a!==p;d&&(this.$vScroll=p,this.scrollBarV.setVisible(p));var v=Math.ceil(l/this.lineHeight)-1,m=Math.max(0,Math.round((this.scrollTop-f)/this.lineHeight)),g=m+v,y,b,w=this.lineHeight;m=e.screenToDocumentRow(m,0);var E=e.getFoldLine(m);E&&(m=E.start.row),y=e.documentToScreenRow(m,0),b=e.getRowLength(m)*w,g=Math.min(e.screenToDocumentRow(g,0),e.getLength()-1),l=t.scrollerHeight+e.getRowLength(g)*w+b,f=this.scrollTop-y*w;var S=0;this.layerConfig.width!=s&&(S=this.CHANGE_H_SCROLL);if(u||d)S=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),d&&(s=this.$getLongestLine());return this.layerConfig={width:s,padding:this.$padding,firstRow:m,firstRowScreen:y,lastRow:g,lineHeight:w,characterWidth:this.characterWidth,minHeight:l,maxHeight:i,offset:f,gutterOffset:Math.max(0,Math.ceil((f+t.height-t.scrollerHeight)/w)),height:this.$size.scrollerHeight},S},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(e>n.lastRow+1)return;if(ts?(t&&(s-=t*this.$size.scrollerHeight),s===0&&(s=-this.scrollMargin.top),this.session.setScrollTop(s)):a+this.$size.scrollerHeight-ui?(i=1-this.scrollMargin.top)return!0;if(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom)return!0;if(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left)return!0;if(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},this.pixelToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=(e+this.scrollLeft-n.left-this.$padding)/this.characterWidth,i=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),s=Math.round(r);return{row:i,column:s,side:r-s>0?1:-1}},this.screenToTextCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=Math.round((e+this.scrollLeft-n.left-this.$padding)/this.characterWidth),i=(t+this.scrollTop-n.top)/this.lineHeight;return this.session.screenToDocumentPosition(i,Math.max(r,0))},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=this.session.documentToScreenPosition(e,t),i=this.$padding+Math.round(r.column*this.characterWidth),s=r.row*this.lineHeight;return{pageX:n.left+i-this.scrollLeft,pageY:n.top+s-this.scrollTop}},this.visualizeFocus=function(){i.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){i.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,i.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){if(!this.$composition)return;i.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null},this.setTheme=function(e,t){function o(r){if(n.$themeId!=e)return t&&t();if(!r.cssClass)return;i.importCssString(r.cssText,r.cssClass,n.container.ownerDocument),n.theme&&i.removeCssClass(n.container,n.theme.cssClass);var s="padding"in r?r.padding:"padding"in(n.theme||{})?4:n.$padding;n.$padding&&s!=n.$padding&&n.setPadding(s),n.$theme=r.cssClass,n.theme=r,i.addCssClass(n.container,r.cssClass),i.setCssClass(n.container,"ace_dark",r.isDark),n.$size&&(n.$size.width=0,n.$updateSizeAsync()),n._dispatchEvent("themeLoaded",{theme:r}),t&&t()}var n=this;this.$themeId=e,n._dispatchEvent("themeChange",{theme:e});if(!e||typeof e=="string"){var r=e||this.$options.theme.initialValue;s.loadModule(["theme",r],o)}else o(e)},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){i.setCssClass(this.container,e,t!==!1)},this.unsetStyle=function(e){i.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(g.prototype),s.defineOptions(g.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){typeof e=="number"&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){i.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){if(!this.$gutterLineHighlight){this.$gutterLineHighlight=i.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",this.$gutter.appendChild(this.$gutterLineHighlight);return}this.$gutterLineHighlight.style.display=e?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){(!this.$vScrollBarAlwaysVisible||!this.$vScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){typeof e=="number"&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},scrollPastEnd:{set:function(e){e=+e||0;if(this.$scrollPastEnd==e)return;this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=g}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/net"),s=e("../lib/event_emitter").EventEmitter,o=e("../config"),u=function(t,n,r,i){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl);if(o.get("packaged")||!e.toUrl)i=i||o.moduleUrl(n,"worker");else{var s=this.$normalizePath;i=i||s(e.toUrl("ace/worker/worker.js",null,"_"));var u={};t.forEach(function(t){u[t]=s(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}try{this.$worker=new Worker(i)}catch(a){if(!(a instanceof window.DOMException))throw a;var f=this.$workerBlob(i),l=window.URL||window.webkitURL,c=l.createObjectURL(f);this.$worker=new Worker(c),l.revokeObjectURL(c)}this.$worker.postMessage({init:!0,tlns:u,module:n,classname:r}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){r.implement(this,s),this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var n=this.callbacks[t.id];n&&(n(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return i.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,n){if(n){var r=this.callbackId++;this.callbacks[r]=n,t.push(r)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(n){console.error(n.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),e.action=="insert"?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;if(!e)return;this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e})},this.$workerBlob=function(e){var t="importScripts('"+i.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(n){var r=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,s=new r;return s.append(t),s.getBlob("application/javascript")}}}).call(u.prototype);var a=function(e,t,n){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var r=null,i=!1,u=Object.create(s),a=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){a.messageBuffer.push(e),r&&(i?setTimeout(f):f())},this.setEmitSync=function(e){i=e};var f=function(){var e=a.messageBuffer.shift();e.command?r[e.command].apply(r,e.args):e.event&&u._signal(e.event,e.data)};u.postMessage=function(e){a.onMessage({data:e})},u.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},u.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},o.loadModule(["worker",t],function(e){r=new e[n](u);while(a.messageBuffer.length)f()})};a.prototype=u.prototype,t.UIWorkerClient=a,t.WorkerClient=u}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./range").Range,i=e("./lib/event_emitter").EventEmitter,s=e("./lib/oop"),o=function(e,t,n,r,i,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=i,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=r,this.$onCursorChange=function(){setTimeout(function(){o.onCursorChange()})},this.$pos=n;var u=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=u.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){s.implement(this,i),this.setup=function(){var e=this,t=this.doc,n=this.session,i=this.$pos;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=t.createAnchor(i.row,i.column),this.markerId=n.addMarker(new r(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.pos.on("change",function(t){n.removeMarker(e.markerId),e.markerId=n.addMarker(new r(t.value.row,t.value.column,t.value.row,t.value.column+e.length),e.mainClass,null,!1)}),this.others=[],this.$others.forEach(function(n){var r=t.createAnchor(n.row,n.column);e.others.push(r)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(this.othersActive)return;var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new r(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1),n.on("change",function(i){e.removeMarker(n.markerId),n.markerId=e.addMarker(new r(i.value.row,i.value.column,i.value.row,i.value.column+t.length),t.othersClass,null,!1)})})},this.hideOtherMarkers=function(){if(!this.othersActive)return;this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1){var i=t.start.column-this.pos.column;this.length+=n;if(!this.session.$fromUndo){if(e.action==="insert")for(var s=this.others.length-1;s>=0;s--){var o=this.others[s],u={row:o.row,column:o.column+i};o.row===t.start.row&&t.start.column=0;s--){var o=this.others[s],u={row:o.row,column:o.column+i};o.row===t.start.row&&t.start.column=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))},this.detach=function(){this.session.removeMarker(this.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.pos.detach();for(var e=0;e1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var r=this.ranges.indexOf(e[n]);this.ranges.splice(r,1)}this._signal("removeRange",{ranges:e}),this.rangeCount===0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){if(this.rangeList)return;this.rangeList=new r,this.ranges=[],this.rangeCount=0},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var n=this.getRange(),r=this.isBackwards(),s=n.start.row,o=n.end.row;if(s==o){if(r)var u=n.end,a=n.start;else var u=n.start,a=n.end;this.addRange(i.fromPoints(a,a)),this.addRange(i.fromPoints(u,u));return}var f=[],l=this.getLineRange(s,!0);l.start.column=n.start.column,f.push(l);for(var c=s+1;c1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var r=this.session.documentToScreenPosition(this.selectionLead),s=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(r,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var r=[],s=e.column0)d--;if(d>0){var m=0;while(r[m].isEmpty())m++}for(var g=d;g>=m;g--)r[g].isEmpty()&&r.splice(g,1)}return r}}.call(s.prototype);var d=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(!e.marker)return;this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);t!=-1&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length},this.removeSelectionMarkers=function(e){var t=this.session.$selectionMarkers;for(var n=e.length;n--;){var r=e[n];if(!r.marker)continue;this.session.removeMarker(r.marker);var i=t.indexOf(r);i!=-1&&t.splice(i,1)}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){if(this.inMultiSelectMode)return;this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onSingleSelect=function(e){if(this.session.multiSelect.inVirtualMode)return;this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection")},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(!n.multiSelect)return;if(!t.multiSelectAction){var r=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}else t.multiSelectAction=="forEach"?r=n.forEachSelection(t,e.args):t.multiSelectAction=="forEachLine"?r=n.forEachSelection(t,e.args,!0):t.multiSelectAction=="single"?(n.exitMultiSelectMode(),r=t.exec(n,e.args||{})):r=t.multiSelectAction(n,e.args||{});return r},this.forEachSelection=function(e,t,n){if(this.inVirtualSelectionMode)return;var r=n&&n.keepOrder,i=n==1||n&&n.$byLines,o=this.session,u=this.selection,a=u.rangeList,f=(r?u:a).ranges,l;if(!f.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var c=u._eventRegistry;u._eventRegistry={};var h=new s(o);this.inVirtualSelectionMode=!0;for(var p=f.length;p--;){if(i)while(p>0&&f[p].start.row==f[p-1].end.row)p--;h.fromOrientedRange(f[p]),h.index=p,this.selection=o.selection=h;var d=e.exec?e.exec(this,t||{}):e(this,t||{});!l&&d!==undefined&&(l=d),h.toOrientedRange(f[p])}h.detach(),this.selection=o.selection=u,this.inVirtualSelectionMode=!1,u._eventRegistry=c,u.mergeOverlappingRanges();var v=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),v&&v.from==v.to&&this.renderer.animateScrolling(v.from),l},this.exitMultiSelectMode=function(){if(!this.inMultiSelectMode||this.inVirtualSelectionMode)return;this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var t=this.multiSelect.rangeList.ranges,n=[];for(var r=0;r0);u<0&&(u=0),f>=c&&(f=c-1)}var p=this.session.removeFullLines(u,f);p=this.$reAlignText(p,l),this.session.insert({row:u,column:0},p.join("\n")+"\n"),l||(o.start.column=0,o.end.column=p[p.length-1].length),this.selection.setRange(o)}else{s.forEach(function(e){t.substractPoint(e.cursor)});var d=0,v=Infinity,m=n.map(function(t){var n=t.cursor,r=e.getLine(n.row),i=r.substr(n.column).search(/\S/g);return i==-1&&(i=0),n.column>d&&(d=n.column),io?e.insert(r,a.stringRepeat(" ",s-o)):e.remove(new i(r.row,r.column,r.row,r.column-s+o)),t.start.column=t.end.column=d,t.start.row=t.end.row=r.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(e,t){function u(e){return a.stringRepeat(" ",e)}function f(e){return e[2]?u(i)+e[2]+u(s-e[2].length+o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function l(e){return e[2]?u(i+s-e[2].length)+e[2]+u(o," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function c(e){return e[2]?u(i)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var n=!0,r=!0,i,s,o;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?i==null?(i=t[1].length,s=t[2].length,o=t[3].length,t):(i+s+o!=t[1].length+t[2].length+t[3].length&&(r=!1),i!=t[1].length&&(n=!1),i>t[1].length&&(i=t[1].length),st[3].length&&(o=t[3].length),t):[e]}).map(t?f:n?r?l:f:c)}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.off("addRange",this.$onAddRange),n.multiSelect.off("removeRange",this.$onRemoveRange),n.multiSelect.off("multiSelect",this.$onMultiSelect),n.multiSelect.off("singleSelect",this.$onSingleSelect),n.multiSelect.lead.off("change",this.$checkMultiselectChange),n.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=m,e("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(e){m(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",o)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",o))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../../range").Range,i=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?"start":t=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(r)?"end":""},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var i=/\S/,s=e.getLine(t),o=s.search(i);if(o==-1)return;var u=n||s.length,a=e.getLength(),f=t,l=t;while(++tf){var h=e.getLine(l).length;return new r(f,u,l,h)}},this.openingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i+1},u=e.$findClosingBracket(t,o,s);if(!u)return;var a=e.foldWidgets[u.row];return a==null&&(a=e.getFoldWidget(u.row)),a=="start"&&u.row>o.row&&(u.row--,u.column=e.getLine(u.row).length),r.fromPoints(o,u)},this.closingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i},u=e.$findOpeningBracket(t,o);if(!u)return;return u.column++,o.column--,r.fromPoints(u,o)}}).call(i.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeEditor",this.$onChangeEditor)}var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./range").Range;(function(){this.getRowLength=function(e){var t;return this.lineWidgets?t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:t=0,!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach();if(this.editor==e)return;this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets))},this.detach=function(e){var t=this.editor;if(!t)return;this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var n=this.session.lineWidgets;n&&n.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})},this.updateOnChange=function(e){var t=this.session.lineWidgets;if(!t)return;var n=e.start.row,r=e.end.row-n;if(r!==0)if(e.action=="remove"){var i=t.splice(n+1,r);i.forEach(function(e){e&&this.removeLineWidget(e)},this),this.$updateRows()}else{var s=new Array(r);s.unshift(n,0),t.splice.apply(t,s),this.$updateRows()}},this.$updateRows=function(){var e=this.session.lineWidgets;if(!e)return;var t=!0;e.forEach(function(e,n){e&&(t=!1,e.row=n)}),t&&(this.session.lineWidgets=null)},this.addLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength())),this.session.lineWidgets[e.row]=e;var t=this.editor.renderer;return e.html&&!e.el&&(e.el=i.createElement("div"),e.el.innerHTML=e.html),e.el&&(i.addCssClass(e.el,"ace_lineWidgetContainer"),e.el.style.position="absolute",e.el.style.zIndex=5,t.container.appendChild(e.el),e._inDocument=!0),e.coverGutter||(e.el.style.zIndex=3),e.pixelHeight||(e.pixelHeight=e.el.offsetHeight),e.rowCount==null&&(e.rowCount=e.pixelHeight/t.layerConfig.lineHeight),this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,t),e},this.removeLineWidget=function(e){e._inDocument=!1,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el);if(e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(t){}this.session.lineWidgets&&(this.session.lineWidgets[e.row]=undefined),this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows()},this.onWidgetChanged=function(e){this.session._changedWidgets.push(e),this.editor&&this.editor.renderer.updateFull()},this.measureWidgets=function(e,t){var n=this.session._changedWidgets,r=t.layerConfig;if(!n||!n.length)return;var i=Infinity;for(var s=0;s0&&!r[i])i--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var o=i;o<=s;o++){var u=r[o];if(!u||!u.el)continue;u._inDocument||(u._inDocument=!0,t.container.appendChild(u.el));var a=t.$cursorLayer.getPixelPosition({row:o,column:0},!0).top;u.coverLine||(a+=n.lineHeight*this.session.getRowLineCount(u.row)),u.el.style.top=a-n.offset+"px";var f=u.coverGutter?0:t.gutterWidth;u.fixedWidth||(f-=t.scrollLeft),u.el.style.left=f+"px",u.fixedWidth?u.el.style.right=t.scrollBar.getWidth()+"px":u.el.style.right=""}}}).call(o.prototype),t.LineWidgets=o}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e,t,n){var r=0,i=e.length-1;while(r<=i){var s=r+i>>1,o=n(t,e[s]);if(o>0)r=s+1;else{if(!(o<0))return s;i=s-1}}return-(r+1)}function u(e,t,n){var r=e.getAnnotations().sort(s.comparePoints);if(!r.length)return;var i=o(r,{row:t,column:-1},s.comparePoints);i<0&&(i=-i-1),i>=r.length?i=n>0?0:r.length-1:i===0&&n<0&&(i=r.length-1);var u=r[i];if(!u||!n)return;if(u.row===t){do u=r[i+=n];while(u&&u.row===t);if(!u)return r.slice()}var a=[];t=u.row;do a[n<0?"unshift":"push"](u),u=r[i+=n];while(u&&u.row==t);return a.length&&a}var r=e("../line_widgets").LineWidgets,i=e("../lib/dom"),s=e("../range").Range;t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new r(n),n.widgetManager.attach(e));var s=e.getCursorPosition(),o=s.row,a=n.lineWidgets&&n.lineWidgets[o];a?a.destroy():o-=t;var f=u(n,o,t),l;if(f){var c=f[0];s.column=(c.pos&&typeof c.column!="number"?c.pos.sc:c.column)||0,s.row=c.row,l=e.renderer.$gutterLayer.$annotations[s.row]}else{if(a)return;l={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(s.row),e.selection.moveToPosition(s);var h={row:s.row,fixedWidth:!0,coverGutter:!0,el:i.createElement("div")},p=h.el.appendChild(i.createElement("div")),d=h.el.appendChild(i.createElement("div"));d.className="error_widget_arrow "+l.className;var v=e.renderer.$cursorLayer.getPixelPosition(s).left;d.style.left=v+e.renderer.gutterWidth-5+"px",h.el.className="error_widget_wrapper",p.className="error_widget "+l.className,p.innerHTML=l.text.join("
"),p.appendChild(i.createElement("div"));var m=function(e,t,n){if(t===0&&(n==="esc"||n==="return"))return h.destroy(),{command:"null"}};h.destroy=function(){if(e.$mouseHandler.isMousePressed)return;e.keyBinding.removeKeyboardHandler(m),n.widgetManager.removeLineWidget(h),e.off("changeSelection",h.destroy),e.off("changeSession",h.destroy),e.off("mouseup",h.destroy),e.off("change",h.destroy)},e.keyBinding.addKeyboardHandler(m),e.on("changeSelection",h.destroy),e.on("changeSession",h.destroy),e.on("mouseup",h.destroy),e.on("change",h.destroy),e.session.widgetManager.addLineWidget(h),h.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:h.el.offsetHeight})},i.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")}),ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,n){"use strict";e("./lib/fixoldbrowsers");var r=e("./lib/dom"),i=e("./lib/event"),s=e("./editor").Editor,o=e("./edit_session").EditSession,u=e("./undomanager").UndoManager,a=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.require=e,t.edit=function(e){if(typeof e=="string"){var n=e;e=document.getElementById(n);if(!e)throw new Error("ace.edit can't find div #"+n)}if(e&&e.env&&e.env.editor instanceof s)return e.env.editor;var o="";if(e&&/input|textarea/i.test(e.tagName)){var u=e;o=u.value,e=r.createElement("pre"),u.parentNode.replaceChild(e,u)}else e&&(o=r.getInnerText(e),e.innerHTML="");var f=t.createEditSession(o),l=new s(new a(e));l.setSession(f);var c={document:f,editor:l,onResize:l.resize.bind(l,null)};return u&&(c.textarea=u),i.addListener(window,"resize",c.onResize),l.on("destroy",function(){i.removeListener(window,"resize",c.onResize),c.editor.container.env=null}),l.container.env=l.env=c,l},t.createEditSession=function(e,t){var n=new o(e,t);return n.setUndoManager(new u),n},t.EditSession=o,t.UndoManager=u}); + (function() { + ace.require(["ace/ace"], function(a) { + a && a.config.init(true); + if (!window.ace) + window.ace = a; + for (var key in a) if (a.hasOwnProperty(key)) + window.ace[key] = a[key]; + }); + })(); \ No newline at end of file diff --git a/ace/ext-beautify.js b/ace/ext-beautify.js index 659262c8..14ad59d3 100644 --- a/ace/ext-beautify.js +++ b/ace/ext-beautify.js @@ -1,5 +1,5 @@ -ace.define("ace/ext/beautify/php_rules",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";var r=e("ace/token_iterator").TokenIterator;t.newLines=[{type:"support.php_tag",value:""},{type:"paren.lparen",value:"{",indent:!0},{type:"paren.rparen",breakBefore:!0,value:"}",indent:!1},{type:"paren.rparen",breakBefore:!0,value:"})",indent:!1,dontBreak:!0},{type:"comment"},{type:"text",value:";"},{type:"text",value:":",context:"php"},{type:"keyword",value:"case",indent:!0,dontBreak:!0},{type:"keyword",value:"default",indent:!0,dontBreak:!0},{type:"keyword",value:"break",indent:!1,dontBreak:!0},{type:"punctuation.doctype.end",value:">"},{type:"meta.tag.punctuation.end",value:">"},{type:"meta.tag.punctuation.begin",value:"<",blockTag:!0,indent:!0,dontBreak:!0},{type:"meta.tag.punctuation.begin",value:""?r="php":i.type=="support.php_tag"&&i.value=="?>"?r="html":i.type=="meta.tag.name.style"&&r!="css"?r="css":i.type=="meta.tag.name.style"&&r=="css"?r="html":i.type=="meta.tag.name.script"&&r!="js"?r="js":i.type=="meta.tag.name.script"&&r=="js"&&(r="html"),v=e.stepForward(),v&&v.type.indexOf("meta.tag.name")==0&&(d=v.value),p.type=="support.php_tag"&&p.value==""&&(l=!1),h=c,p=i,i=v;if(i===null)break}return a}}),ace.define("ace/ext/beautify",["require","exports","module","ace/token_iterator","ace/ext/beautify/php_rules"],function(e,t,n){"use strict";var r=e("ace/token_iterator").TokenIterator,i=e("./beautify/php_rules").transform;t.beautify=function(e){var t=new r(e,0,0),n=t.getCurrentToken(),s=e.$modeId.split("/").pop(),o=i(t,s);e.doc.setValue(o)},t.commands=[{name:"beautify",exec:function(e){t.beautify(e.session)},bindKey:"Ctrl-Shift-B"}]}); - (function() { - ace.require(["ace/ext/beautify"], function() {}); - })(); +ace.define("ace/ext/beautify/php_rules",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";var r=e("ace/token_iterator").TokenIterator;t.newLines=[{type:"support.php_tag",value:""},{type:"paren.lparen",value:"{",indent:!0},{type:"paren.rparen",breakBefore:!0,value:"}",indent:!1},{type:"paren.rparen",breakBefore:!0,value:"})",indent:!1,dontBreak:!0},{type:"comment"},{type:"text",value:";"},{type:"text",value:":",context:"php"},{type:"keyword",value:"case",indent:!0,dontBreak:!0},{type:"keyword",value:"default",indent:!0,dontBreak:!0},{type:"keyword",value:"break",indent:!1,dontBreak:!0},{type:"punctuation.doctype.end",value:">"},{type:"meta.tag.punctuation.end",value:">"},{type:"meta.tag.punctuation.begin",value:"<",blockTag:!0,indent:!0,dontBreak:!0},{type:"meta.tag.punctuation.begin",value:""?r="php":i.type=="support.php_tag"&&i.value=="?>"?r="html":i.type=="meta.tag.name.style"&&r!="css"?r="css":i.type=="meta.tag.name.style"&&r=="css"?r="html":i.type=="meta.tag.name.script"&&r!="js"?r="js":i.type=="meta.tag.name.script"&&r=="js"&&(r="html"),v=e.stepForward(),v&&v.type.indexOf("meta.tag.name")==0&&(d=v.value),p.type=="support.php_tag"&&p.value==""&&(l=!1),h=c,p=i,i=v;if(i===null)break}return a}}),ace.define("ace/ext/beautify",["require","exports","module","ace/token_iterator","ace/ext/beautify/php_rules"],function(e,t,n){"use strict";var r=e("ace/token_iterator").TokenIterator,i=e("./beautify/php_rules").transform;t.beautify=function(e){var t=new r(e,0,0),n=t.getCurrentToken(),s=e.$modeId.split("/").pop(),o=i(t,s);e.doc.setValue(o)},t.commands=[{name:"beautify",exec:function(e){t.beautify(e.session)},bindKey:"Ctrl-Shift-B"}]}); + (function() { + ace.require(["ace/ext/beautify"], function() {}); + })(); \ No newline at end of file diff --git a/ace/ext-chromevox.js b/ace/ext-chromevox.js index c8d951a3..491fc5a6 100644 --- a/ace/ext-chromevox.js +++ b/ace/ext-chromevox.js @@ -1,5 +1,5 @@ -ace.define("ace/ext/chromevox",["require","exports","module","ace/editor","ace/config"],function(e,t,n){function gt(){return typeof cvox!="undefined"&&cvox&&cvox.Api}function wt(e){if(gt())mt(e);else{yt++;if(yt>=bt)return;window.setTimeout(wt,500,e)}}var r={};r.SpeechProperty,r.Cursor,r.Token,r.Annotation;var i={rate:.8,pitch:.4,volume:.9},s={rate:1,pitch:.5,volume:.9},o={rate:.8,pitch:.8,volume:.9},u={rate:.8,pitch:.3,volume:.9},a={rate:.8,pitch:.7,volume:.9},f={rate:.8,pitch:.8,volume:.9},l={punctuationEcho:"none",relativePitch:-0.6},c="ALERT_NONMODAL",h="ALERT_MODAL",p="INVALID_KEYPRESS",d="insertMode",v="start",m=[{substr:";",newSubstr:" semicolon "},{substr:":",newSubstr:" colon "}],g={SPEAK_ANNOT:"annots",SPEAK_ALL_ANNOTS:"all_annots",TOGGLE_LOCATION:"toggle_location",SPEAK_MODE:"mode",SPEAK_ROW_COL:"row_col",TOGGLE_DISPLACEMENT:"toggle_displacement",FOCUS_TEXT:"focus_text"},y="CONTROL + SHIFT ";r.editor=null;var b=null,w={},E=!1,S=!1,x=!1,T=null,N={},C={},k=function(e){return y+String.fromCharCode(e)},L=function(){var e=r.editor.keyBinding.getKeyboardHandler();return e.$id==="ace/keyboard/vim"},A=function(e){return r.editor.getSession().getTokenAt(e.row,e.column+1)},O=function(e){return r.editor.getSession().getLine(e.row)},M=function(e){w[e.row]&&cvox.Api.playEarcon(c),E?(cvox.Api.stop(),W(e),R(A(e)),I(e.row,1)):I(e.row,0)},_=function(e){var t=O(e),n=t.substr(e.column-1);e.column===0&&(n=" "+t);var r=/^\W(\w+)/,i=r.exec(n);return i!==null},D={constant:{prop:i},entity:{prop:o},keyword:{prop:u},storage:{prop:a},variable:{prop:f},meta:{prop:s,replace:[{substr:"",newSubstr:" close tag "},{substr:"<",newSubstr:" tag start "},{substr:">",newSubstr:" tag end "}]}},P={prop:P},H=function(e,t){var n=e;for(var r=0;r0&&cvox.Api.playEarcon(c),Y(t)},et=function(e){var t=e.type+" "+e.text+" on "+nt(e.row,e.column);t=t.replace(";","semicolon"),cvox.Api.speak(t,1)},tt=function(e){var t=w[e];for(var n in t)et(t[n])},nt=function(e,t){return"row "+(e+1)+" column "+(t+1)},rt=function(){cvox.Api.speak(nt(b.row,b.column))},it=function(){for(var e in w)tt(e)},st=function(){if(!L())return;switch(r.editor.keyBinding.$data.state){case d:cvox.Api.speak("Insert mode");break;case v:cvox.Api.speak("Command mode")}},ot=function(){E=!E,E?cvox.Api.speak("Speak location on row change enabled."):cvox.Api.speak("Speak location on row change disabled.")},ut=function(){S=!S,S?cvox.Api.speak("Speak displacement on column changes."):cvox.Api.speak("Speak current character or word on column changes.")},at=function(e){if(e.ctrlKey&&e.shiftKey){var t=N[e.keyCode];t&&t.func()}},ft=function(e,t){if(!L())return;var n=t.keyBinding.$data.state;if(n===T)return;switch(n){case d:cvox.Api.playEarcon(h),cvox.Api.setKeyEcho(!0);break;case v:cvox.Api.playEarcon(h),cvox.Api.setKeyEcho(!1)}T=n},lt=function(e){var t=e.detail.customCommand,n=C[t];n&&(n.func(),r.editor.focus())},ct=function(){var e=dt.map(function(e){return{desc:e.desc+k(e.keyCode),cmd:e.cmd}}),t=document.querySelector("body");t.setAttribute("contextMenuActions",JSON.stringify(e)),t.addEventListener("ATCustomEvent",lt,!0)},ht=function(e){e.match?I(b.row,0):cvox.Api.playEarcon(p)},pt=function(){r.editor.focus()},dt=[{keyCode:49,func:function(){tt(b.row)},cmd:g.SPEAK_ANNOT,desc:"Speak annotations on line"},{keyCode:50,func:it,cmd:g.SPEAK_ALL_ANNOTS,desc:"Speak all annotations"},{keyCode:51,func:st,cmd:g.SPEAK_MODE,desc:"Speak Vim mode"},{keyCode:52,func:ot,cmd:g.TOGGLE_LOCATION,desc:"Toggle speak row location"},{keyCode:53,func:rt,cmd:g.SPEAK_ROW_COL,desc:"Speak row and column"},{keyCode:54,func:ut,cmd:g.TOGGLE_DISPLACEMENT,desc:"Toggle speak displacement"},{keyCode:55,func:pt,cmd:g.FOCUS_TEXT,desc:"Focus text"}],vt=function(){r.editor=editor,editor.getSession().selection.on("changeCursor",J),editor.getSession().selection.on("changeSelection",K),editor.getSession().on("change",Q),editor.getSession().on("changeAnnotation",Z),editor.on("changeStatus",ft),editor.on("findSearchBox",ht),editor.container.addEventListener("keydown",at),b=editor.selection.getCursor()},mt=function(e){vt(),dt.forEach(function(e){N[e.keyCode]=e,C[e.cmd]=e}),e.on("focus",vt),L()&&cvox.Api.setKeyEcho(!1),ct()},yt=0,bt=15,Et=e("../editor").Editor;e("../config").defineOptions(Et.prototype,"editor",{enableChromevoxEnhancements:{set:function(e){e&&wt(this)},value:!0}})}); - (function() { - ace.require(["ace/ext/chromevox"], function() {}); - })(); +ace.define("ace/ext/chromevox",["require","exports","module","ace/editor","ace/config"],function(e,t,n){function gt(){return typeof cvox!="undefined"&&cvox&&cvox.Api}function wt(e){if(gt())mt(e);else{yt++;if(yt>=bt)return;window.setTimeout(wt,500,e)}}var r={};r.SpeechProperty,r.Cursor,r.Token,r.Annotation;var i={rate:.8,pitch:.4,volume:.9},s={rate:1,pitch:.5,volume:.9},o={rate:.8,pitch:.8,volume:.9},u={rate:.8,pitch:.3,volume:.9},a={rate:.8,pitch:.7,volume:.9},f={rate:.8,pitch:.8,volume:.9},l={punctuationEcho:"none",relativePitch:-0.6},c="ALERT_NONMODAL",h="ALERT_MODAL",p="INVALID_KEYPRESS",d="insertMode",v="start",m=[{substr:";",newSubstr:" semicolon "},{substr:":",newSubstr:" colon "}],g={SPEAK_ANNOT:"annots",SPEAK_ALL_ANNOTS:"all_annots",TOGGLE_LOCATION:"toggle_location",SPEAK_MODE:"mode",SPEAK_ROW_COL:"row_col",TOGGLE_DISPLACEMENT:"toggle_displacement",FOCUS_TEXT:"focus_text"},y="CONTROL + SHIFT ";r.editor=null;var b=null,w={},E=!1,S=!1,x=!1,T=null,N={},C={},k=function(e){return y+String.fromCharCode(e)},L=function(){var e=r.editor.keyBinding.getKeyboardHandler();return e.$id==="ace/keyboard/vim"},A=function(e){return r.editor.getSession().getTokenAt(e.row,e.column+1)},O=function(e){return r.editor.getSession().getLine(e.row)},M=function(e){w[e.row]&&cvox.Api.playEarcon(c),E?(cvox.Api.stop(),W(e),R(A(e)),I(e.row,1)):I(e.row,0)},_=function(e){var t=O(e),n=t.substr(e.column-1);e.column===0&&(n=" "+t);var r=/^\W(\w+)/,i=r.exec(n);return i!==null},D={constant:{prop:i},entity:{prop:o},keyword:{prop:u},storage:{prop:a},variable:{prop:f},meta:{prop:s,replace:[{substr:"",newSubstr:" close tag "},{substr:"<",newSubstr:" tag start "},{substr:">",newSubstr:" tag end "}]}},P={prop:P},H=function(e,t){var n=e;for(var r=0;r0&&cvox.Api.playEarcon(c),Y(t)},et=function(e){var t=e.type+" "+e.text+" on "+nt(e.row,e.column);t=t.replace(";","semicolon"),cvox.Api.speak(t,1)},tt=function(e){var t=w[e];for(var n in t)et(t[n])},nt=function(e,t){return"row "+(e+1)+" column "+(t+1)},rt=function(){cvox.Api.speak(nt(b.row,b.column))},it=function(){for(var e in w)tt(e)},st=function(){if(!L())return;switch(r.editor.keyBinding.$data.state){case d:cvox.Api.speak("Insert mode");break;case v:cvox.Api.speak("Command mode")}},ot=function(){E=!E,E?cvox.Api.speak("Speak location on row change enabled."):cvox.Api.speak("Speak location on row change disabled.")},ut=function(){S=!S,S?cvox.Api.speak("Speak displacement on column changes."):cvox.Api.speak("Speak current character or word on column changes.")},at=function(e){if(e.ctrlKey&&e.shiftKey){var t=N[e.keyCode];t&&t.func()}},ft=function(e,t){if(!L())return;var n=t.keyBinding.$data.state;if(n===T)return;switch(n){case d:cvox.Api.playEarcon(h),cvox.Api.setKeyEcho(!0);break;case v:cvox.Api.playEarcon(h),cvox.Api.setKeyEcho(!1)}T=n},lt=function(e){var t=e.detail.customCommand,n=C[t];n&&(n.func(),r.editor.focus())},ct=function(){var e=dt.map(function(e){return{desc:e.desc+k(e.keyCode),cmd:e.cmd}}),t=document.querySelector("body");t.setAttribute("contextMenuActions",JSON.stringify(e)),t.addEventListener("ATCustomEvent",lt,!0)},ht=function(e){e.match?I(b.row,0):cvox.Api.playEarcon(p)},pt=function(){r.editor.focus()},dt=[{keyCode:49,func:function(){tt(b.row)},cmd:g.SPEAK_ANNOT,desc:"Speak annotations on line"},{keyCode:50,func:it,cmd:g.SPEAK_ALL_ANNOTS,desc:"Speak all annotations"},{keyCode:51,func:st,cmd:g.SPEAK_MODE,desc:"Speak Vim mode"},{keyCode:52,func:ot,cmd:g.TOGGLE_LOCATION,desc:"Toggle speak row location"},{keyCode:53,func:rt,cmd:g.SPEAK_ROW_COL,desc:"Speak row and column"},{keyCode:54,func:ut,cmd:g.TOGGLE_DISPLACEMENT,desc:"Toggle speak displacement"},{keyCode:55,func:pt,cmd:g.FOCUS_TEXT,desc:"Focus text"}],vt=function(){r.editor=editor,editor.getSession().selection.on("changeCursor",J),editor.getSession().selection.on("changeSelection",K),editor.getSession().on("change",Q),editor.getSession().on("changeAnnotation",Z),editor.on("changeStatus",ft),editor.on("findSearchBox",ht),editor.container.addEventListener("keydown",at),b=editor.selection.getCursor()},mt=function(e){vt(),dt.forEach(function(e){N[e.keyCode]=e,C[e.cmd]=e}),e.on("focus",vt),L()&&cvox.Api.setKeyEcho(!1),ct()},yt=0,bt=15,Et=e("../editor").Editor;e("../config").defineOptions(Et.prototype,"editor",{enableChromevoxEnhancements:{set:function(e){e&&wt(this)},value:!0}})}); + (function() { + ace.require(["ace/ext/chromevox"], function() {}); + })(); \ No newline at end of file diff --git a/ace/ext-elastic_tabstops_lite.js b/ace/ext-elastic_tabstops_lite.js index bae2275a..9d628000 100644 --- a/ace/ext-elastic_tabstops_lite.js +++ b/ace/ext-elastic_tabstops_lite.js @@ -1,5 +1,5 @@ -ace.define("ace/ext/elastic_tabstops_lite",["require","exports","module","ace/editor","ace/config"],function(e,t,n){"use strict";var r=function(e){this.$editor=e;var t=this,n=[],r=!1;this.onAfterExec=function(){r=!1,t.processRows(n),n=[]},this.onExec=function(){r=!0},this.onChange=function(e){r&&(n.indexOf(e.start.row)==-1&&n.push(e.start.row),e.end.row!=e.start.row&&n.push(e.end.row))}};(function(){this.processRows=function(e){this.$inChange=!0;var t=[];for(var n=0,r=e.length;n-1)continue;var s=this.$findCellWidthsForBlock(i),o=this.$setBlockCellWidthsToMax(s.cellWidths),u=s.firstRow;for(var a=0,f=o.length;a=0){n=this.$cellWidthsForRow(r);if(n.length==0)break;t.unshift(n),r--}var i=r+1;r=e;var s=this.$editor.session.getLength();while(r0&&(this.$editor.session.getDocument().insertInLine({row:e,column:f+1},Array(l+1).join(" ")+" "),this.$editor.session.getDocument().removeInLine(e,f,f+1),r+=l),l<0&&p>=-l&&(this.$editor.session.getDocument().removeInLine(e,f+l,f),r+=l)}},this.$izip_longest=function(e){if(!e[0])return[];var t=e[0].length,n=e.length;for(var r=1;rt&&(t=i)}var s=[];for(var o=0;o=t.length?t.length:e.length,r=[];for(var i=0;i-1)continue;var s=this.$findCellWidthsForBlock(i),o=this.$setBlockCellWidthsToMax(s.cellWidths),u=s.firstRow;for(var a=0,f=o.length;a=0){n=this.$cellWidthsForRow(r);if(n.length==0)break;t.unshift(n),r--}var i=r+1;r=e;var s=this.$editor.session.getLength();while(r0&&(this.$editor.session.getDocument().insertInLine({row:e,column:f+1},Array(l+1).join(" ")+" "),this.$editor.session.getDocument().removeInLine(e,f,f+1),r+=l),l<0&&p>=-l&&(this.$editor.session.getDocument().removeInLine(e,f+l,f),r+=l)}},this.$izip_longest=function(e){if(!e[0])return[];var t=e[0].length,n=e.length;for(var r=1;rt&&(t=i)}var s=[];for(var o=0;o=t.length?t.length:e.length,r=[];for(var i=0;i"a"})),[e]}},{regex:/}/,onMatch:function(e,t,n){return[n.length?n.shift():e]}},{regex:/\$(?:\d+|\w+)/,onMatch:e},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(t,n,r){var i=e(t.substr(1),n,r);return r.unshift(i[0]),i},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+t("\\|")+"*\\|",onMatch:function(e,t,n){n[0].choices=e.slice(1,-1).split(",")},next:"start"},{regex:"/("+t("/")+"+)/(?:("+t("/")+"*)/)(\\w*):?",onMatch:function(e,t,n){var r=n[0];return r.fmtString=e,e=this.splitRegex.exec(e),r.guard=e[1],r.fmt=e[2],r.flag=e[3],""},next:"start"},{regex:"`"+t("`")+"*`",onMatch:function(e,t,n){return n[0].code=e.splice(1,-1),""},next:"start"},{regex:"\\?",onMatch:function(e,t,n){n[0]&&(n[0].expectIf=!0)},next:"start"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:"/("+t("/")+"+)/",token:"regex"},{regex:"",onMatch:function(e,t,n){n.inFormatString=!0},next:"start"}]}),c.prototype.getTokenizer=function(){return c.$tokenizer},c.$tokenizer},this.tokenizeTmSnippet=function(e,t){return this.getTokenizer().getLineTokens(e,t).tokens.map(function(e){return e.value||e})},this.$getDefaultValue=function(e,t){if(/^[A-Z]\d+$/.test(t)){var n=t.substr(1);return(this.variables[t[0]+"__"]||{})[n]}if(/^\d+$/.test(t))return(this.variables.__||{})[t];t=t.replace(/^TM_/,"");if(!e)return;var r=e.session;switch(t){case"CURRENT_WORD":var i=r.getWordRange();case"SELECTION":case"SELECTED_TEXT":return r.getTextRange(i);case"CURRENT_LINE":return r.getLine(e.getCursorPosition().row);case"PREV_LINE":return r.getLine(e.getCursorPosition().row-1);case"LINE_INDEX":return e.getCursorPosition().column;case"LINE_NUMBER":return e.getCursorPosition().row+1;case"SOFT_TABS":return r.getUseSoftTabs()?"YES":"NO";case"TAB_SIZE":return r.getTabSize();case"FILENAME":case"FILEPATH":return"";case"FULLNAME":return"Ace"}},this.variables={},this.getVariableValue=function(e,t){return this.variables.hasOwnProperty(t)?this.variables[t](e,t)||"":this.$getDefaultValue(e,t)||""},this.tmStrFormat=function(e,t,n){var r=t.flag||"",i=t.guard;i=new RegExp(i,r.replace(/[^gi]/,""));var s=this.tokenizeTmSnippet(t.fmt,"formatString"),o=this,u=e.replace(i,function(){o.variables.__=arguments;var e=o.resolveVariables(s,n),t="E";for(var r=0;r=0&&s.splice(o,1)}}var n=this.snippetMap,r=this.snippetNameMap;e.content?i(e):Array.isArray(e)&&e.forEach(i)},this.parseSnippetFile=function(e){e=e.replace(/\r/g,"");var t=[],n={},r=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm,i;while(i=r.exec(e)){if(i[1])try{n=JSON.parse(i[1]),t.push(n)}catch(s){}if(i[4])n.content=i[4].replace(/^\t/gm,""),t.push(n),n={};else{var o=i[2],u=i[3];if(o=="regex"){var a=/\/((?:[^\/\\]|\\.)*)|$/g;n.guard=a.exec(u)[1],n.trigger=a.exec(u)[1],n.endTrigger=a.exec(u)[1],n.endGuard=a.exec(u)[1]}else o=="snippet"?(n.tabTrigger=u.match(/^\S*/)[0],n.name||(n.name=u)):n[o]=u}}return t},this.getSnippetByName=function(e,t){var n=this.snippetNameMap,r;return this.getActiveScopes(t).some(function(t){var i=n[t];return i&&(r=i[e]),!!r},this),r}}).call(c.prototype);var h=function(e){if(e.tabstopManager)return e.tabstopManager;e.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=s.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(e)};(function(){this.attach=function(e){this.index=0,this.ranges=[],this.tabstops=[],this.$openTabstops=null,this.selectedTabstop=null,this.editor=e,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges=null,this.tabstops=null,this.selectedTabstop=null,this.editor.removeListener("change",this.$onChange),this.editor.removeListener("changeSelection",this.$onChangeSelection),this.editor.removeListener("changeSession",this.$onChangeSession),this.editor.commands.removeListener("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.editor=null},this.onChange=function(e){var t=e,n=e.action[0]=="r",r=e.start,i=e.end,s=r.row,o=i.row,u=o-s,a=i.column-r.column;n&&(u=-u,a=-a);if(!this.$inChange&&n){var f=this.selectedTabstop,c=f&&!f.some(function(e){return l(e.start,r)<=0&&l(e.end,i)>=0});if(c)return this.detach()}var h=this.ranges;for(var p=0;p0){this.removeRange(d),p--;continue}d.start.row==s&&d.start.column>r.column&&(d.start.column+=a),d.end.row==s&&d.end.column>=r.column&&(d.end.column+=a),d.start.row>=s&&(d.start.row+=u),d.end.row>=s&&(d.end.row+=u),l(d.start,d.end)>0&&this.removeRange(d)}h.length||this.detach()},this.updateLinkedFields=function(){var e=this.selectedTabstop;if(!e||!e.hasLinkedRanges)return;this.$inChange=!0;var n=this.editor.session,r=n.getTextRange(e.firstNonLinked);for(var i=e.length;i--;){var s=e[i];if(!s.linked)continue;var o=t.snippetManager.tmStrFormat(r,s.original);n.replace(s,o)}this.$inChange=!1},this.onAfterExec=function(e){e.command&&!e.command.readOnly&&this.updateLinkedFields()},this.onChangeSelection=function(){if(!this.editor)return;var e=this.editor.selection.lead,t=this.editor.selection.anchor,n=this.editor.selection.isEmpty();for(var r=this.ranges.length;r--;){if(this.ranges[r].linked)continue;var i=this.ranges[r].contains(e.row,e.column),s=n||this.ranges[r].contains(t.row,t.column);if(i&&s)return}this.detach()},this.onChangeSession=function(){this.detach()},this.tabNext=function(e){var t=this.tabstops.length,n=this.index+(e||1);n=Math.min(Math.max(n,1),t),n==t&&(n=0),this.selectTabstop(n),n===0&&this.detach()},this.selectTabstop=function(e){this.$openTabstops=null;var t=this.tabstops[this.index];t&&this.addTabstopMarkers(t),this.index=e,t=this.tabstops[this.index];if(!t||!t.length)return;this.selectedTabstop=t;if(!this.editor.inVirtualSelectionMode){var n=this.editor.multiSelect;n.toSingleRange(t.firstNonLinked.clone());for(var r=t.length;r--;){if(t.hasLinkedRanges&&t[r].linked)continue;n.addRange(t[r].clone(),!0)}n.ranges[0]&&n.addRange(n.ranges[0].clone())}else this.editor.selection.setRange(t.firstNonLinked);this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.addTabstops=function(e,t,n){this.$openTabstops||(this.$openTabstops=[]);if(!e[0]){var r=o.fromPoints(n,n);v(r.start,t),v(r.end,t),e[0]=[r],e[0].index=0}var i=this.index,s=[i+1,0],u=this.ranges;e.forEach(function(e,n){var r=this.$openTabstops[n]||e;for(var i=e.length;i--;){var a=e[i],f=o.fromPoints(a.start,a.end||a.start);d(f.start,t),d(f.end,t),f.original=a,f.tabstop=r,u.push(f),r!=e?r.unshift(f):r[i]=f,a.fmtString?(f.linked=!0,r.hasLinkedRanges=!0):r.firstNonLinked||(r.firstNonLinked=f)}r.firstNonLinked||(r.hasLinkedRanges=!1),r===e&&(s.push(r),this.$openTabstops[n]=r),this.addTabstopMarkers(r)},this),s.length>2&&(this.tabstops.length&&s.push(s.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,s))},this.addTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){e.markerId||(e.markerId=t.addMarker(e,"ace_snippet-marker","text"))})},this.removeTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){t.removeMarker(e.markerId),e.markerId=null})},this.removeRange=function(e){var t=e.tabstop.indexOf(e);e.tabstop.splice(t,1),t=this.ranges.indexOf(e),this.ranges.splice(t,1),this.editor.session.removeMarker(e.markerId),e.tabstop.length||(t=this.tabstops.indexOf(e.tabstop),t!=-1&&this.tabstops.splice(t,1),this.tabstops.length||this.detach())},this.keyboardHandler=new a,this.keyboardHandler.bindKeys({Tab:function(e){if(t.snippetManager&&t.snippetManager.expandWithTab(e))return;e.tabstopManager.tabNext(1)},"Shift-Tab":function(e){e.tabstopManager.tabNext(-1)},Esc:function(e){e.tabstopManager.detach()},Return:function(e){return!1}})}).call(h.prototype);var p={};p.onChange=u.prototype.onChange,p.setPosition=function(e,t){this.pos.row=e,this.pos.column=t},p.update=function(e,t,n){this.$insertRight=n,this.pos=e,this.onChange(t)};var d=function(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row},v=function(e,t){e.row==t.row&&(e.column-=t.column),e.row-=t.row};e("./lib/dom").importCssString(".ace_snippet-marker { -moz-box-sizing: border-box; box-sizing: border-box; background: rgba(194, 193, 208, 0.09); border: 1px dotted rgba(211, 208, 235, 0.62); position: absolute;}"),t.snippetManager=new c;var m=e("./editor").Editor;(function(){this.insertSnippet=function(e,n){return t.snippetManager.insertSnippet(this,e,n)},this.expandSnippet=function(e){return t.snippetManager.expandWithTab(this,e)}}).call(m.prototype)}),ace.define("ace/ext/emmet",["require","exports","module","ace/keyboard/hash_handler","ace/editor","ace/snippets","ace/range","resources","resources","range","tabStops","resources","utils","actions","ace/config","ace/config"],function(e,t,n){"use strict";function f(){}var r=e("ace/keyboard/hash_handler").HashHandler,i=e("ace/editor").Editor,s=e("ace/snippets").snippetManager,o=e("ace/range").Range,u,a;f.prototype={setupContext:function(e){this.ace=e,this.indentation=e.session.getTabString(),u||(u=window.emmet),u.require("resources").setVariable("indentation",this.indentation),this.$syntax=null,this.$syntax=this.getSyntax()},getSelectionRange:function(){var e=this.ace.getSelectionRange(),t=this.ace.session.doc;return{start:t.positionToIndex(e.start),end:t.positionToIndex(e.end)}},createSelection:function(e,t){var n=this.ace.session.doc;this.ace.selection.setRange({start:n.indexToPosition(e),end:n.indexToPosition(t)})},getCurrentLineRange:function(){var e=this.ace,t=e.getCursorPosition().row,n=e.session.getLine(t).length,r=e.session.doc.positionToIndex({row:t,column:0});return{start:r,end:r+n}},getCaretPos:function(){var e=this.ace.getCursorPosition();return this.ace.session.doc.positionToIndex(e)},setCaretPos:function(e){var t=this.ace.session.doc.indexToPosition(e);this.ace.selection.moveToPosition(t)},getCurrentLine:function(){var e=this.ace.getCursorPosition().row;return this.ace.session.getLine(e)},replaceContent:function(e,t,n,r){n==null&&(n=t==null?this.getContent().length:t),t==null&&(t=0);var i=this.ace,u=i.session.doc,a=o.fromPoints(u.indexToPosition(t),u.indexToPosition(n));i.session.remove(a),a.end=a.start,e=this.$updateTabstops(e),s.insertSnippet(i,e)},getContent:function(){return this.ace.getValue()},getSyntax:function(){if(this.$syntax)return this.$syntax;var e=this.ace.session.$modeId.split("/").pop();if(e=="html"||e=="php"){var t=this.ace.getCursorPosition(),n=this.ace.session.getState(t.row);typeof n!="string"&&(n=n[0]),n&&(n=n.split("-"),n.length>1?e=n[0]:e=="php"&&(e="html"))}return e},getProfileName:function(){switch(this.getSyntax()){case"css":return"css";case"xml":case"xsl":return"xml";case"html":var e=u.require("resources").getVariable("profile");return e||(e=this.ace.session.getLines(0,2).join("").search(/]+XHTML/i)!=-1?"xhtml":"html"),e}return"xhtml"},prompt:function(e){return prompt(e)},getSelection:function(){return this.ace.session.getTextRange()},getFilePath:function(){return""},$updateTabstops:function(e){var t=1e3,n=0,r=null,i=u.require("range"),s=u.require("tabStops"),o=u.require("resources").getVocabulary("user"),a={tabstop:function(e){var o=parseInt(e.group,10),u=o===0;u?o=++n:o+=t;var f=e.placeholder;f&&(f=s.processText(f,a));var l="${"+o+(f?":"+f:"")+"}";return u&&(r=i.create(e.start,l)),l},escape:function(e){return e=="$"?"\\$":e=="\\"?"\\\\":e}};return e=s.processText(e,a),o.variables.insert_final_tabstop&&!/\$\{0\}$/.test(e)?e+="${0}":r&&(e=u.require("utils").replaceSubstring(e,"${0}",r)),e}};var l={expand_abbreviation:{mac:"ctrl+alt+e",win:"alt+e"},match_pair_outward:{mac:"ctrl+d",win:"ctrl+,"},match_pair_inward:{mac:"ctrl+j",win:"ctrl+shift+0"},matching_pair:{mac:"ctrl+alt+j",win:"alt+j"},next_edit_point:"alt+right",prev_edit_point:"alt+left",toggle_comment:{mac:"command+/",win:"ctrl+/"},split_join_tag:{mac:"shift+command+'",win:"shift+ctrl+`"},remove_tag:{mac:"command+'",win:"shift+ctrl+;"},evaluate_math_expression:{mac:"shift+command+y",win:"shift+ctrl+y"},increment_number_by_1:"ctrl+up",decrement_number_by_1:"ctrl+down",increment_number_by_01:"alt+up",decrement_number_by_01:"alt+down",increment_number_by_10:{mac:"alt+command+up",win:"shift+alt+up"},decrement_number_by_10:{mac:"alt+command+down",win:"shift+alt+down"},select_next_item:{mac:"shift+command+.",win:"shift+ctrl+."},select_previous_item:{mac:"shift+command+,",win:"shift+ctrl+,"},reflect_css_value:{mac:"shift+command+r",win:"shift+ctrl+r"},encode_decode_data_url:{mac:"shift+ctrl+d",win:"ctrl+'"},expand_abbreviation_with_tab:"Tab",wrap_with_abbreviation:{mac:"shift+ctrl+a",win:"shift+ctrl+a"}},c=new f;t.commands=new r,t.runEmmetCommand=function(e){try{c.setupContext(e);if(c.getSyntax()=="php")return!1;var t=u.require("actions");if(this.action=="expand_abbreviation_with_tab"&&!e.selection.isEmpty())return!1;if(this.action=="wrap_with_abbreviation")return setTimeout(function(){t.run("wrap_with_abbreviation",c)},0);var n=e.selection.lead,r=e.session.getTokenAt(n.row,n.column);if(r&&/\btag\b/.test(r.type))return!1;var i=t.run(this.action,c)}catch(s){e._signal("changeStatus",typeof s=="string"?s:s.message),console.log(s),i=!1}return i};for(var h in l)t.commands.addCommand({name:"emmet:"+h,action:h,bindKey:l[h],exec:t.runEmmetCommand,multiSelectAction:"forEach"});t.updateCommands=function(e,n){n?e.keyBinding.addKeyboardHandler(t.commands):e.keyBinding.removeKeyboardHandler(t.commands)},t.isSupportedMode=function(e){return e&&/css|less|scss|sass|stylus|html|php|twig|ejs|handlebars/.test(e)};var p=function(n,r){var i=r;if(!i)return;var s=t.isSupportedMode(i.session.$modeId);n.enableEmmet===!1&&(s=!1),s&&typeof a=="string"&&e("ace/config").loadModule(a,function(){a=null}),t.updateCommands(i,s)};t.AceEmmetEditor=f,e("ace/config").defineOptions(i.prototype,"editor",{enableEmmet:{set:function(e){this[e?"on":"removeListener"]("changeMode",p),p({enableEmmet:!!e},this)},value:!0}}),t.setCore=function(e){typeof e=="string"?a=e:u=e}}); - (function() { - ace.require(["ace/ext/emmet"], function() {}); - })(); +ace.define("ace/snippets",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/anchor","ace/keyboard/hash_handler","ace/tokenizer","ace/lib/dom","ace/editor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./lib/lang"),o=e("./range").Range,u=e("./anchor").Anchor,a=e("./keyboard/hash_handler").HashHandler,f=e("./tokenizer").Tokenizer,l=o.comparePoints,c=function(){this.snippetMap={},this.snippetNameMap={}};(function(){r.implement(this,i),this.getTokenizer=function(){function e(e,t,n){return e=e.substr(1),/^\d+$/.test(e)&&!n.inFormatString?[{tabstopId:parseInt(e,10)}]:[{text:e}]}function t(e){return"(?:[^\\\\"+e+"]|\\\\.)"}return c.$tokenizer=new f({start:[{regex:/:/,onMatch:function(e,t,n){return n.length&&n[0].expectIf?(n[0].expectIf=!1,n[0].elseBranch=n[0],[n[0]]):":"}},{regex:/\\./,onMatch:function(e,t,n){var r=e[1];return r=="}"&&n.length?e=r:"`$\\".indexOf(r)!=-1?e=r:n.inFormatString&&(r=="n"?e="\n":r=="t"?e="\n":"ulULE".indexOf(r)!=-1&&(e={changeCase:r,local:r>"a"})),[e]}},{regex:/}/,onMatch:function(e,t,n){return[n.length?n.shift():e]}},{regex:/\$(?:\d+|\w+)/,onMatch:e},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(t,n,r){var i=e(t.substr(1),n,r);return r.unshift(i[0]),i},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+t("\\|")+"*\\|",onMatch:function(e,t,n){n[0].choices=e.slice(1,-1).split(",")},next:"start"},{regex:"/("+t("/")+"+)/(?:("+t("/")+"*)/)(\\w*):?",onMatch:function(e,t,n){var r=n[0];return r.fmtString=e,e=this.splitRegex.exec(e),r.guard=e[1],r.fmt=e[2],r.flag=e[3],""},next:"start"},{regex:"`"+t("`")+"*`",onMatch:function(e,t,n){return n[0].code=e.splice(1,-1),""},next:"start"},{regex:"\\?",onMatch:function(e,t,n){n[0]&&(n[0].expectIf=!0)},next:"start"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:"/("+t("/")+"+)/",token:"regex"},{regex:"",onMatch:function(e,t,n){n.inFormatString=!0},next:"start"}]}),c.prototype.getTokenizer=function(){return c.$tokenizer},c.$tokenizer},this.tokenizeTmSnippet=function(e,t){return this.getTokenizer().getLineTokens(e,t).tokens.map(function(e){return e.value||e})},this.$getDefaultValue=function(e,t){if(/^[A-Z]\d+$/.test(t)){var n=t.substr(1);return(this.variables[t[0]+"__"]||{})[n]}if(/^\d+$/.test(t))return(this.variables.__||{})[t];t=t.replace(/^TM_/,"");if(!e)return;var r=e.session;switch(t){case"CURRENT_WORD":var i=r.getWordRange();case"SELECTION":case"SELECTED_TEXT":return r.getTextRange(i);case"CURRENT_LINE":return r.getLine(e.getCursorPosition().row);case"PREV_LINE":return r.getLine(e.getCursorPosition().row-1);case"LINE_INDEX":return e.getCursorPosition().column;case"LINE_NUMBER":return e.getCursorPosition().row+1;case"SOFT_TABS":return r.getUseSoftTabs()?"YES":"NO";case"TAB_SIZE":return r.getTabSize();case"FILENAME":case"FILEPATH":return"";case"FULLNAME":return"Ace"}},this.variables={},this.getVariableValue=function(e,t){return this.variables.hasOwnProperty(t)?this.variables[t](e,t)||"":this.$getDefaultValue(e,t)||""},this.tmStrFormat=function(e,t,n){var r=t.flag||"",i=t.guard;i=new RegExp(i,r.replace(/[^gi]/,""));var s=this.tokenizeTmSnippet(t.fmt,"formatString"),o=this,u=e.replace(i,function(){o.variables.__=arguments;var e=o.resolveVariables(s,n),t="E";for(var r=0;r=0&&s.splice(o,1)}}var n=this.snippetMap,r=this.snippetNameMap;e.content?i(e):Array.isArray(e)&&e.forEach(i)},this.parseSnippetFile=function(e){e=e.replace(/\r/g,"");var t=[],n={},r=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm,i;while(i=r.exec(e)){if(i[1])try{n=JSON.parse(i[1]),t.push(n)}catch(s){}if(i[4])n.content=i[4].replace(/^\t/gm,""),t.push(n),n={};else{var o=i[2],u=i[3];if(o=="regex"){var a=/\/((?:[^\/\\]|\\.)*)|$/g;n.guard=a.exec(u)[1],n.trigger=a.exec(u)[1],n.endTrigger=a.exec(u)[1],n.endGuard=a.exec(u)[1]}else o=="snippet"?(n.tabTrigger=u.match(/^\S*/)[0],n.name||(n.name=u)):n[o]=u}}return t},this.getSnippetByName=function(e,t){var n=this.snippetNameMap,r;return this.getActiveScopes(t).some(function(t){var i=n[t];return i&&(r=i[e]),!!r},this),r}}).call(c.prototype);var h=function(e){if(e.tabstopManager)return e.tabstopManager;e.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=s.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(e)};(function(){this.attach=function(e){this.index=0,this.ranges=[],this.tabstops=[],this.$openTabstops=null,this.selectedTabstop=null,this.editor=e,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges=null,this.tabstops=null,this.selectedTabstop=null,this.editor.removeListener("change",this.$onChange),this.editor.removeListener("changeSelection",this.$onChangeSelection),this.editor.removeListener("changeSession",this.$onChangeSession),this.editor.commands.removeListener("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.editor=null},this.onChange=function(e){var t=e,n=e.action[0]=="r",r=e.start,i=e.end,s=r.row,o=i.row,u=o-s,a=i.column-r.column;n&&(u=-u,a=-a);if(!this.$inChange&&n){var f=this.selectedTabstop,c=f&&!f.some(function(e){return l(e.start,r)<=0&&l(e.end,i)>=0});if(c)return this.detach()}var h=this.ranges;for(var p=0;p0){this.removeRange(d),p--;continue}d.start.row==s&&d.start.column>r.column&&(d.start.column+=a),d.end.row==s&&d.end.column>=r.column&&(d.end.column+=a),d.start.row>=s&&(d.start.row+=u),d.end.row>=s&&(d.end.row+=u),l(d.start,d.end)>0&&this.removeRange(d)}h.length||this.detach()},this.updateLinkedFields=function(){var e=this.selectedTabstop;if(!e||!e.hasLinkedRanges)return;this.$inChange=!0;var n=this.editor.session,r=n.getTextRange(e.firstNonLinked);for(var i=e.length;i--;){var s=e[i];if(!s.linked)continue;var o=t.snippetManager.tmStrFormat(r,s.original);n.replace(s,o)}this.$inChange=!1},this.onAfterExec=function(e){e.command&&!e.command.readOnly&&this.updateLinkedFields()},this.onChangeSelection=function(){if(!this.editor)return;var e=this.editor.selection.lead,t=this.editor.selection.anchor,n=this.editor.selection.isEmpty();for(var r=this.ranges.length;r--;){if(this.ranges[r].linked)continue;var i=this.ranges[r].contains(e.row,e.column),s=n||this.ranges[r].contains(t.row,t.column);if(i&&s)return}this.detach()},this.onChangeSession=function(){this.detach()},this.tabNext=function(e){var t=this.tabstops.length,n=this.index+(e||1);n=Math.min(Math.max(n,1),t),n==t&&(n=0),this.selectTabstop(n),n===0&&this.detach()},this.selectTabstop=function(e){this.$openTabstops=null;var t=this.tabstops[this.index];t&&this.addTabstopMarkers(t),this.index=e,t=this.tabstops[this.index];if(!t||!t.length)return;this.selectedTabstop=t;if(!this.editor.inVirtualSelectionMode){var n=this.editor.multiSelect;n.toSingleRange(t.firstNonLinked.clone());for(var r=t.length;r--;){if(t.hasLinkedRanges&&t[r].linked)continue;n.addRange(t[r].clone(),!0)}n.ranges[0]&&n.addRange(n.ranges[0].clone())}else this.editor.selection.setRange(t.firstNonLinked);this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.addTabstops=function(e,t,n){this.$openTabstops||(this.$openTabstops=[]);if(!e[0]){var r=o.fromPoints(n,n);v(r.start,t),v(r.end,t),e[0]=[r],e[0].index=0}var i=this.index,s=[i+1,0],u=this.ranges;e.forEach(function(e,n){var r=this.$openTabstops[n]||e;for(var i=e.length;i--;){var a=e[i],f=o.fromPoints(a.start,a.end||a.start);d(f.start,t),d(f.end,t),f.original=a,f.tabstop=r,u.push(f),r!=e?r.unshift(f):r[i]=f,a.fmtString?(f.linked=!0,r.hasLinkedRanges=!0):r.firstNonLinked||(r.firstNonLinked=f)}r.firstNonLinked||(r.hasLinkedRanges=!1),r===e&&(s.push(r),this.$openTabstops[n]=r),this.addTabstopMarkers(r)},this),s.length>2&&(this.tabstops.length&&s.push(s.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,s))},this.addTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){e.markerId||(e.markerId=t.addMarker(e,"ace_snippet-marker","text"))})},this.removeTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){t.removeMarker(e.markerId),e.markerId=null})},this.removeRange=function(e){var t=e.tabstop.indexOf(e);e.tabstop.splice(t,1),t=this.ranges.indexOf(e),this.ranges.splice(t,1),this.editor.session.removeMarker(e.markerId),e.tabstop.length||(t=this.tabstops.indexOf(e.tabstop),t!=-1&&this.tabstops.splice(t,1),this.tabstops.length||this.detach())},this.keyboardHandler=new a,this.keyboardHandler.bindKeys({Tab:function(e){if(t.snippetManager&&t.snippetManager.expandWithTab(e))return;e.tabstopManager.tabNext(1)},"Shift-Tab":function(e){e.tabstopManager.tabNext(-1)},Esc:function(e){e.tabstopManager.detach()},Return:function(e){return!1}})}).call(h.prototype);var p={};p.onChange=u.prototype.onChange,p.setPosition=function(e,t){this.pos.row=e,this.pos.column=t},p.update=function(e,t,n){this.$insertRight=n,this.pos=e,this.onChange(t)};var d=function(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row},v=function(e,t){e.row==t.row&&(e.column-=t.column),e.row-=t.row};e("./lib/dom").importCssString(".ace_snippet-marker { -moz-box-sizing: border-box; box-sizing: border-box; background: rgba(194, 193, 208, 0.09); border: 1px dotted rgba(211, 208, 235, 0.62); position: absolute;}"),t.snippetManager=new c;var m=e("./editor").Editor;(function(){this.insertSnippet=function(e,n){return t.snippetManager.insertSnippet(this,e,n)},this.expandSnippet=function(e){return t.snippetManager.expandWithTab(this,e)}}).call(m.prototype)}),ace.define("ace/ext/emmet",["require","exports","module","ace/keyboard/hash_handler","ace/editor","ace/snippets","ace/range","resources","resources","range","tabStops","resources","utils","actions","ace/config","ace/config"],function(e,t,n){"use strict";function f(){}var r=e("ace/keyboard/hash_handler").HashHandler,i=e("ace/editor").Editor,s=e("ace/snippets").snippetManager,o=e("ace/range").Range,u,a;f.prototype={setupContext:function(e){this.ace=e,this.indentation=e.session.getTabString(),u||(u=window.emmet),u.require("resources").setVariable("indentation",this.indentation),this.$syntax=null,this.$syntax=this.getSyntax()},getSelectionRange:function(){var e=this.ace.getSelectionRange(),t=this.ace.session.doc;return{start:t.positionToIndex(e.start),end:t.positionToIndex(e.end)}},createSelection:function(e,t){var n=this.ace.session.doc;this.ace.selection.setRange({start:n.indexToPosition(e),end:n.indexToPosition(t)})},getCurrentLineRange:function(){var e=this.ace,t=e.getCursorPosition().row,n=e.session.getLine(t).length,r=e.session.doc.positionToIndex({row:t,column:0});return{start:r,end:r+n}},getCaretPos:function(){var e=this.ace.getCursorPosition();return this.ace.session.doc.positionToIndex(e)},setCaretPos:function(e){var t=this.ace.session.doc.indexToPosition(e);this.ace.selection.moveToPosition(t)},getCurrentLine:function(){var e=this.ace.getCursorPosition().row;return this.ace.session.getLine(e)},replaceContent:function(e,t,n,r){n==null&&(n=t==null?this.getContent().length:t),t==null&&(t=0);var i=this.ace,u=i.session.doc,a=o.fromPoints(u.indexToPosition(t),u.indexToPosition(n));i.session.remove(a),a.end=a.start,e=this.$updateTabstops(e),s.insertSnippet(i,e)},getContent:function(){return this.ace.getValue()},getSyntax:function(){if(this.$syntax)return this.$syntax;var e=this.ace.session.$modeId.split("/").pop();if(e=="html"||e=="php"){var t=this.ace.getCursorPosition(),n=this.ace.session.getState(t.row);typeof n!="string"&&(n=n[0]),n&&(n=n.split("-"),n.length>1?e=n[0]:e=="php"&&(e="html"))}return e},getProfileName:function(){switch(this.getSyntax()){case"css":return"css";case"xml":case"xsl":return"xml";case"html":var e=u.require("resources").getVariable("profile");return e||(e=this.ace.session.getLines(0,2).join("").search(/]+XHTML/i)!=-1?"xhtml":"html"),e}return"xhtml"},prompt:function(e){return prompt(e)},getSelection:function(){return this.ace.session.getTextRange()},getFilePath:function(){return""},$updateTabstops:function(e){var t=1e3,n=0,r=null,i=u.require("range"),s=u.require("tabStops"),o=u.require("resources").getVocabulary("user"),a={tabstop:function(e){var o=parseInt(e.group,10),u=o===0;u?o=++n:o+=t;var f=e.placeholder;f&&(f=s.processText(f,a));var l="${"+o+(f?":"+f:"")+"}";return u&&(r=i.create(e.start,l)),l},escape:function(e){return e=="$"?"\\$":e=="\\"?"\\\\":e}};return e=s.processText(e,a),o.variables.insert_final_tabstop&&!/\$\{0\}$/.test(e)?e+="${0}":r&&(e=u.require("utils").replaceSubstring(e,"${0}",r)),e}};var l={expand_abbreviation:{mac:"ctrl+alt+e",win:"alt+e"},match_pair_outward:{mac:"ctrl+d",win:"ctrl+,"},match_pair_inward:{mac:"ctrl+j",win:"ctrl+shift+0"},matching_pair:{mac:"ctrl+alt+j",win:"alt+j"},next_edit_point:"alt+right",prev_edit_point:"alt+left",toggle_comment:{mac:"command+/",win:"ctrl+/"},split_join_tag:{mac:"shift+command+'",win:"shift+ctrl+`"},remove_tag:{mac:"command+'",win:"shift+ctrl+;"},evaluate_math_expression:{mac:"shift+command+y",win:"shift+ctrl+y"},increment_number_by_1:"ctrl+up",decrement_number_by_1:"ctrl+down",increment_number_by_01:"alt+up",decrement_number_by_01:"alt+down",increment_number_by_10:{mac:"alt+command+up",win:"shift+alt+up"},decrement_number_by_10:{mac:"alt+command+down",win:"shift+alt+down"},select_next_item:{mac:"shift+command+.",win:"shift+ctrl+."},select_previous_item:{mac:"shift+command+,",win:"shift+ctrl+,"},reflect_css_value:{mac:"shift+command+r",win:"shift+ctrl+r"},encode_decode_data_url:{mac:"shift+ctrl+d",win:"ctrl+'"},expand_abbreviation_with_tab:"Tab",wrap_with_abbreviation:{mac:"shift+ctrl+a",win:"shift+ctrl+a"}},c=new f;t.commands=new r,t.runEmmetCommand=function(e){try{c.setupContext(e);if(c.getSyntax()=="php")return!1;var t=u.require("actions");if(this.action=="expand_abbreviation_with_tab"&&!e.selection.isEmpty())return!1;if(this.action=="wrap_with_abbreviation")return setTimeout(function(){t.run("wrap_with_abbreviation",c)},0);var n=e.selection.lead,r=e.session.getTokenAt(n.row,n.column);if(r&&/\btag\b/.test(r.type))return!1;var i=t.run(this.action,c)}catch(s){e._signal("changeStatus",typeof s=="string"?s:s.message),console.log(s),i=!1}return i};for(var h in l)t.commands.addCommand({name:"emmet:"+h,action:h,bindKey:l[h],exec:t.runEmmetCommand,multiSelectAction:"forEach"});t.updateCommands=function(e,n){n?e.keyBinding.addKeyboardHandler(t.commands):e.keyBinding.removeKeyboardHandler(t.commands)},t.isSupportedMode=function(e){return e&&/css|less|scss|sass|stylus|html|php|twig|ejs|handlebars/.test(e)};var p=function(n,r){var i=r;if(!i)return;var s=t.isSupportedMode(i.session.$modeId);n.enableEmmet===!1&&(s=!1),s&&typeof a=="string"&&e("ace/config").loadModule(a,function(){a=null}),t.updateCommands(i,s)};t.AceEmmetEditor=f,e("ace/config").defineOptions(i.prototype,"editor",{enableEmmet:{set:function(e){this[e?"on":"removeListener"]("changeMode",p),p({enableEmmet:!!e},this)},value:!0}}),t.setCore=function(e){typeof e=="string"?a=e:u=e}}); + (function() { + ace.require(["ace/ext/emmet"], function() {}); + })(); \ No newline at end of file diff --git a/ace/ext-error_marker.js b/ace/ext-error_marker.js index dfefa20a..cf549f8d 100644 --- a/ace/ext-error_marker.js +++ b/ace/ext-error_marker.js @@ -1,5 +1,5 @@ -; - (function() { - ace.require(["ace/ext/error_marker"], function() {}); - })(); +; + (function() { + ace.require(["ace/ext/error_marker"], function() {}); + })(); \ No newline at end of file diff --git a/ace/ext-keybinding_menu.js b/ace/ext-keybinding_menu.js index f73cf44c..84f89dd6 100644 --- a/ace/ext-keybinding_menu.js +++ b/ace/ext-keybinding_menu.js @@ -1,5 +1,5 @@ -ace.define("ace/ext/menu_tools/overlay_page",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../../lib/dom"),i="#ace_settingsmenu, #kbshortcutmenu {background-color: #F7F7F7;color: black;box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);padding: 1em 0.5em 2em 1em;overflow: auto;position: absolute;margin: 0;bottom: 0;right: 0;top: 0;z-index: 9991;cursor: default;}.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);background-color: rgba(255, 255, 255, 0.6);color: black;}.ace_optionsMenuEntry:hover {background-color: rgba(100, 100, 100, 0.1);-webkit-transition: all 0.5s;transition: all 0.3s}.ace_closeButton {background: rgba(245, 146, 146, 0.5);border: 1px solid #F48A8A;border-radius: 50%;padding: 7px;position: absolute;right: -8px;top: -8px;z-index: 1000;}.ace_closeButton{background: rgba(245, 146, 146, 0.9);}.ace_optionsMenuKey {color: darkslateblue;font-weight: bold;}.ace_optionsMenuCommand {color: darkcyan;font-weight: normal;}";r.importCssString(i),n.exports.overlayPage=function(t,n,i,s,o,u){function l(e){e.keyCode===27&&a.click()}i=i?"top: "+i+";":"",o=o?"bottom: "+o+";":"",s=s?"right: "+s+";":"",u=u?"left: "+u+";":"";var a=document.createElement("div"),f=document.createElement("div");a.style.cssText="margin: 0; padding: 0; position: fixed; top:0; bottom:0; left:0; right:0;z-index: 9990; background-color: rgba(0, 0, 0, 0.3);",a.addEventListener("click",function(){document.removeEventListener("keydown",l),a.parentNode.removeChild(a),t.focus(),a=null}),document.addEventListener("keydown",l),f.style.cssText=i+s+o+u,f.addEventListener("click",function(e){e.stopPropagation()});var c=r.createElement("div");c.style.position="relative";var h=r.createElement("div");h.className="ace_closeButton",h.addEventListener("click",function(){a.click()}),c.appendChild(h),f.appendChild(c),f.appendChild(n),a.appendChild(f),document.body.appendChild(a),t.blur()}}),ace.define("ace/ext/menu_tools/get_editor_keyboard_shortcuts",["require","exports","module","ace/lib/keys"],function(e,t,n){"use strict";var r=e("../../lib/keys");n.exports.getEditorKeybordShortcuts=function(e){var t=r.KEY_MODS,n=[],i={};return e.keyBinding.$handlers.forEach(function(e){var t=e.commandKeyBinding;for(var r in t){var s=r.replace(/(^|-)\w/g,function(e){return e.toUpperCase()}),o=t[r];Array.isArray(o)||(o=[o]),o.forEach(function(e){typeof e!="string"&&(e=e.name),i[e]?i[e].key+="|"+s:(i[e]={key:s,command:e},n.push(i[e]))})}}),n}}),ace.define("ace/ext/keybinding_menu",["require","exports","module","ace/editor","ace/ext/menu_tools/overlay_page","ace/ext/menu_tools/get_editor_keyboard_shortcuts"],function(e,t,n){"use strict";function i(t){if(!document.getElementById("kbshortcutmenu")){var n=e("./menu_tools/overlay_page").overlayPage,r=e("./menu_tools/get_editor_keyboard_shortcuts").getEditorKeybordShortcuts,i=r(t),s=document.createElement("div"),o=i.reduce(function(e,t){return e+'
'+t.command+" : "+''+t.key+"
"},"");s.id="kbshortcutmenu",s.innerHTML="

Keyboard Shortcuts

"+o+"",n(t,s,"0","0","0",null)}}var r=e("ace/editor").Editor;n.exports.init=function(e){r.prototype.showKeyboardShortcuts=function(){i(this)},e.commands.addCommands([{name:"showKeyboardShortcuts",bindKey:{win:"Ctrl-Alt-h",mac:"Command-Alt-h"},exec:function(e,t){e.showKeyboardShortcuts()}}])}}); - (function() { - ace.require(["ace/ext/keybinding_menu"], function() {}); - })(); +ace.define("ace/ext/menu_tools/overlay_page",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../../lib/dom"),i="#ace_settingsmenu, #kbshortcutmenu {background-color: #F7F7F7;color: black;box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);padding: 1em 0.5em 2em 1em;overflow: auto;position: absolute;margin: 0;bottom: 0;right: 0;top: 0;z-index: 9991;cursor: default;}.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);background-color: rgba(255, 255, 255, 0.6);color: black;}.ace_optionsMenuEntry:hover {background-color: rgba(100, 100, 100, 0.1);-webkit-transition: all 0.5s;transition: all 0.3s}.ace_closeButton {background: rgba(245, 146, 146, 0.5);border: 1px solid #F48A8A;border-radius: 50%;padding: 7px;position: absolute;right: -8px;top: -8px;z-index: 1000;}.ace_closeButton{background: rgba(245, 146, 146, 0.9);}.ace_optionsMenuKey {color: darkslateblue;font-weight: bold;}.ace_optionsMenuCommand {color: darkcyan;font-weight: normal;}";r.importCssString(i),n.exports.overlayPage=function(t,n,i,s,o,u){function l(e){e.keyCode===27&&a.click()}i=i?"top: "+i+";":"",o=o?"bottom: "+o+";":"",s=s?"right: "+s+";":"",u=u?"left: "+u+";":"";var a=document.createElement("div"),f=document.createElement("div");a.style.cssText="margin: 0; padding: 0; position: fixed; top:0; bottom:0; left:0; right:0;z-index: 9990; background-color: rgba(0, 0, 0, 0.3);",a.addEventListener("click",function(){document.removeEventListener("keydown",l),a.parentNode.removeChild(a),t.focus(),a=null}),document.addEventListener("keydown",l),f.style.cssText=i+s+o+u,f.addEventListener("click",function(e){e.stopPropagation()});var c=r.createElement("div");c.style.position="relative";var h=r.createElement("div");h.className="ace_closeButton",h.addEventListener("click",function(){a.click()}),c.appendChild(h),f.appendChild(c),f.appendChild(n),a.appendChild(f),document.body.appendChild(a),t.blur()}}),ace.define("ace/ext/menu_tools/get_editor_keyboard_shortcuts",["require","exports","module","ace/lib/keys"],function(e,t,n){"use strict";var r=e("../../lib/keys");n.exports.getEditorKeybordShortcuts=function(e){var t=r.KEY_MODS,n=[],i={};return e.keyBinding.$handlers.forEach(function(e){var t=e.commandKeyBinding;for(var r in t){var s=r.replace(/(^|-)\w/g,function(e){return e.toUpperCase()}),o=t[r];Array.isArray(o)||(o=[o]),o.forEach(function(e){typeof e!="string"&&(e=e.name),i[e]?i[e].key+="|"+s:(i[e]={key:s,command:e},n.push(i[e]))})}}),n}}),ace.define("ace/ext/keybinding_menu",["require","exports","module","ace/editor","ace/ext/menu_tools/overlay_page","ace/ext/menu_tools/get_editor_keyboard_shortcuts"],function(e,t,n){"use strict";function i(t){if(!document.getElementById("kbshortcutmenu")){var n=e("./menu_tools/overlay_page").overlayPage,r=e("./menu_tools/get_editor_keyboard_shortcuts").getEditorKeybordShortcuts,i=r(t),s=document.createElement("div"),o=i.reduce(function(e,t){return e+'
'+t.command+" : "+''+t.key+"
"},"");s.id="kbshortcutmenu",s.innerHTML="

Keyboard Shortcuts

"+o+"",n(t,s,"0","0","0",null)}}var r=e("ace/editor").Editor;n.exports.init=function(e){r.prototype.showKeyboardShortcuts=function(){i(this)},e.commands.addCommands([{name:"showKeyboardShortcuts",bindKey:{win:"Ctrl-Alt-h",mac:"Command-Alt-h"},exec:function(e,t){e.showKeyboardShortcuts()}}])}}); + (function() { + ace.require(["ace/ext/keybinding_menu"], function() {}); + })(); \ No newline at end of file diff --git a/ace/ext-language_tools.js b/ace/ext-language_tools.js index 8fd9beb0..4e6930fd 100644 --- a/ace/ext-language_tools.js +++ b/ace/ext-language_tools.js @@ -1,5 +1,5 @@ -ace.define("ace/snippets",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/anchor","ace/keyboard/hash_handler","ace/tokenizer","ace/lib/dom","ace/editor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./lib/lang"),o=e("./range").Range,u=e("./anchor").Anchor,a=e("./keyboard/hash_handler").HashHandler,f=e("./tokenizer").Tokenizer,l=o.comparePoints,c=function(){this.snippetMap={},this.snippetNameMap={}};(function(){r.implement(this,i),this.getTokenizer=function(){function e(e,t,n){return e=e.substr(1),/^\d+$/.test(e)&&!n.inFormatString?[{tabstopId:parseInt(e,10)}]:[{text:e}]}function t(e){return"(?:[^\\\\"+e+"]|\\\\.)"}return c.$tokenizer=new f({start:[{regex:/:/,onMatch:function(e,t,n){return n.length&&n[0].expectIf?(n[0].expectIf=!1,n[0].elseBranch=n[0],[n[0]]):":"}},{regex:/\\./,onMatch:function(e,t,n){var r=e[1];return r=="}"&&n.length?e=r:"`$\\".indexOf(r)!=-1?e=r:n.inFormatString&&(r=="n"?e="\n":r=="t"?e="\n":"ulULE".indexOf(r)!=-1&&(e={changeCase:r,local:r>"a"})),[e]}},{regex:/}/,onMatch:function(e,t,n){return[n.length?n.shift():e]}},{regex:/\$(?:\d+|\w+)/,onMatch:e},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(t,n,r){var i=e(t.substr(1),n,r);return r.unshift(i[0]),i},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+t("\\|")+"*\\|",onMatch:function(e,t,n){n[0].choices=e.slice(1,-1).split(",")},next:"start"},{regex:"/("+t("/")+"+)/(?:("+t("/")+"*)/)(\\w*):?",onMatch:function(e,t,n){var r=n[0];return r.fmtString=e,e=this.splitRegex.exec(e),r.guard=e[1],r.fmt=e[2],r.flag=e[3],""},next:"start"},{regex:"`"+t("`")+"*`",onMatch:function(e,t,n){return n[0].code=e.splice(1,-1),""},next:"start"},{regex:"\\?",onMatch:function(e,t,n){n[0]&&(n[0].expectIf=!0)},next:"start"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:"/("+t("/")+"+)/",token:"regex"},{regex:"",onMatch:function(e,t,n){n.inFormatString=!0},next:"start"}]}),c.prototype.getTokenizer=function(){return c.$tokenizer},c.$tokenizer},this.tokenizeTmSnippet=function(e,t){return this.getTokenizer().getLineTokens(e,t).tokens.map(function(e){return e.value||e})},this.$getDefaultValue=function(e,t){if(/^[A-Z]\d+$/.test(t)){var n=t.substr(1);return(this.variables[t[0]+"__"]||{})[n]}if(/^\d+$/.test(t))return(this.variables.__||{})[t];t=t.replace(/^TM_/,"");if(!e)return;var r=e.session;switch(t){case"CURRENT_WORD":var i=r.getWordRange();case"SELECTION":case"SELECTED_TEXT":return r.getTextRange(i);case"CURRENT_LINE":return r.getLine(e.getCursorPosition().row);case"PREV_LINE":return r.getLine(e.getCursorPosition().row-1);case"LINE_INDEX":return e.getCursorPosition().column;case"LINE_NUMBER":return e.getCursorPosition().row+1;case"SOFT_TABS":return r.getUseSoftTabs()?"YES":"NO";case"TAB_SIZE":return r.getTabSize();case"FILENAME":case"FILEPATH":return"";case"FULLNAME":return"Ace"}},this.variables={},this.getVariableValue=function(e,t){return this.variables.hasOwnProperty(t)?this.variables[t](e,t)||"":this.$getDefaultValue(e,t)||""},this.tmStrFormat=function(e,t,n){var r=t.flag||"",i=t.guard;i=new RegExp(i,r.replace(/[^gi]/,""));var s=this.tokenizeTmSnippet(t.fmt,"formatString"),o=this,u=e.replace(i,function(){o.variables.__=arguments;var e=o.resolveVariables(s,n),t="E";for(var r=0;r=0&&s.splice(o,1)}}var n=this.snippetMap,r=this.snippetNameMap;e.content?i(e):Array.isArray(e)&&e.forEach(i)},this.parseSnippetFile=function(e){e=e.replace(/\r/g,"");var t=[],n={},r=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm,i;while(i=r.exec(e)){if(i[1])try{n=JSON.parse(i[1]),t.push(n)}catch(s){}if(i[4])n.content=i[4].replace(/^\t/gm,""),t.push(n),n={};else{var o=i[2],u=i[3];if(o=="regex"){var a=/\/((?:[^\/\\]|\\.)*)|$/g;n.guard=a.exec(u)[1],n.trigger=a.exec(u)[1],n.endTrigger=a.exec(u)[1],n.endGuard=a.exec(u)[1]}else o=="snippet"?(n.tabTrigger=u.match(/^\S*/)[0],n.name||(n.name=u)):n[o]=u}}return t},this.getSnippetByName=function(e,t){var n=this.snippetNameMap,r;return this.getActiveScopes(t).some(function(t){var i=n[t];return i&&(r=i[e]),!!r},this),r}}).call(c.prototype);var h=function(e){if(e.tabstopManager)return e.tabstopManager;e.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=s.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(e)};(function(){this.attach=function(e){this.index=0,this.ranges=[],this.tabstops=[],this.$openTabstops=null,this.selectedTabstop=null,this.editor=e,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges=null,this.tabstops=null,this.selectedTabstop=null,this.editor.removeListener("change",this.$onChange),this.editor.removeListener("changeSelection",this.$onChangeSelection),this.editor.removeListener("changeSession",this.$onChangeSession),this.editor.commands.removeListener("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.editor=null},this.onChange=function(e){var t=e,n=e.action[0]=="r",r=e.start,i=e.end,s=r.row,o=i.row,u=o-s,a=i.column-r.column;n&&(u=-u,a=-a);if(!this.$inChange&&n){var f=this.selectedTabstop,c=f&&!f.some(function(e){return l(e.start,r)<=0&&l(e.end,i)>=0});if(c)return this.detach()}var h=this.ranges;for(var p=0;p0){this.removeRange(d),p--;continue}d.start.row==s&&d.start.column>r.column&&(d.start.column+=a),d.end.row==s&&d.end.column>=r.column&&(d.end.column+=a),d.start.row>=s&&(d.start.row+=u),d.end.row>=s&&(d.end.row+=u),l(d.start,d.end)>0&&this.removeRange(d)}h.length||this.detach()},this.updateLinkedFields=function(){var e=this.selectedTabstop;if(!e||!e.hasLinkedRanges)return;this.$inChange=!0;var n=this.editor.session,r=n.getTextRange(e.firstNonLinked);for(var i=e.length;i--;){var s=e[i];if(!s.linked)continue;var o=t.snippetManager.tmStrFormat(r,s.original);n.replace(s,o)}this.$inChange=!1},this.onAfterExec=function(e){e.command&&!e.command.readOnly&&this.updateLinkedFields()},this.onChangeSelection=function(){if(!this.editor)return;var e=this.editor.selection.lead,t=this.editor.selection.anchor,n=this.editor.selection.isEmpty();for(var r=this.ranges.length;r--;){if(this.ranges[r].linked)continue;var i=this.ranges[r].contains(e.row,e.column),s=n||this.ranges[r].contains(t.row,t.column);if(i&&s)return}this.detach()},this.onChangeSession=function(){this.detach()},this.tabNext=function(e){var t=this.tabstops.length,n=this.index+(e||1);n=Math.min(Math.max(n,1),t),n==t&&(n=0),this.selectTabstop(n),n===0&&this.detach()},this.selectTabstop=function(e){this.$openTabstops=null;var t=this.tabstops[this.index];t&&this.addTabstopMarkers(t),this.index=e,t=this.tabstops[this.index];if(!t||!t.length)return;this.selectedTabstop=t;if(!this.editor.inVirtualSelectionMode){var n=this.editor.multiSelect;n.toSingleRange(t.firstNonLinked.clone());for(var r=t.length;r--;){if(t.hasLinkedRanges&&t[r].linked)continue;n.addRange(t[r].clone(),!0)}n.ranges[0]&&n.addRange(n.ranges[0].clone())}else this.editor.selection.setRange(t.firstNonLinked);this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.addTabstops=function(e,t,n){this.$openTabstops||(this.$openTabstops=[]);if(!e[0]){var r=o.fromPoints(n,n);v(r.start,t),v(r.end,t),e[0]=[r],e[0].index=0}var i=this.index,s=[i+1,0],u=this.ranges;e.forEach(function(e,n){var r=this.$openTabstops[n]||e;for(var i=e.length;i--;){var a=e[i],f=o.fromPoints(a.start,a.end||a.start);d(f.start,t),d(f.end,t),f.original=a,f.tabstop=r,u.push(f),r!=e?r.unshift(f):r[i]=f,a.fmtString?(f.linked=!0,r.hasLinkedRanges=!0):r.firstNonLinked||(r.firstNonLinked=f)}r.firstNonLinked||(r.hasLinkedRanges=!1),r===e&&(s.push(r),this.$openTabstops[n]=r),this.addTabstopMarkers(r)},this),s.length>2&&(this.tabstops.length&&s.push(s.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,s))},this.addTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){e.markerId||(e.markerId=t.addMarker(e,"ace_snippet-marker","text"))})},this.removeTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){t.removeMarker(e.markerId),e.markerId=null})},this.removeRange=function(e){var t=e.tabstop.indexOf(e);e.tabstop.splice(t,1),t=this.ranges.indexOf(e),this.ranges.splice(t,1),this.editor.session.removeMarker(e.markerId),e.tabstop.length||(t=this.tabstops.indexOf(e.tabstop),t!=-1&&this.tabstops.splice(t,1),this.tabstops.length||this.detach())},this.keyboardHandler=new a,this.keyboardHandler.bindKeys({Tab:function(e){if(t.snippetManager&&t.snippetManager.expandWithTab(e))return;e.tabstopManager.tabNext(1)},"Shift-Tab":function(e){e.tabstopManager.tabNext(-1)},Esc:function(e){e.tabstopManager.detach()},Return:function(e){return!1}})}).call(h.prototype);var p={};p.onChange=u.prototype.onChange,p.setPosition=function(e,t){this.pos.row=e,this.pos.column=t},p.update=function(e,t,n){this.$insertRight=n,this.pos=e,this.onChange(t)};var d=function(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row},v=function(e,t){e.row==t.row&&(e.column-=t.column),e.row-=t.row};e("./lib/dom").importCssString(".ace_snippet-marker { -moz-box-sizing: border-box; box-sizing: border-box; background: rgba(194, 193, 208, 0.09); border: 1px dotted rgba(211, 208, 235, 0.62); position: absolute;}"),t.snippetManager=new c;var m=e("./editor").Editor;(function(){this.insertSnippet=function(e,n){return t.snippetManager.insertSnippet(this,e,n)},this.expandSnippet=function(e){return t.snippetManager.expandWithTab(this,e)}}).call(m.prototype)}),ace.define("ace/autocomplete/popup",["require","exports","module","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../virtual_renderer").VirtualRenderer,i=e("../editor").Editor,s=e("../range").Range,o=e("../lib/event"),u=e("../lib/lang"),a=e("../lib/dom"),f=function(e){var t=new r(e);t.$maxLines=4;var n=new i(t);return n.setHighlightActiveLine(!1),n.setShowPrintMargin(!1),n.renderer.setShowGutter(!1),n.renderer.setHighlightGutterLine(!1),n.$mouseHandler.$focusWaitTimout=0,n.$highlightTagPending=!0,n},l=function(e){var t=a.createElement("div"),n=new f(t);e&&e.appendChild(t),t.style.display="none",n.renderer.content.style.cursor="default",n.renderer.setStyle("ace_autocomplete"),n.setOption("displayIndentGuides",!1),n.setOption("dragDelay",150);var r=function(){};n.focus=r,n.$isFocused=!0,n.renderer.$cursorLayer.restartTimer=r,n.renderer.$cursorLayer.element.style.opacity=0,n.renderer.$maxLines=8,n.renderer.$keepTextAreaAtCursor=!1,n.setHighlightActiveLine(!1),n.session.highlight(""),n.session.$searchHighlight.clazz="ace_highlight-marker",n.on("mousedown",function(e){var t=e.getDocumentPosition();n.selection.moveToPosition(t),c.start.row=c.end.row=t.row,e.stop()});var i,l=new s(-1,0,-1,Infinity),c=new s(-1,0,-1,Infinity);c.id=n.session.addMarker(c,"ace_active-line","fullLine"),n.setSelectOnHover=function(e){e?l.id&&(n.session.removeMarker(l.id),l.id=null):l.id=n.session.addMarker(l,"ace_line-hover","fullLine")},n.setSelectOnHover(!1),n.on("mousemove",function(e){if(!i){i=e;return}if(i.x==e.x&&i.y==e.y)return;i=e,i.scrollTop=n.renderer.scrollTop;var t=i.getDocumentPosition().row;l.start.row!=t&&(l.id||n.setRow(t),p(t))}),n.renderer.on("beforeRender",function(){if(i&&l.start.row!=-1){i.$pos=null;var e=i.getDocumentPosition().row;l.id||n.setRow(e),p(e,!0)}}),n.renderer.on("afterRender",function(){var e=n.getRow(),t=n.renderer.$textLayer,r=t.element.childNodes[e-t.config.firstRow];if(r==t.selectedNode)return;t.selectedNode&&a.removeCssClass(t.selectedNode,"ace_selected"),t.selectedNode=r,r&&a.addCssClass(r,"ace_selected")});var h=function(){p(-1)},p=function(e,t){e!==l.start.row&&(l.start.row=l.end.row=e,t||n.session._emit("changeBackMarker"),n._emit("changeHoverMarker"))};n.getHoveredRow=function(){return l.start.row},o.addListener(n.container,"mouseout",h),n.on("hide",h),n.on("changeSelection",h),n.session.doc.getLength=function(){return n.data.length},n.session.doc.getLine=function(e){var t=n.data[e];return typeof t=="string"?t:t&&t.value||""};var d=n.session.bgTokenizer;return d.$tokenizeRow=function(e){var t=n.data[e],r=[];if(!t)return r;typeof t=="string"&&(t={value:t}),t.caption||(t.caption=t.value||t.name);var i=-1,s,o;for(var u=0;ua-2&&(f=f.substr(0,a-t.caption.length-3)+"\u2026"),r.push({type:"rightAlignedText",value:f})}return r},d.$updateOnChange=r,d.start=r,n.session.$computeWidth=function(){return this.screenWidth=0},n.$blockScrolling=Infinity,n.isOpen=!1,n.isTopdown=!1,n.data=[],n.setData=function(e){n.setValue(u.stringRepeat("\n",e.length),-1),n.data=e||[],n.setRow(0)},n.getData=function(e){return n.data[e]},n.getRow=function(){return c.start.row},n.setRow=function(e){e=Math.max(-1,Math.min(this.data.length,e)),c.start.row!=e&&(n.selection.clearSelection(),c.start.row=c.end.row=e||0,n.session._emit("changeBackMarker"),n.moveCursorTo(e||0,0),n.isOpen&&n._signal("select"))},n.on("changeSelection",function(){n.isOpen&&n.setRow(n.selection.lead.row),n.renderer.scrollCursorIntoView()}),n.hide=function(){this.container.style.display="none",this._signal("hide"),n.isOpen=!1},n.show=function(e,t,r){var s=this.container,o=window.innerHeight,u=window.innerWidth,a=this.renderer,f=a.$maxLines*t*1.4,l=e.top+this.$borderSize;l+f>o-t&&!r?(s.style.top="",s.style.bottom=o-l+"px",n.isTopdown=!1):(l+=t,s.style.top=l+"px",s.style.bottom="",n.isTopdown=!0),s.style.display="",this.renderer.$textLayer.checkForSizeChanges();var c=e.left;c+s.offsetWidth>u&&(c=u-s.offsetWidth),s.style.left=c+"px",this._signal("show"),i=null,n.isOpen=!0},n.getTextLeftOffset=function(){return this.$borderSize+this.renderer.$padding+this.$imageSize},n.$imageSize=0,n.$borderSize=1,n};a.importCssString(".ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line { background-color: #CAD6FA; z-index: 1;}.ace_editor.ace_autocomplete .ace_line-hover { border: 1px solid #abbffe; margin-top: -1px; background: rgba(233,233,253,0.4);}.ace_editor.ace_autocomplete .ace_line-hover { position: absolute; z-index: 2;}.ace_editor.ace_autocomplete .ace_scroller { background: none; border: none; box-shadow: none;}.ace_rightAlignedText { color: gray; display: inline-block; position: absolute; right: 4px; text-align: right; z-index: -1;}.ace_editor.ace_autocomplete .ace_completion-highlight{ color: #000; text-shadow: 0 0 0.01em;}.ace_editor.ace_autocomplete { width: 280px; z-index: 200000; background: #fbfbfb; color: #444; border: 1px lightgray solid; position: fixed; box-shadow: 2px 3px 5px rgba(0,0,0,.2); line-height: 1.4;}"),t.AcePopup=l}),ace.define("ace/autocomplete/util",["require","exports","module"],function(e,t,n){"use strict";t.parForEach=function(e,t,n){var r=0,i=e.length;i===0&&n();for(var s=0;s=0;s--){if(!n.test(e[s]))break;i.push(e[s])}return i.reverse().join("")},t.retrieveFollowingIdentifier=function(e,t,n){n=n||r;var i=[];for(var s=t;s=n?-1:t+1;break;case"start":t=0;break;case"end":t=n}this.popup.setRow(t)},this.insertMatch=function(e,t){e||(e=this.popup.getData(this.popup.getRow()));if(!e)return!1;if(e.completer&&e.completer.insertMatch)e.completer.insertMatch(this.editor,e);else{if(this.completions.filterText){var n=this.editor.selection.getAllRanges();for(var r=0,i;i=n[r];r++)i.start.column-=this.completions.filterText.length,this.editor.session.remove(i)}e.snippet?f.insertSnippet(this.editor,e.snippet):this.editor.execCommand("insertstring",e.value||e)}this.detach()},this.commands={Up:function(e){e.completer.goTo("up")},Down:function(e){e.completer.goTo("down")},"Ctrl-Up|Ctrl-Home":function(e){e.completer.goTo("start")},"Ctrl-Down|Ctrl-End":function(e){e.completer.goTo("end")},Esc:function(e){e.completer.detach()},Return:function(e){return e.completer.insertMatch()},"Shift-Return":function(e){e.completer.insertMatch(null,{deleteSuffix:!0})},Tab:function(e){var t=e.completer.insertMatch();if(!!t||!!e.tabstopManager)return t;e.completer.goTo("down")},PageUp:function(e){e.completer.popup.gotoPageUp()},PageDown:function(e){e.completer.popup.gotoPageDown()}},this.gatherCompletions=function(e,t){var n=e.getSession(),r=e.getCursorPosition(),i=n.getLine(r.row),o=s.retrievePrecedingIdentifier(i,r.column);this.base=n.doc.createAnchor(r.row,r.column-o.length),this.base.$insertRight=!0;var u=[],a=e.completers.length;return e.completers.forEach(function(i,f){i.getCompletions(e,n,r,o,function(r,i){r||(u=u.concat(i));var o=e.getCursorPosition(),f=n.getLine(o.row);t(null,{prefix:s.retrievePrecedingIdentifier(f,o.column,i[0]&&i[0].identifierRegex),matches:u,finished:--a===0})})}),!0},this.showPopup=function(e){this.editor&&this.detach(),this.activated=!0,this.editor=e,e.completer!=this&&(e.completer&&e.completer.detach(),e.completer=this),e.on("changeSelection",this.changeListener),e.on("blur",this.blurListener),e.on("mousedown",this.mousedownListener),e.on("mousewheel",this.mousewheelListener),this.updateCompletions()},this.updateCompletions=function(e){if(e&&this.base&&this.completions){var t=this.editor.getCursorPosition(),n=this.editor.session.getTextRange({start:this.base,end:t});if(n==this.completions.filterText)return;this.completions.setFilter(n);if(!this.completions.filtered.length)return this.detach();if(this.completions.filtered.length==1&&this.completions.filtered[0].value==n&&!this.completions.filtered[0].snippet)return this.detach();this.openPopup(this.editor,n,e);return}var r=this.gatherCompletionsId;this.gatherCompletions(this.editor,function(t,n){var i=function(){if(!n.finished)return;return this.detach()}.bind(this),s=n.prefix,o=n&&n.matches;if(!o||!o.length)return i();if(s.indexOf(n.prefix)!==0||r!=this.gatherCompletionsId)return;this.completions=new c(o),this.exactMatch&&(this.completions.exactMatch=!0),this.completions.setFilter(s);var u=this.completions.filtered;if(!u.length)return i();if(u.length==1&&u[0].value==s&&!u[0].snippet)return i();if(this.autoInsert&&u.length==1&&n.finished)return this.insertMatch(u[0]);this.openPopup(this.editor,s,e)}.bind(this))},this.cancelContextMenu=function(){this.editor.$mouseHandler.cancelContextMenu()},this.updateDocTooltip=function(){var e=this.popup,t=e.data,n=t&&(t[e.getHoveredRow()]||t[e.getRow()]),r=null;if(!n||!this.editor||!this.popup.isOpen)return this.hideDocTooltip();this.editor.completers.some(function(e){return e.getDocTooltip&&(r=e.getDocTooltip(n)),r}),r||(r=n),typeof r=="string"&&(r={docText:r});if(!r||!r.docHTML&&!r.docText)return this.hideDocTooltip();this.showDocTooltip(r)},this.showDocTooltip=function(e){this.tooltipNode||(this.tooltipNode=a.createElement("div"),this.tooltipNode.className="ace_tooltip ace_doc-tooltip",this.tooltipNode.style.margin=0,this.tooltipNode.style.pointerEvents="auto",this.tooltipNode.tabIndex=-1,this.tooltipNode.onblur=this.blurListener.bind(this));var t=this.tooltipNode;e.docHTML?t.innerHTML=e.docHTML:e.docText&&(t.textContent=e.docText),t.parentNode||document.body.appendChild(t);var n=this.popup,r=n.container.getBoundingClientRect();t.style.top=n.container.style.top,t.style.bottom=n.container.style.bottom,window.innerWidth-r.right<320?(t.style.right=window.innerWidth-r.left+"px",t.style.left=""):(t.style.left=r.right+1+"px",t.style.right=""),t.style.display="block"},this.hideDocTooltip=function(){this.tooltipTimer.cancel();if(!this.tooltipNode)return;var e=this.tooltipNode;!this.editor.isFocused()&&document.activeElement==e&&this.editor.focus(),this.tooltipNode=null,e.parentNode&&e.parentNode.removeChild(e)}}).call(l.prototype),l.startCommand={name:"startAutocomplete",exec:function(e){e.completer||(e.completer=new l),e.completer.autoInsert=!1,e.completer.autoSelect=!0,e.completer.showPopup(e),e.completer.cancelContextMenu()},bindKey:"Ctrl-Space|Ctrl-Shift-Space|Alt-Space"};var c=function(e,t){this.all=e,this.filtered=e,this.filterText=t||"",this.exactMatch=!1};(function(){this.setFilter=function(e){if(e.length>this.filterText&&e.lastIndexOf(this.filterText,0)===0)var t=this.filtered;else var t=this.all;this.filterText=e,t=this.filterCompletions(t,this.filterText),t=t.sort(function(e,t){return t.exactMatch-e.exactMatch||t.score-e.score});var n=null;t=t.filter(function(e){var t=e.snippet||e.caption||e.value;return t===n?!1:(n=t,!0)}),this.filtered=t},this.filterCompletions=function(e,t){var n=[],r=t.toUpperCase(),i=t.toLowerCase();e:for(var s=0,o;o=e[s];s++){var u=o.value||o.caption||o.snippet;if(!u)continue;var a=-1,f=0,l=0,c,h;if(this.exactMatch){if(t!==u.substr(0,t.length))continue e}else for(var p=0;p=0?v<0||d0&&(a===-1&&(l+=10),l+=h),f|=1<",o.escapeHTML(e.caption),"","
",o.escapeHTML(e.snippet)].join(""))}},c=[l,a,f];t.setCompleters=function(e){c=e||[]},t.addCompleter=function(e){c.push(e)},t.textCompleter=a,t.keyWordCompleter=f,t.snippetCompleter=l;var h={name:"expandSnippet",exec:function(e){return r.expandWithTab(e)},bindKey:"Tab"},p=function(e,t){d(t.session.$mode)},d=function(e){var t=e.$id;r.files||(r.files={}),v(t),e.modes&&e.modes.forEach(d)},v=function(e){if(!e||r.files[e])return;var t=e.replace("mode","snippets");r.files[e]={},s.loadModule(t,function(t){t&&(r.files[e]=t,!t.snippets&&t.snippetText&&(t.snippets=r.parseSnippetFile(t.snippetText)),r.register(t.snippets||[],t.scope),t.includeScopes&&(r.snippetMap[t.scope].includeScopes=t.includeScopes,t.includeScopes.forEach(function(e){v("ace/mode/"+e)})))})},g=function(e){var t=e.editor,n=t.completer&&t.completer.activated;if(e.command.name==="backspace")n&&!m(t)&&t.completer.detach();else if(e.command.name==="insertstring"){var r=m(t);r&&!n&&(t.completer||(t.completer=new i),t.completer.autoInsert=!1,t.completer.showPopup(t))}},y=e("../editor").Editor;e("../config").defineOptions(y.prototype,"editor",{enableBasicAutocompletion:{set:function(e){e?(this.completers||(this.completers=Array.isArray(e)?e:c),this.commands.addCommand(i.startCommand)):this.commands.removeCommand(i.startCommand)},value:!1},enableLiveAutocompletion:{set:function(e){e?(this.completers||(this.completers=Array.isArray(e)?e:c),this.commands.on("afterExec",g)):this.commands.removeListener("afterExec",g)},value:!1},enableSnippets:{set:function(e){e?(this.commands.addCommand(h),this.on("changeMode",p),p(null,this)):(this.commands.removeCommand(h),this.off("changeMode",p))},value:!1}})}); - (function() { - ace.require(["ace/ext/language_tools"], function() {}); - })(); +ace.define("ace/snippets",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/anchor","ace/keyboard/hash_handler","ace/tokenizer","ace/lib/dom","ace/editor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./lib/lang"),o=e("./range").Range,u=e("./anchor").Anchor,a=e("./keyboard/hash_handler").HashHandler,f=e("./tokenizer").Tokenizer,l=o.comparePoints,c=function(){this.snippetMap={},this.snippetNameMap={}};(function(){r.implement(this,i),this.getTokenizer=function(){function e(e,t,n){return e=e.substr(1),/^\d+$/.test(e)&&!n.inFormatString?[{tabstopId:parseInt(e,10)}]:[{text:e}]}function t(e){return"(?:[^\\\\"+e+"]|\\\\.)"}return c.$tokenizer=new f({start:[{regex:/:/,onMatch:function(e,t,n){return n.length&&n[0].expectIf?(n[0].expectIf=!1,n[0].elseBranch=n[0],[n[0]]):":"}},{regex:/\\./,onMatch:function(e,t,n){var r=e[1];return r=="}"&&n.length?e=r:"`$\\".indexOf(r)!=-1?e=r:n.inFormatString&&(r=="n"?e="\n":r=="t"?e="\n":"ulULE".indexOf(r)!=-1&&(e={changeCase:r,local:r>"a"})),[e]}},{regex:/}/,onMatch:function(e,t,n){return[n.length?n.shift():e]}},{regex:/\$(?:\d+|\w+)/,onMatch:e},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(t,n,r){var i=e(t.substr(1),n,r);return r.unshift(i[0]),i},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+t("\\|")+"*\\|",onMatch:function(e,t,n){n[0].choices=e.slice(1,-1).split(",")},next:"start"},{regex:"/("+t("/")+"+)/(?:("+t("/")+"*)/)(\\w*):?",onMatch:function(e,t,n){var r=n[0];return r.fmtString=e,e=this.splitRegex.exec(e),r.guard=e[1],r.fmt=e[2],r.flag=e[3],""},next:"start"},{regex:"`"+t("`")+"*`",onMatch:function(e,t,n){return n[0].code=e.splice(1,-1),""},next:"start"},{regex:"\\?",onMatch:function(e,t,n){n[0]&&(n[0].expectIf=!0)},next:"start"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:"/("+t("/")+"+)/",token:"regex"},{regex:"",onMatch:function(e,t,n){n.inFormatString=!0},next:"start"}]}),c.prototype.getTokenizer=function(){return c.$tokenizer},c.$tokenizer},this.tokenizeTmSnippet=function(e,t){return this.getTokenizer().getLineTokens(e,t).tokens.map(function(e){return e.value||e})},this.$getDefaultValue=function(e,t){if(/^[A-Z]\d+$/.test(t)){var n=t.substr(1);return(this.variables[t[0]+"__"]||{})[n]}if(/^\d+$/.test(t))return(this.variables.__||{})[t];t=t.replace(/^TM_/,"");if(!e)return;var r=e.session;switch(t){case"CURRENT_WORD":var i=r.getWordRange();case"SELECTION":case"SELECTED_TEXT":return r.getTextRange(i);case"CURRENT_LINE":return r.getLine(e.getCursorPosition().row);case"PREV_LINE":return r.getLine(e.getCursorPosition().row-1);case"LINE_INDEX":return e.getCursorPosition().column;case"LINE_NUMBER":return e.getCursorPosition().row+1;case"SOFT_TABS":return r.getUseSoftTabs()?"YES":"NO";case"TAB_SIZE":return r.getTabSize();case"FILENAME":case"FILEPATH":return"";case"FULLNAME":return"Ace"}},this.variables={},this.getVariableValue=function(e,t){return this.variables.hasOwnProperty(t)?this.variables[t](e,t)||"":this.$getDefaultValue(e,t)||""},this.tmStrFormat=function(e,t,n){var r=t.flag||"",i=t.guard;i=new RegExp(i,r.replace(/[^gi]/,""));var s=this.tokenizeTmSnippet(t.fmt,"formatString"),o=this,u=e.replace(i,function(){o.variables.__=arguments;var e=o.resolveVariables(s,n),t="E";for(var r=0;r=0&&s.splice(o,1)}}var n=this.snippetMap,r=this.snippetNameMap;e.content?i(e):Array.isArray(e)&&e.forEach(i)},this.parseSnippetFile=function(e){e=e.replace(/\r/g,"");var t=[],n={},r=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm,i;while(i=r.exec(e)){if(i[1])try{n=JSON.parse(i[1]),t.push(n)}catch(s){}if(i[4])n.content=i[4].replace(/^\t/gm,""),t.push(n),n={};else{var o=i[2],u=i[3];if(o=="regex"){var a=/\/((?:[^\/\\]|\\.)*)|$/g;n.guard=a.exec(u)[1],n.trigger=a.exec(u)[1],n.endTrigger=a.exec(u)[1],n.endGuard=a.exec(u)[1]}else o=="snippet"?(n.tabTrigger=u.match(/^\S*/)[0],n.name||(n.name=u)):n[o]=u}}return t},this.getSnippetByName=function(e,t){var n=this.snippetNameMap,r;return this.getActiveScopes(t).some(function(t){var i=n[t];return i&&(r=i[e]),!!r},this),r}}).call(c.prototype);var h=function(e){if(e.tabstopManager)return e.tabstopManager;e.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=s.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(e)};(function(){this.attach=function(e){this.index=0,this.ranges=[],this.tabstops=[],this.$openTabstops=null,this.selectedTabstop=null,this.editor=e,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges=null,this.tabstops=null,this.selectedTabstop=null,this.editor.removeListener("change",this.$onChange),this.editor.removeListener("changeSelection",this.$onChangeSelection),this.editor.removeListener("changeSession",this.$onChangeSession),this.editor.commands.removeListener("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.editor=null},this.onChange=function(e){var t=e,n=e.action[0]=="r",r=e.start,i=e.end,s=r.row,o=i.row,u=o-s,a=i.column-r.column;n&&(u=-u,a=-a);if(!this.$inChange&&n){var f=this.selectedTabstop,c=f&&!f.some(function(e){return l(e.start,r)<=0&&l(e.end,i)>=0});if(c)return this.detach()}var h=this.ranges;for(var p=0;p0){this.removeRange(d),p--;continue}d.start.row==s&&d.start.column>r.column&&(d.start.column+=a),d.end.row==s&&d.end.column>=r.column&&(d.end.column+=a),d.start.row>=s&&(d.start.row+=u),d.end.row>=s&&(d.end.row+=u),l(d.start,d.end)>0&&this.removeRange(d)}h.length||this.detach()},this.updateLinkedFields=function(){var e=this.selectedTabstop;if(!e||!e.hasLinkedRanges)return;this.$inChange=!0;var n=this.editor.session,r=n.getTextRange(e.firstNonLinked);for(var i=e.length;i--;){var s=e[i];if(!s.linked)continue;var o=t.snippetManager.tmStrFormat(r,s.original);n.replace(s,o)}this.$inChange=!1},this.onAfterExec=function(e){e.command&&!e.command.readOnly&&this.updateLinkedFields()},this.onChangeSelection=function(){if(!this.editor)return;var e=this.editor.selection.lead,t=this.editor.selection.anchor,n=this.editor.selection.isEmpty();for(var r=this.ranges.length;r--;){if(this.ranges[r].linked)continue;var i=this.ranges[r].contains(e.row,e.column),s=n||this.ranges[r].contains(t.row,t.column);if(i&&s)return}this.detach()},this.onChangeSession=function(){this.detach()},this.tabNext=function(e){var t=this.tabstops.length,n=this.index+(e||1);n=Math.min(Math.max(n,1),t),n==t&&(n=0),this.selectTabstop(n),n===0&&this.detach()},this.selectTabstop=function(e){this.$openTabstops=null;var t=this.tabstops[this.index];t&&this.addTabstopMarkers(t),this.index=e,t=this.tabstops[this.index];if(!t||!t.length)return;this.selectedTabstop=t;if(!this.editor.inVirtualSelectionMode){var n=this.editor.multiSelect;n.toSingleRange(t.firstNonLinked.clone());for(var r=t.length;r--;){if(t.hasLinkedRanges&&t[r].linked)continue;n.addRange(t[r].clone(),!0)}n.ranges[0]&&n.addRange(n.ranges[0].clone())}else this.editor.selection.setRange(t.firstNonLinked);this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},this.addTabstops=function(e,t,n){this.$openTabstops||(this.$openTabstops=[]);if(!e[0]){var r=o.fromPoints(n,n);v(r.start,t),v(r.end,t),e[0]=[r],e[0].index=0}var i=this.index,s=[i+1,0],u=this.ranges;e.forEach(function(e,n){var r=this.$openTabstops[n]||e;for(var i=e.length;i--;){var a=e[i],f=o.fromPoints(a.start,a.end||a.start);d(f.start,t),d(f.end,t),f.original=a,f.tabstop=r,u.push(f),r!=e?r.unshift(f):r[i]=f,a.fmtString?(f.linked=!0,r.hasLinkedRanges=!0):r.firstNonLinked||(r.firstNonLinked=f)}r.firstNonLinked||(r.hasLinkedRanges=!1),r===e&&(s.push(r),this.$openTabstops[n]=r),this.addTabstopMarkers(r)},this),s.length>2&&(this.tabstops.length&&s.push(s.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,s))},this.addTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){e.markerId||(e.markerId=t.addMarker(e,"ace_snippet-marker","text"))})},this.removeTabstopMarkers=function(e){var t=this.editor.session;e.forEach(function(e){t.removeMarker(e.markerId),e.markerId=null})},this.removeRange=function(e){var t=e.tabstop.indexOf(e);e.tabstop.splice(t,1),t=this.ranges.indexOf(e),this.ranges.splice(t,1),this.editor.session.removeMarker(e.markerId),e.tabstop.length||(t=this.tabstops.indexOf(e.tabstop),t!=-1&&this.tabstops.splice(t,1),this.tabstops.length||this.detach())},this.keyboardHandler=new a,this.keyboardHandler.bindKeys({Tab:function(e){if(t.snippetManager&&t.snippetManager.expandWithTab(e))return;e.tabstopManager.tabNext(1)},"Shift-Tab":function(e){e.tabstopManager.tabNext(-1)},Esc:function(e){e.tabstopManager.detach()},Return:function(e){return!1}})}).call(h.prototype);var p={};p.onChange=u.prototype.onChange,p.setPosition=function(e,t){this.pos.row=e,this.pos.column=t},p.update=function(e,t,n){this.$insertRight=n,this.pos=e,this.onChange(t)};var d=function(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row},v=function(e,t){e.row==t.row&&(e.column-=t.column),e.row-=t.row};e("./lib/dom").importCssString(".ace_snippet-marker { -moz-box-sizing: border-box; box-sizing: border-box; background: rgba(194, 193, 208, 0.09); border: 1px dotted rgba(211, 208, 235, 0.62); position: absolute;}"),t.snippetManager=new c;var m=e("./editor").Editor;(function(){this.insertSnippet=function(e,n){return t.snippetManager.insertSnippet(this,e,n)},this.expandSnippet=function(e){return t.snippetManager.expandWithTab(this,e)}}).call(m.prototype)}),ace.define("ace/autocomplete/popup",["require","exports","module","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../virtual_renderer").VirtualRenderer,i=e("../editor").Editor,s=e("../range").Range,o=e("../lib/event"),u=e("../lib/lang"),a=e("../lib/dom"),f=function(e){var t=new r(e);t.$maxLines=4;var n=new i(t);return n.setHighlightActiveLine(!1),n.setShowPrintMargin(!1),n.renderer.setShowGutter(!1),n.renderer.setHighlightGutterLine(!1),n.$mouseHandler.$focusWaitTimout=0,n.$highlightTagPending=!0,n},l=function(e){var t=a.createElement("div"),n=new f(t);e&&e.appendChild(t),t.style.display="none",n.renderer.content.style.cursor="default",n.renderer.setStyle("ace_autocomplete"),n.setOption("displayIndentGuides",!1),n.setOption("dragDelay",150);var r=function(){};n.focus=r,n.$isFocused=!0,n.renderer.$cursorLayer.restartTimer=r,n.renderer.$cursorLayer.element.style.opacity=0,n.renderer.$maxLines=8,n.renderer.$keepTextAreaAtCursor=!1,n.setHighlightActiveLine(!1),n.session.highlight(""),n.session.$searchHighlight.clazz="ace_highlight-marker",n.on("mousedown",function(e){var t=e.getDocumentPosition();n.selection.moveToPosition(t),c.start.row=c.end.row=t.row,e.stop()});var i,l=new s(-1,0,-1,Infinity),c=new s(-1,0,-1,Infinity);c.id=n.session.addMarker(c,"ace_active-line","fullLine"),n.setSelectOnHover=function(e){e?l.id&&(n.session.removeMarker(l.id),l.id=null):l.id=n.session.addMarker(l,"ace_line-hover","fullLine")},n.setSelectOnHover(!1),n.on("mousemove",function(e){if(!i){i=e;return}if(i.x==e.x&&i.y==e.y)return;i=e,i.scrollTop=n.renderer.scrollTop;var t=i.getDocumentPosition().row;l.start.row!=t&&(l.id||n.setRow(t),p(t))}),n.renderer.on("beforeRender",function(){if(i&&l.start.row!=-1){i.$pos=null;var e=i.getDocumentPosition().row;l.id||n.setRow(e),p(e,!0)}}),n.renderer.on("afterRender",function(){var e=n.getRow(),t=n.renderer.$textLayer,r=t.element.childNodes[e-t.config.firstRow];if(r==t.selectedNode)return;t.selectedNode&&a.removeCssClass(t.selectedNode,"ace_selected"),t.selectedNode=r,r&&a.addCssClass(r,"ace_selected")});var h=function(){p(-1)},p=function(e,t){e!==l.start.row&&(l.start.row=l.end.row=e,t||n.session._emit("changeBackMarker"),n._emit("changeHoverMarker"))};n.getHoveredRow=function(){return l.start.row},o.addListener(n.container,"mouseout",h),n.on("hide",h),n.on("changeSelection",h),n.session.doc.getLength=function(){return n.data.length},n.session.doc.getLine=function(e){var t=n.data[e];return typeof t=="string"?t:t&&t.value||""};var d=n.session.bgTokenizer;return d.$tokenizeRow=function(e){var t=n.data[e],r=[];if(!t)return r;typeof t=="string"&&(t={value:t}),t.caption||(t.caption=t.value||t.name);var i=-1,s,o;for(var u=0;ua-2&&(f=f.substr(0,a-t.caption.length-3)+"\u2026"),r.push({type:"rightAlignedText",value:f})}return r},d.$updateOnChange=r,d.start=r,n.session.$computeWidth=function(){return this.screenWidth=0},n.$blockScrolling=Infinity,n.isOpen=!1,n.isTopdown=!1,n.data=[],n.setData=function(e){n.setValue(u.stringRepeat("\n",e.length),-1),n.data=e||[],n.setRow(0)},n.getData=function(e){return n.data[e]},n.getRow=function(){return c.start.row},n.setRow=function(e){e=Math.max(-1,Math.min(this.data.length,e)),c.start.row!=e&&(n.selection.clearSelection(),c.start.row=c.end.row=e||0,n.session._emit("changeBackMarker"),n.moveCursorTo(e||0,0),n.isOpen&&n._signal("select"))},n.on("changeSelection",function(){n.isOpen&&n.setRow(n.selection.lead.row),n.renderer.scrollCursorIntoView()}),n.hide=function(){this.container.style.display="none",this._signal("hide"),n.isOpen=!1},n.show=function(e,t,r){var s=this.container,o=window.innerHeight,u=window.innerWidth,a=this.renderer,f=a.$maxLines*t*1.4,l=e.top+this.$borderSize;l+f>o-t&&!r?(s.style.top="",s.style.bottom=o-l+"px",n.isTopdown=!1):(l+=t,s.style.top=l+"px",s.style.bottom="",n.isTopdown=!0),s.style.display="",this.renderer.$textLayer.checkForSizeChanges();var c=e.left;c+s.offsetWidth>u&&(c=u-s.offsetWidth),s.style.left=c+"px",this._signal("show"),i=null,n.isOpen=!0},n.getTextLeftOffset=function(){return this.$borderSize+this.renderer.$padding+this.$imageSize},n.$imageSize=0,n.$borderSize=1,n};a.importCssString(".ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line { background-color: #CAD6FA; z-index: 1;}.ace_editor.ace_autocomplete .ace_line-hover { border: 1px solid #abbffe; margin-top: -1px; background: rgba(233,233,253,0.4);}.ace_editor.ace_autocomplete .ace_line-hover { position: absolute; z-index: 2;}.ace_editor.ace_autocomplete .ace_scroller { background: none; border: none; box-shadow: none;}.ace_rightAlignedText { color: gray; display: inline-block; position: absolute; right: 4px; text-align: right; z-index: -1;}.ace_editor.ace_autocomplete .ace_completion-highlight{ color: #000; text-shadow: 0 0 0.01em;}.ace_editor.ace_autocomplete { width: 280px; z-index: 200000; background: #fbfbfb; color: #444; border: 1px lightgray solid; position: fixed; box-shadow: 2px 3px 5px rgba(0,0,0,.2); line-height: 1.4;}"),t.AcePopup=l}),ace.define("ace/autocomplete/util",["require","exports","module"],function(e,t,n){"use strict";t.parForEach=function(e,t,n){var r=0,i=e.length;i===0&&n();for(var s=0;s=0;s--){if(!n.test(e[s]))break;i.push(e[s])}return i.reverse().join("")},t.retrieveFollowingIdentifier=function(e,t,n){n=n||r;var i=[];for(var s=t;s=n?-1:t+1;break;case"start":t=0;break;case"end":t=n}this.popup.setRow(t)},this.insertMatch=function(e,t){e||(e=this.popup.getData(this.popup.getRow()));if(!e)return!1;if(e.completer&&e.completer.insertMatch)e.completer.insertMatch(this.editor,e);else{if(this.completions.filterText){var n=this.editor.selection.getAllRanges();for(var r=0,i;i=n[r];r++)i.start.column-=this.completions.filterText.length,this.editor.session.remove(i)}e.snippet?f.insertSnippet(this.editor,e.snippet):this.editor.execCommand("insertstring",e.value||e)}this.detach()},this.commands={Up:function(e){e.completer.goTo("up")},Down:function(e){e.completer.goTo("down")},"Ctrl-Up|Ctrl-Home":function(e){e.completer.goTo("start")},"Ctrl-Down|Ctrl-End":function(e){e.completer.goTo("end")},Esc:function(e){e.completer.detach()},Return:function(e){return e.completer.insertMatch()},"Shift-Return":function(e){e.completer.insertMatch(null,{deleteSuffix:!0})},Tab:function(e){var t=e.completer.insertMatch();if(!!t||!!e.tabstopManager)return t;e.completer.goTo("down")},PageUp:function(e){e.completer.popup.gotoPageUp()},PageDown:function(e){e.completer.popup.gotoPageDown()}},this.gatherCompletions=function(e,t){var n=e.getSession(),r=e.getCursorPosition(),i=n.getLine(r.row),o=s.retrievePrecedingIdentifier(i,r.column);this.base=n.doc.createAnchor(r.row,r.column-o.length),this.base.$insertRight=!0;var u=[],a=e.completers.length;return e.completers.forEach(function(i,f){i.getCompletions(e,n,r,o,function(r,i){r||(u=u.concat(i));var o=e.getCursorPosition(),f=n.getLine(o.row);t(null,{prefix:s.retrievePrecedingIdentifier(f,o.column,i[0]&&i[0].identifierRegex),matches:u,finished:--a===0})})}),!0},this.showPopup=function(e){this.editor&&this.detach(),this.activated=!0,this.editor=e,e.completer!=this&&(e.completer&&e.completer.detach(),e.completer=this),e.on("changeSelection",this.changeListener),e.on("blur",this.blurListener),e.on("mousedown",this.mousedownListener),e.on("mousewheel",this.mousewheelListener),this.updateCompletions()},this.updateCompletions=function(e){if(e&&this.base&&this.completions){var t=this.editor.getCursorPosition(),n=this.editor.session.getTextRange({start:this.base,end:t});if(n==this.completions.filterText)return;this.completions.setFilter(n);if(!this.completions.filtered.length)return this.detach();if(this.completions.filtered.length==1&&this.completions.filtered[0].value==n&&!this.completions.filtered[0].snippet)return this.detach();this.openPopup(this.editor,n,e);return}var r=this.gatherCompletionsId;this.gatherCompletions(this.editor,function(t,n){var i=function(){if(!n.finished)return;return this.detach()}.bind(this),s=n.prefix,o=n&&n.matches;if(!o||!o.length)return i();if(s.indexOf(n.prefix)!==0||r!=this.gatherCompletionsId)return;this.completions=new c(o),this.exactMatch&&(this.completions.exactMatch=!0),this.completions.setFilter(s);var u=this.completions.filtered;if(!u.length)return i();if(u.length==1&&u[0].value==s&&!u[0].snippet)return i();if(this.autoInsert&&u.length==1&&n.finished)return this.insertMatch(u[0]);this.openPopup(this.editor,s,e)}.bind(this))},this.cancelContextMenu=function(){this.editor.$mouseHandler.cancelContextMenu()},this.updateDocTooltip=function(){var e=this.popup,t=e.data,n=t&&(t[e.getHoveredRow()]||t[e.getRow()]),r=null;if(!n||!this.editor||!this.popup.isOpen)return this.hideDocTooltip();this.editor.completers.some(function(e){return e.getDocTooltip&&(r=e.getDocTooltip(n)),r}),r||(r=n),typeof r=="string"&&(r={docText:r});if(!r||!r.docHTML&&!r.docText)return this.hideDocTooltip();this.showDocTooltip(r)},this.showDocTooltip=function(e){this.tooltipNode||(this.tooltipNode=a.createElement("div"),this.tooltipNode.className="ace_tooltip ace_doc-tooltip",this.tooltipNode.style.margin=0,this.tooltipNode.style.pointerEvents="auto",this.tooltipNode.tabIndex=-1,this.tooltipNode.onblur=this.blurListener.bind(this));var t=this.tooltipNode;e.docHTML?t.innerHTML=e.docHTML:e.docText&&(t.textContent=e.docText),t.parentNode||document.body.appendChild(t);var n=this.popup,r=n.container.getBoundingClientRect();t.style.top=n.container.style.top,t.style.bottom=n.container.style.bottom,window.innerWidth-r.right<320?(t.style.right=window.innerWidth-r.left+"px",t.style.left=""):(t.style.left=r.right+1+"px",t.style.right=""),t.style.display="block"},this.hideDocTooltip=function(){this.tooltipTimer.cancel();if(!this.tooltipNode)return;var e=this.tooltipNode;!this.editor.isFocused()&&document.activeElement==e&&this.editor.focus(),this.tooltipNode=null,e.parentNode&&e.parentNode.removeChild(e)}}).call(l.prototype),l.startCommand={name:"startAutocomplete",exec:function(e){e.completer||(e.completer=new l),e.completer.autoInsert=!1,e.completer.autoSelect=!0,e.completer.showPopup(e),e.completer.cancelContextMenu()},bindKey:"Ctrl-Space|Ctrl-Shift-Space|Alt-Space"};var c=function(e,t){this.all=e,this.filtered=e,this.filterText=t||"",this.exactMatch=!1};(function(){this.setFilter=function(e){if(e.length>this.filterText&&e.lastIndexOf(this.filterText,0)===0)var t=this.filtered;else var t=this.all;this.filterText=e,t=this.filterCompletions(t,this.filterText),t=t.sort(function(e,t){return t.exactMatch-e.exactMatch||t.score-e.score});var n=null;t=t.filter(function(e){var t=e.snippet||e.caption||e.value;return t===n?!1:(n=t,!0)}),this.filtered=t},this.filterCompletions=function(e,t){var n=[],r=t.toUpperCase(),i=t.toLowerCase();e:for(var s=0,o;o=e[s];s++){var u=o.value||o.caption||o.snippet;if(!u)continue;var a=-1,f=0,l=0,c,h;if(this.exactMatch){if(t!==u.substr(0,t.length))continue e}else for(var p=0;p=0?v<0||d0&&(a===-1&&(l+=10),l+=h),f|=1<",o.escapeHTML(e.caption),"","
",o.escapeHTML(e.snippet)].join(""))}},c=[l,a,f];t.setCompleters=function(e){c=e||[]},t.addCompleter=function(e){c.push(e)},t.textCompleter=a,t.keyWordCompleter=f,t.snippetCompleter=l;var h={name:"expandSnippet",exec:function(e){return r.expandWithTab(e)},bindKey:"Tab"},p=function(e,t){d(t.session.$mode)},d=function(e){var t=e.$id;r.files||(r.files={}),v(t),e.modes&&e.modes.forEach(d)},v=function(e){if(!e||r.files[e])return;var t=e.replace("mode","snippets");r.files[e]={},s.loadModule(t,function(t){t&&(r.files[e]=t,!t.snippets&&t.snippetText&&(t.snippets=r.parseSnippetFile(t.snippetText)),r.register(t.snippets||[],t.scope),t.includeScopes&&(r.snippetMap[t.scope].includeScopes=t.includeScopes,t.includeScopes.forEach(function(e){v("ace/mode/"+e)})))})},g=function(e){var t=e.editor,n=t.completer&&t.completer.activated;if(e.command.name==="backspace")n&&!m(t)&&t.completer.detach();else if(e.command.name==="insertstring"){var r=m(t);r&&!n&&(t.completer||(t.completer=new i),t.completer.autoInsert=!1,t.completer.showPopup(t))}},y=e("../editor").Editor;e("../config").defineOptions(y.prototype,"editor",{enableBasicAutocompletion:{set:function(e){e?(this.completers||(this.completers=Array.isArray(e)?e:c),this.commands.addCommand(i.startCommand)):this.commands.removeCommand(i.startCommand)},value:!1},enableLiveAutocompletion:{set:function(e){e?(this.completers||(this.completers=Array.isArray(e)?e:c),this.commands.on("afterExec",g)):this.commands.removeListener("afterExec",g)},value:!1},enableSnippets:{set:function(e){e?(this.commands.addCommand(h),this.on("changeMode",p),p(null,this)):(this.commands.removeCommand(h),this.off("changeMode",p))},value:!1}})}); + (function() { + ace.require(["ace/ext/language_tools"], function() {}); + })(); \ No newline at end of file diff --git a/ace/ext-linking.js b/ace/ext-linking.js index 69f87918..00bc6a64 100644 --- a/ace/ext-linking.js +++ b/ace/ext-linking.js @@ -1,5 +1,5 @@ -ace.define("ace/ext/linking",["require","exports","module","ace/editor","ace/config"],function(e,t,n){function i(e){var t=e.editor,n=e.getAccelKey();if(n){var t=e.editor,r=e.getDocumentPosition(),i=t.session,s=i.getTokenAt(r.row,r.column);t._emit("linkHover",{position:r,token:s})}}function s(e){var t=e.getAccelKey(),n=e.getButton();if(n==0&&t){var r=e.editor,i=e.getDocumentPosition(),s=r.session,o=s.getTokenAt(i.row,i.column);r._emit("linkClick",{position:i,token:o})}}var r=e("ace/editor").Editor;e("../config").defineOptions(r.prototype,"editor",{enableLinking:{set:function(e){e?(this.on("click",s),this.on("mousemove",i)):(this.off("click",s),this.off("mousemove",i))},value:!1}})}); - (function() { - ace.require(["ace/ext/linking"], function() {}); - })(); +ace.define("ace/ext/linking",["require","exports","module","ace/editor","ace/config"],function(e,t,n){function i(e){var t=e.editor,n=e.getAccelKey();if(n){var t=e.editor,r=e.getDocumentPosition(),i=t.session,s=i.getTokenAt(r.row,r.column);t._emit("linkHover",{position:r,token:s})}}function s(e){var t=e.getAccelKey(),n=e.getButton();if(n==0&&t){var r=e.editor,i=e.getDocumentPosition(),s=r.session,o=s.getTokenAt(i.row,i.column);r._emit("linkClick",{position:i,token:o})}}var r=e("ace/editor").Editor;e("../config").defineOptions(r.prototype,"editor",{enableLinking:{set:function(e){e?(this.on("click",s),this.on("mousemove",i)):(this.off("click",s),this.off("mousemove",i))},value:!1}})}); + (function() { + ace.require(["ace/ext/linking"], function() {}); + })(); \ No newline at end of file diff --git a/ace/ext-modelist.js b/ace/ext-modelist.js index 76c2b80f..4293e500 100644 --- a/ace/ext-modelist.js +++ b/ace/ext-modelist.js @@ -1,5 +1,5 @@ -ace.define("ace/ext/modelist",["require","exports","module"],function(e,t,n){"use strict";function i(e){var t=a.text,n=e.split(/[\/\\]/).pop();for(var i=0;i\s+/g,">"),l=function(e,t,n){var i=r.createElement("div");i.innerHTML=f,this.element=i.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;s.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),s.stopPropagation(e)}),s.addListener(e,"click",function(e){var n=e.target||e.srcElement,r=n.getAttribute("action");r&&t[r]?t[r]():t.$searchBarKb.commands[r]&&t.$searchBarKb.commands[r].exec(t),s.stopPropagation(e)}),s.addCommandKeyListener(e,function(e,n,r){var i=a.keyCodeToString(r),o=t.$searchBarKb.findKeyCommand(n,i);o&&o.exec&&(o.exec(t),s.stopEvent(e))}),this.$onChange=i.delayedCall(function(){t.find(!1,!1)}),s.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),s.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),s.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new u([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new u,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f|Ctrl-H|Command-Option-F":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e[t?"replaceInput":"searchInput"].focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){r.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),r.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),r.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t){var n=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),i=!n&&this.searchInput.value;r.setCssClass(this.searchBox,"ace_nomatch",i),this.editor._emit("findSearchBox",{match:!i}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var e=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),t=!e&&this.searchInput.value;r.setCssClass(this.searchBox,"ace_nomatch",t),this.editor._emit("findSearchBox",{match:!t}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(l.prototype),t.SearchBox=l,t.Search=function(e,t){var n=e.searchBox||new l(e);n.show(e.session.getTextRange(),t)}}),ace.define("ace/ext/old_ie",["require","exports","module","ace/lib/useragent","ace/tokenizer","ace/ext/searchbox","ace/mode/text"],function(require,exports,module){"use strict";function patch(obj,name,regexp,replacement){eval("obj['"+name+"']="+obj[name].toString().replace(regexp,replacement))}var MAX_TOKEN_COUNT=1e3,useragent=require("../lib/useragent"),TokenizerModule=require("../tokenizer");useragent.isIE&&useragent.isIE<10&&window.top.document.compatMode==="BackCompat"&&(useragent.isOldIE=!0);if(typeof document!="undefined"&&!document.documentElement.querySelector){useragent.isOldIE=!0;var qs=function(e,t){if(t.charAt(0)==".")var n=t.slice(1);else var r=t.match(/(\w+)=(\w+)/),i=r&&r[1],s=r&&r[2];for(var o=0;o\s+/g,">"),l=function(e,t,n){var i=r.createElement("div");i.innerHTML=f,this.element=i.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;s.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),s.stopPropagation(e)}),s.addListener(e,"click",function(e){var n=e.target||e.srcElement,r=n.getAttribute("action");r&&t[r]?t[r]():t.$searchBarKb.commands[r]&&t.$searchBarKb.commands[r].exec(t),s.stopPropagation(e)}),s.addCommandKeyListener(e,function(e,n,r){var i=a.keyCodeToString(r),o=t.$searchBarKb.findKeyCommand(n,i);o&&o.exec&&(o.exec(t),s.stopEvent(e))}),this.$onChange=i.delayedCall(function(){t.find(!1,!1)}),s.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),s.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),s.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new u([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new u,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f|Ctrl-H|Command-Option-F":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e[t?"replaceInput":"searchInput"].focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){r.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),r.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),r.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t){var n=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),i=!n&&this.searchInput.value;r.setCssClass(this.searchBox,"ace_nomatch",i),this.editor._emit("findSearchBox",{match:!i}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var e=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),t=!e&&this.searchInput.value;r.setCssClass(this.searchBox,"ace_nomatch",t),this.editor._emit("findSearchBox",{match:!t}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(l.prototype),t.SearchBox=l,t.Search=function(e,t){var n=e.searchBox||new l(e);n.show(e.session.getTextRange(),t)}}),ace.define("ace/ext/old_ie",["require","exports","module","ace/lib/useragent","ace/tokenizer","ace/ext/searchbox","ace/mode/text"],function(require,exports,module){"use strict";function patch(obj,name,regexp,replacement){eval("obj['"+name+"']="+obj[name].toString().replace(regexp,replacement))}var MAX_TOKEN_COUNT=1e3,useragent=require("../lib/useragent"),TokenizerModule=require("../tokenizer");useragent.isIE&&useragent.isIE<10&&window.top.document.compatMode==="BackCompat"&&(useragent.isOldIE=!0);if(typeof document!="undefined"&&!document.documentElement.querySelector){useragent.isOldIE=!0;var qs=function(e,t){if(t.charAt(0)==".")var n=t.slice(1);else var r=t.match(/(\w+)=(\w+)/),i=r&&r[1],s=r&&r[2];for(var o=0;o\s+/g,">"),l=function(e,t,n){var i=r.createElement("div");i.innerHTML=f,this.element=i.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;s.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),s.stopPropagation(e)}),s.addListener(e,"click",function(e){var n=e.target||e.srcElement,r=n.getAttribute("action");r&&t[r]?t[r]():t.$searchBarKb.commands[r]&&t.$searchBarKb.commands[r].exec(t),s.stopPropagation(e)}),s.addCommandKeyListener(e,function(e,n,r){var i=a.keyCodeToString(r),o=t.$searchBarKb.findKeyCommand(n,i);o&&o.exec&&(o.exec(t),s.stopEvent(e))}),this.$onChange=i.delayedCall(function(){t.find(!1,!1)}),s.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),s.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),s.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new u([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new u,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f|Ctrl-H|Command-Option-F":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e[t?"replaceInput":"searchInput"].focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){r.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),r.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),r.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t){var n=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),i=!n&&this.searchInput.value;r.setCssClass(this.searchBox,"ace_nomatch",i),this.editor._emit("findSearchBox",{match:!i}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var e=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),t=!e&&this.searchInput.value;r.setCssClass(this.searchBox,"ace_nomatch",t),this.editor._emit("findSearchBox",{match:!t}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(l.prototype),t.SearchBox=l,t.Search=function(e,t){var n=e.searchBox||new l(e);n.show(e.session.getTextRange(),t)}}); - (function() { - ace.require(["ace/ext/searchbox"], function() {}); - })(); +ace.define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=e("../lib/lang"),s=e("../lib/event"),o=".ace_search {background-color: #ddd;border: 1px solid #cbcbcb;border-top: 0 none;max-width: 325px;overflow: hidden;margin: 0;padding: 4px;padding-right: 6px;padding-bottom: 0;position: absolute;top: 0px;z-index: 99;white-space: normal;}.ace_search.left {border-left: 0 none;border-radius: 0px 0px 5px 0px;left: 0;}.ace_search.right {border-radius: 0px 0px 0px 5px;border-right: 0 none;right: 0;}.ace_search_form, .ace_replace_form {border-radius: 3px;border: 1px solid #cbcbcb;float: left;margin-bottom: 4px;overflow: hidden;}.ace_search_form.ace_nomatch {outline: 1px solid red;}.ace_search_field {background-color: white;border-right: 1px solid #cbcbcb;border: 0 none;-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;float: left;height: 22px;outline: 0;padding: 0 7px;width: 214px;margin: 0;}.ace_searchbtn,.ace_replacebtn {background: #fff;border: 0 none;border-left: 1px solid #dcdcdc;cursor: pointer;float: left;height: 22px;margin: 0;padding: 0;position: relative;}.ace_searchbtn:last-child,.ace_replacebtn:last-child {border-top-right-radius: 3px;border-bottom-right-radius: 3px;}.ace_searchbtn:disabled {background: none;cursor: default;}.ace_searchbtn {background-position: 50% 50%;background-repeat: no-repeat;width: 27px;}.ace_searchbtn.prev {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); }.ace_searchbtn.next {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); }.ace_searchbtn_close {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;border-radius: 50%;border: 0 none;color: #656565;cursor: pointer;float: right;font: 16px/16px Arial;height: 14px;margin: 5px 1px 9px 5px;padding: 0;text-align: center;width: 14px;}.ace_searchbtn_close:hover {background-color: #656565;background-position: 50% 100%;color: white;}.ace_replacebtn.prev {width: 54px}.ace_replacebtn.next {width: 27px}.ace_button {margin-left: 2px;cursor: pointer;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;overflow: hidden;opacity: 0.7;border: 1px solid rgba(100,100,100,0.23);padding: 1px;-moz-box-sizing: border-box;box-sizing: border-box;color: black;}.ace_button:hover {background-color: #eee;opacity:1;}.ace_button:active {background-color: #ddd;}.ace_button.checked {border-color: #3399ff;opacity:1;}.ace_search_options{margin-bottom: 3px;text-align: right;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;}",u=e("../keyboard/hash_handler").HashHandler,a=e("../lib/keys");r.importCssString(o,"ace_searchbox");var f=''.replace(/>\s+/g,">"),l=function(e,t,n){var i=r.createElement("div");i.innerHTML=f,this.element=i.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;s.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),s.stopPropagation(e)}),s.addListener(e,"click",function(e){var n=e.target||e.srcElement,r=n.getAttribute("action");r&&t[r]?t[r]():t.$searchBarKb.commands[r]&&t.$searchBarKb.commands[r].exec(t),s.stopPropagation(e)}),s.addCommandKeyListener(e,function(e,n,r){var i=a.keyCodeToString(r),o=t.$searchBarKb.findKeyCommand(n,i);o&&o.exec&&(o.exec(t),s.stopEvent(e))}),this.$onChange=i.delayedCall(function(){t.find(!1,!1)}),s.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),s.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),s.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new u([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new u,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f|Ctrl-H|Command-Option-F":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e[t?"replaceInput":"searchInput"].focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){r.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),r.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),r.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t){var n=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),i=!n&&this.searchInput.value;r.setCssClass(this.searchBox,"ace_nomatch",i),this.editor._emit("findSearchBox",{match:!i}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var e=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),t=!e&&this.searchInput.value;r.setCssClass(this.searchBox,"ace_nomatch",t),this.editor._emit("findSearchBox",{match:!t}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(l.prototype),t.SearchBox=l,t.Search=function(e,t){var n=e.searchBox||new l(e);n.show(e.session.getTextRange(),t)}}); + (function() { + ace.require(["ace/ext/searchbox"], function() {}); + })(); \ No newline at end of file diff --git a/ace/ext-settings_menu.js b/ace/ext-settings_menu.js index a2158828..fb59f9bf 100644 --- a/ace/ext-settings_menu.js +++ b/ace/ext-settings_menu.js @@ -1,5 +1,5 @@ -ace.define("ace/ext/menu_tools/element_generator",["require","exports","module"],function(e,t,n){"use strict";n.exports.createOption=function(t){var n,r=document.createElement("option");for(n in t)t.hasOwnProperty(n)&&(n==="selected"?r.setAttribute(n,t[n]):r[n]=t[n]);return r},n.exports.createCheckbox=function(t,n,r){var i=document.createElement("input");return i.setAttribute("type","checkbox"),i.setAttribute("id",t),i.setAttribute("name",t),i.setAttribute("value",n),i.setAttribute("class",r),n&&i.setAttribute("checked","checked"),i},n.exports.createInput=function(t,n,r){var i=document.createElement("input");return i.setAttribute("type","text"),i.setAttribute("id",t),i.setAttribute("name",t),i.setAttribute("value",n),i.setAttribute("class",r),i},n.exports.createLabel=function(t,n){var r=document.createElement("label");return r.setAttribute("for",n),r.textContent=t,r},n.exports.createSelection=function(t,r,i){var s=document.createElement("select");return s.setAttribute("id",t),s.setAttribute("name",t),s.setAttribute("class",i),r.forEach(function(e){s.appendChild(n.exports.createOption(e))}),s}}),ace.define("ace/ext/modelist",["require","exports","module"],function(e,t,n){"use strict";function i(e){var t=a.text,n=e.split(/[\/\\]/).pop();for(var i=0;i 0!";if(e==this.$splits)return;if(e>this.$splits){while(this.$splitse)t=this.$editors[this.$splits-1],this.$container.removeChild(t.container),this.$splits--;this.resize()},this.getSplits=function(){return this.$splits},this.getEditor=function(e){return this.$editors[e]},this.getCurrentEditor=function(){return this.$cEditor},this.focus=function(){this.$cEditor.focus()},this.blur=function(){this.$cEditor.blur()},this.setTheme=function(e){this.$editors.forEach(function(t){t.setTheme(e)})},this.setKeyboardHandler=function(e){this.$editors.forEach(function(t){t.setKeyboardHandler(e)})},this.forEach=function(e,t){this.$editors.forEach(e,t)},this.$fontSize="",this.setFontSize=function(e){this.$fontSize=e,this.forEach(function(t){t.setFontSize(e)})},this.$cloneSession=function(e){var t=new a(e.getDocument(),e.getMode()),n=e.getUndoManager();if(n){var r=new l(n,t);t.setUndoManager(r)}return t.$informUndoManager=i.delayedCall(function(){t.$deltas=[]}),t.setTabSize(e.getTabSize()),t.setUseSoftTabs(e.getUseSoftTabs()),t.setOverwrite(e.getOverwrite()),t.setBreakpoints(e.getBreakpoints()),t.setUseWrapMode(e.getUseWrapMode()),t.setUseWorker(e.getUseWorker()),t.setWrapLimitRange(e.$wrapLimitRange.min,e.$wrapLimitRange.max),t.$foldData=e.$cloneFoldData(),t},this.setSession=function(e,t){var n;t==null?n=this.$cEditor:n=this.$editors[t];var r=this.$editors.some(function(t){return t.session===e});return r&&(e=this.$cloneSession(e)),n.setSession(e),e},this.getOrientation=function(){return this.$orientation},this.setOrientation=function(e){if(this.$orientation==e)return;this.$orientation=e,this.resize()},this.resize=function(){var e=this.$container.clientWidth,t=this.$container.clientHeight,n;if(this.$orientation==this.BESIDE){var r=e/this.$splits;for(var i=0;i 0!";if(e==this.$splits)return;if(e>this.$splits){while(this.$splitse)t=this.$editors[this.$splits-1],this.$container.removeChild(t.container),this.$splits--;this.resize()},this.getSplits=function(){return this.$splits},this.getEditor=function(e){return this.$editors[e]},this.getCurrentEditor=function(){return this.$cEditor},this.focus=function(){this.$cEditor.focus()},this.blur=function(){this.$cEditor.blur()},this.setTheme=function(e){this.$editors.forEach(function(t){t.setTheme(e)})},this.setKeyboardHandler=function(e){this.$editors.forEach(function(t){t.setKeyboardHandler(e)})},this.forEach=function(e,t){this.$editors.forEach(e,t)},this.$fontSize="",this.setFontSize=function(e){this.$fontSize=e,this.forEach(function(t){t.setFontSize(e)})},this.$cloneSession=function(e){var t=new a(e.getDocument(),e.getMode()),n=e.getUndoManager();if(n){var r=new l(n,t);t.setUndoManager(r)}return t.$informUndoManager=i.delayedCall(function(){t.$deltas=[]}),t.setTabSize(e.getTabSize()),t.setUseSoftTabs(e.getUseSoftTabs()),t.setOverwrite(e.getOverwrite()),t.setBreakpoints(e.getBreakpoints()),t.setUseWrapMode(e.getUseWrapMode()),t.setUseWorker(e.getUseWorker()),t.setWrapLimitRange(e.$wrapLimitRange.min,e.$wrapLimitRange.max),t.$foldData=e.$cloneFoldData(),t},this.setSession=function(e,t){var n;t==null?n=this.$cEditor:n=this.$editors[t];var r=this.$editors.some(function(t){return t.session===e});return r&&(e=this.$cloneSession(e)),n.setSession(e),e},this.getOrientation=function(){return this.$orientation},this.setOrientation=function(e){if(this.$orientation==e)return;this.$orientation=e,this.resize()},this.resize=function(){var e=this.$container.clientWidth,t=this.$container.clientHeight,n;if(this.$orientation==this.BESIDE){var r=e/this.$splits;for(var i=0;i"),o||l.push(""),f.$renderLine(l,h,!0,!1),l.push("\n");var p="
"+"
"+l.join("")+"
"+"
";return f.destroy(),{css:s+n.cssText,html:p,session:u}},n.exports=f,n.exports.highlight=f}); - (function() { - ace.require(["ace/ext/static_highlight"], function() {}); - })(); +ace.define("ace/ext/static_highlight",["require","exports","module","ace/edit_session","ace/layer/text","ace/config","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../edit_session").EditSession,i=e("../layer/text").Text,s=".ace_static_highlight {font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', 'Droid Sans Mono', monospace;font-size: 12px;white-space: pre-wrap}.ace_static_highlight .ace_gutter {width: 2em;text-align: right;padding: 0 3px 0 0;margin-right: 3px;}.ace_static_highlight.ace_show_gutter .ace_line {padding-left: 2.6em;}.ace_static_highlight .ace_line { position: relative; }.ace_static_highlight .ace_gutter-cell {-moz-user-select: -moz-none;-khtml-user-select: none;-webkit-user-select: none;user-select: none;top: 0;bottom: 0;left: 0;position: absolute;}.ace_static_highlight .ace_gutter-cell:before {content: counter(ace_line, decimal);counter-increment: ace_line;}.ace_static_highlight {counter-reset: ace_line;}",o=e("../config"),u=e("../lib/dom"),a=function(){this.config={}};a.prototype=i.prototype;var f=function(e,t,n){var r=e.className.match(/lang-(\w+)/),i=t.mode||r&&"ace/mode/"+r[1];if(!i)return!1;var s=t.theme||"ace/theme/textmate",o="",a=[];if(e.firstElementChild){var l=0;for(var c=0;c"),o||l.push(""),f.$renderLine(l,h,!0,!1),l.push("\n");var p="
"+"
"+l.join("")+"
"+"
";return f.destroy(),{css:s+n.cssText,html:p,session:u}},n.exports=f,n.exports.highlight=f}); + (function() { + ace.require(["ace/ext/static_highlight"], function() {}); + })(); \ No newline at end of file diff --git a/ace/ext-statusbar.js b/ace/ext-statusbar.js index 398ca3c9..f988b7e8 100644 --- a/ace/ext-statusbar.js +++ b/ace/ext-statusbar.js @@ -1,5 +1,5 @@ -ace.define("ace/ext/statusbar",["require","exports","module","ace/lib/dom","ace/lib/lang"],function(e,t,n){"use strict";var r=e("ace/lib/dom"),i=e("ace/lib/lang"),s=function(e,t){this.element=r.createElement("div"),this.element.className="ace_status-indicator",this.element.style.cssText="display: inline-block;",t.appendChild(this.element);var n=i.delayedCall(function(){this.updateStatus(e)}.bind(this));e.on("changeStatus",function(){n.schedule(100)}),e.on("changeSelection",function(){n.schedule(100)})};(function(){this.updateStatus=function(e){function n(e,n){e&&t.push(e,n||"|")}var t=[];n(e.keyBinding.getStatusText(e)),e.commands.recording&&n("REC");var r=e.selection.lead;n(r.row+":"+r.column," ");if(!e.selection.isEmpty()){var i=e.getSelectionRange();n("("+(i.end.row-i.start.row)+":"+(i.end.column-i.start.column)+")")}t.pop(),this.element.textContent=t.join("")}}).call(s.prototype),t.StatusBar=s}); - (function() { - ace.require(["ace/ext/statusbar"], function() {}); - })(); +ace.define("ace/ext/statusbar",["require","exports","module","ace/lib/dom","ace/lib/lang"],function(e,t,n){"use strict";var r=e("ace/lib/dom"),i=e("ace/lib/lang"),s=function(e,t){this.element=r.createElement("div"),this.element.className="ace_status-indicator",this.element.style.cssText="display: inline-block;",t.appendChild(this.element);var n=i.delayedCall(function(){this.updateStatus(e)}.bind(this));e.on("changeStatus",function(){n.schedule(100)}),e.on("changeSelection",function(){n.schedule(100)})};(function(){this.updateStatus=function(e){function n(e,n){e&&t.push(e,n||"|")}var t=[];n(e.keyBinding.getStatusText(e)),e.commands.recording&&n("REC");var r=e.selection.lead;n(r.row+":"+r.column," ");if(!e.selection.isEmpty()){var i=e.getSelectionRange();n("("+(i.end.row-i.start.row)+":"+(i.end.column-i.start.column)+")")}t.pop(),this.element.textContent=t.join("")}}).call(s.prototype),t.StatusBar=s}); + (function() { + ace.require(["ace/ext/statusbar"], function() {}); + })(); \ No newline at end of file diff --git a/ace/ext-textarea.js b/ace/ext-textarea.js index 8e0b19dc..853f1691 100644 --- a/ace/ext-textarea.js +++ b/ace/ext-textarea.js @@ -1,5 +1,5 @@ -ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}),ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,n){"use strict";e("./lib/fixoldbrowsers");var r=e("./lib/dom"),i=e("./lib/event"),s=e("./editor").Editor,o=e("./edit_session").EditSession,u=e("./undomanager").UndoManager,a=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.require=e,t.edit=function(e){if(typeof e=="string"){var n=e;e=document.getElementById(n);if(!e)throw new Error("ace.edit can't find div #"+n)}if(e&&e.env&&e.env.editor instanceof s)return e.env.editor;var o="";if(e&&/input|textarea/i.test(e.tagName)){var u=e;o=u.value,e=r.createElement("pre"),u.parentNode.replaceChild(e,u)}else e&&(o=r.getInnerText(e),e.innerHTML="");var f=t.createEditSession(o),l=new s(new a(e));l.setSession(f);var c={document:f,editor:l,onResize:l.resize.bind(l,null)};return u&&(c.textarea=u),i.addListener(window,"resize",c.onResize),l.on("destroy",function(){i.removeListener(window,"resize",c.onResize),c.editor.container.env=null}),l.container.env=l.env=c,l},t.createEditSession=function(e,t){var n=new o(e,t);return n.setUndoManager(new u),n},t.EditSession=o,t.UndoManager=u}),ace.define("ace/ext/textarea",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/net","ace/ace","ace/theme/textmate"],function(e,t,n){"use strict";function a(e,t){for(var n in t)e.style[n]=t[n]}function f(e,t){if(e.type!="textarea")throw new Error("Textarea required!");var n=e.parentNode,i=document.createElement("div"),s=function(){var t="position:relative;";["margin-top","margin-left","margin-right","margin-bottom"].forEach(function(n){t+=n+":"+u(e,i,n)+";"});var n=u(e,i,"width")||e.clientWidth+"px",r=u(e,i,"height")||e.clientHeight+"px";t+="height:"+r+";width:"+n+";",t+="display:inline-block;",i.setAttribute("style",t)};r.addListener(window,"resize",s),s(),n.insertBefore(i,e.nextSibling);while(n!==document){if(n.tagName.toUpperCase()==="FORM"){var o=n.onsubmit;n.onsubmit=function(n){e.value=t(),o&&o.call(this,n)};break}n=n.parentNode}return i}function l(t,n,r){s.loadScript(t,function(){e([n],r)})}function c(e,t,n,r,i,s){function a(e){return e==="true"||e==1}var o=e.getSession(),u=e.renderer;return s=s||l,e.setDisplaySettings=function(t){t==null&&(t=n.style.display=="none"),t?(n.style.display="block",n.hideButton.focus(),e.on("focus",function r(){e.removeListener("focus",r),n.style.display="none"})):e.focus()},e.$setOption=e.setOption,e.$getOption=e.getOption,e.setOption=function(t,n){switch(t){case"mode":e.$setOption("mode","ace/mode/"+n);break;case"theme":e.$setOption("theme","ace/theme/"+n);break;case"keybindings":switch(n){case"vim":e.setKeyboardHandler("ace/keyboard/vim");break;case"emacs":e.setKeyboardHandler("ace/keyboard/emacs");break;default:e.setKeyboardHandler(null)}break;case"softWrap":case"fontSize":e.$setOption(t,n);break;default:e.$setOption(t,a(n))}},e.getOption=function(t){switch(t){case"mode":return e.$getOption("mode").substr("ace/mode/".length);case"theme":return e.$getOption("theme").substr("ace/theme/".length);case"keybindings":var n=e.getKeyboardHandler();switch(n&&n.$id){case"ace/keyboard/vim":return"vim";case"ace/keyboard/emacs":return"emacs";default:return"ace"}break;default:return e.$getOption(t)}},e.setOptions(i),e}function h(e,n,i){function f(e,t,n,r){if(!n){e.push("");return}e.push("")}var s=null,o={mode:"Mode:",wrap:"Soft Wrap:",theme:"Theme:",fontSize:"Font Size:",showGutter:"Display Gutter:",keybindings:"Keyboard",showPrintMargin:"Show Print Margin:",useSoftTabs:"Use Soft Tabs:",showInvisibles:"Show Invisibles"},u={mode:{text:"Plain",javascript:"JavaScript",xml:"XML",html:"HTML",css:"CSS",scss:"SCSS",python:"Python",php:"PHP",java:"Java",ruby:"Ruby",c_cpp:"C/C++",coffee:"CoffeeScript",json:"json",perl:"Perl",clojure:"Clojure",ocaml:"OCaml",csharp:"C#",haxe:"haXe",svg:"SVG",textile:"Textile",groovy:"Groovy",liquid:"Liquid",Scala:"Scala"},theme:{clouds:"Clouds",clouds_midnight:"Clouds Midnight",cobalt:"Cobalt",crimson_editor:"Crimson Editor",dawn:"Dawn",eclipse:"Eclipse",idle_fingers:"Idle Fingers",kr_theme:"Kr Theme",merbivore:"Merbivore",merbivore_soft:"Merbivore Soft",mono_industrial:"Mono Industrial",monokai:"Monokai",pastel_on_dark:"Pastel On Dark",solarized_dark:"Solarized Dark",solarized_light:"Solarized Light",textmate:"Textmate",twilight:"Twilight",vibrant_ink:"Vibrant Ink"},showGutter:s,fontSize:{"10px":"10px","11px":"11px","12px":"12px","14px":"14px","16px":"16px"},wrap:{off:"Off",40:"40",80:"80",free:"Free"},keybindings:{ace:"ace",vim:"vim",emacs:"emacs"},showPrintMargin:s,useSoftTabs:s,showInvisibles:s},a=[];a.push("");for(var l in t.defaultOptions)a.push(""),a.push("");a.push("
SettingValue
",o[l],""),f(a,l,u[l],i.getOption(l)),a.push("
"),e.innerHTML=a.join("");var c=function(e){var t=e.currentTarget;i.setOption(t.title,t.value)},h=function(e){var t=e.currentTarget;i.setOption(t.title,t.checked)},p=e.getElementsByTagName("select");for(var d=0;d");return}e.push("")}var s=null,o={mode:"Mode:",wrap:"Soft Wrap:",theme:"Theme:",fontSize:"Font Size:",showGutter:"Display Gutter:",keybindings:"Keyboard",showPrintMargin:"Show Print Margin:",useSoftTabs:"Use Soft Tabs:",showInvisibles:"Show Invisibles"},u={mode:{text:"Plain",javascript:"JavaScript",xml:"XML",html:"HTML",css:"CSS",scss:"SCSS",python:"Python",php:"PHP",java:"Java",ruby:"Ruby",c_cpp:"C/C++",coffee:"CoffeeScript",json:"json",perl:"Perl",clojure:"Clojure",ocaml:"OCaml",csharp:"C#",haxe:"haXe",svg:"SVG",textile:"Textile",groovy:"Groovy",liquid:"Liquid",Scala:"Scala"},theme:{clouds:"Clouds",clouds_midnight:"Clouds Midnight",cobalt:"Cobalt",crimson_editor:"Crimson Editor",dawn:"Dawn",eclipse:"Eclipse",idle_fingers:"Idle Fingers",kr_theme:"Kr Theme",merbivore:"Merbivore",merbivore_soft:"Merbivore Soft",mono_industrial:"Mono Industrial",monokai:"Monokai",pastel_on_dark:"Pastel On Dark",solarized_dark:"Solarized Dark",solarized_light:"Solarized Light",textmate:"Textmate",twilight:"Twilight",vibrant_ink:"Vibrant Ink"},showGutter:s,fontSize:{"10px":"10px","11px":"11px","12px":"12px","14px":"14px","16px":"16px"},wrap:{off:"Off",40:"40",80:"80",free:"Free"},keybindings:{ace:"ace",vim:"vim",emacs:"emacs"},showPrintMargin:s,useSoftTabs:s,showInvisibles:s},a=[];a.push("");for(var l in t.defaultOptions)a.push(""),a.push("");a.push("
SettingValue
",o[l],""),f(a,l,u[l],i.getOption(l)),a.push("
"),e.innerHTML=a.join("");var c=function(e){var t=e.currentTarget;i.setOption(t.title,t.value)},h=function(e){var t=e.currentTarget;i.setOption(t.title,t.checked)},p=e.getElementsByTagName("select");for(var d=0;d0&&!(s%l)&&!(f%l)&&(r[l]=(r[l]||0)+1),n[f]=(n[f]||0)+1}s=f}while(up.score&&(p={score:v,length:u})}if(p.score&&p.score>1.4)var m=p.length;if(i>d+1){if(m==1||di+1)return{ch:" ",length:m}},t.detectIndentation=function(e){var n=e.getLines(0,1e3),r=t.$detectIndentation(n)||{};return r.ch&&e.setUseSoftTabs(r.ch==" "),r.length&&e.setTabSize(r.length),r},t.trimTrailingSpace=function(e,t){var n=e.getDocument(),r=n.getAllLines(),i=t?-1:0;for(var s=0,o=r.length;si&&n.removeInLine(s,a,u.length)}},t.convertIndentation=function(e,t,n){var i=e.getTabString()[0],s=e.getTabSize();n||(n=s),t||(t=i);var o=t==" "?t:r.stringRepeat(t,n),u=e.doc,a=u.getAllLines(),f={},l={};for(var c=0,h=a.length;c0&&!(s%l)&&!(f%l)&&(r[l]=(r[l]||0)+1),n[f]=(n[f]||0)+1}s=f}while(up.score&&(p={score:v,length:u})}if(p.score&&p.score>1.4)var m=p.length;if(i>d+1){if(m==1||di+1)return{ch:" ",length:m}},t.detectIndentation=function(e){var n=e.getLines(0,1e3),r=t.$detectIndentation(n)||{};return r.ch&&e.setUseSoftTabs(r.ch==" "),r.length&&e.setTabSize(r.length),r},t.trimTrailingSpace=function(e,t){var n=e.getDocument(),r=n.getAllLines(),i=t?-1:0;for(var s=0,o=r.length;si&&n.removeInLine(s,a,u.length)}},t.convertIndentation=function(e,t,n){var i=e.getTabString()[0],s=e.getTabSize();n||(n=s),t||(t=i);var o=t==" "?t:r.stringRepeat(t,n),u=e.doc,a=u.getAllLines(),f={},l={};for(var c=0,h=a.length;c - - - - - Python editor - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + Python editor + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +:1040A0000123037210BDC046ACCF020008B5043036 + + + diff --git a/firmware.hex b/firmware.hex index 3340ae4f..8a058b7c 100644 --- a/firmware.hex +++ b/firmware.hex @@ -1,15156 +1,15156 @@ -:020000040000FA -:1000000000400020ED530100295401002B54010051 -:1000100000000000000000000000000000000000E0 -:100020000000000000000000000000002D5401004E -:1000300000000000000000002F54010031540100B6 -:10004000335401004D440100E55D010033540100CB -:100050003354010000000000F59701003354010003 -:10006000B9B000003354010055940100335401002D -:100070003354010033540100335401003354010060 -:1000800033540100D15A01003354010033540100AC -:1000900033540100799101005591010001B2000033 -:1000A00011B2000033540100000000000000000005 -:1000B0000000000000000000000000000000000040 -:1000C00008B5054B054803331B1A062B03D9044B0F -:1000D000002B00D0984708BD2801002028010020EF -:1000E000000000000648074908B5091A8910CB0F1F -:1000F0005918491003D0044B002B00D0984708BD75 -:1001000028010020280100200000000010B5074C45 -:100110002378002B09D1FFF7D3FF054B002B02D02A -:10012000044800E000BF0123237010BD2801002017 -:100130000000000078B1030008B5094B002B03D084 -:100140000848094900E000BF08480368002B02D1B5 -:10015000FFF7C8FF08BD064B002BF9D09847F7E71B -:100160000000000078B103002C01002028010020CD -:1001700000000000144B002B00D1124B9D46402282 -:1001800092029A1A924600218B460F461148124A53 -:10019000121A2BF04EF80D4B002B00D098470C4B49 -:1001A000002B00D098470020002104000D000B48D0 -:1001B0002AF018FF20F038FF2000290028F02FFD3A -:1001C00020F07EFC0000080000400020000000003D -:1001D0000000000028010020D82F0020D90D0200C7 -:1001E000C4600561466187614146C161494601625B -:1001F00051464162594681626946C16271468160D9 -:10020000124B1A6802601860002070470F4B1A6882 -:1002100012681A6070470D4B1A68002A01D124F049 -:10022000CFFC506010681860D468156956699769EA -:10023000D1698846116A8946516A8A46916A8B4615 -:10024000D16A8D4691688E4601207047902E00201D -:10025000074BDB68002B09D05A68904204D3801A00 -:1002600004308000C05802E01B68F3E7181C704798 -:10027000882E002038B5114D041CEB689868DB68A7 -:1002800083420FD30230C00023F0E2F9EB68DA6852 -:10029000596803609B6852185B00836000234260CA -:1002A000C360E860E968CB6848685A1C04339B0067 -:1002B0000138CA6080185C5038BDC046882E0020C6 -:1002C000074B4118884205D25A01D31802780130F1 -:1002D0005340F7E7D8B2002800D101307047C0463C -:1002E00005150000034B044ADA6000228C331A60C3 -:1002F0007047C046882E002098B90200F0B585B03E -:10030000071C0E1CFFF7DCFF164B0290DC68002C6C -:1003100024D0231C10330193E368019D04339B0018 -:10032000E3180393039B9D4216D22868029A037830 -:1003300093420FD14378B3420CD10230391C321CA6 -:100340002AF04BFF002805D1019BE81A636885104D -:10035000E81804E00435E5E72468D8E7201C05B078 -:10036000F0BDC046882E0020F0B585B00290019106 -:10037000FFF7C4FF021E5BD12F4C019B271C8C375B -:100380003868DD1C002819D0261C2C4B90361B68C1 -:1003900031680393EB188B4210D9691823F07BF96D -:1003A0000390002807D1254B3868196823F066F9B7 -:1003B000039B3B6002E03368EB183360231C8C33F3 -:1003C0001B68002B17D12E1E7F2E00D88026301CD4 -:1003D000271C23F04AF98C373860002804D1281CE8 -:1003E00023F036F92E1C3860231C90331E60231C2A -:1003F000002294331A60221C943213688C342468CF -:10040000ED1801990298E4181560FFF759FF6B4643 -:100410001B79207063700299019AA01C2AF0ECFEEF -:100420000022019B201CE3189A70FFF723FF021C97 -:10043000101C05B0F0BDC046882E00201C2F0020E7 -:10044000F7B51D1C161C0023071C03600B603360EE -:100450002B60174B0091DC68002C24D0154B9C427C -:1004600021D03B6801333B60E268009B94461B68E7 -:10047000009A019363441360221CE3681032043332 -:100480009B00E3189A4206D23168C81C02CA497818 -:1004900041183160F6E7201C06F0B4FD2B68246893 -:1004A00018182860D8E733682A68D3182B60F7BD7E -:1004B000882E002098B902000C4B70B5DC68002C27 -:1004C00013D00B4B9C4210D0261CE36810361D1D28 -:1004D000AD006519AE4206D204CE06490232064886 -:1004E00026F067FBF6E72468E9E770BD882E002058 -:1004F00098B902007224030010F0020038B5051C00 -:10050000141C22F00CFB024B2560636038BDC04612 -:10051000DD2A020010B50C1E7F2C06D8012122F026 -:1005200066FB002844D0047042E0224B99420FD869 -:10053000022122F05CFB00283AD04022A30952425B -:10054000134303703F231C40BF3B1C4344702FE008 -:10055000194B994214D8032122F049FB002827D0D7 -:100560002022230B52421343037080213F23A20910 -:1005700049421A401C400A430C434270847017E001 -:10058000042122F034FB002812D01022A30C524286 -:100590001343037080213F23220B49421A400A4330 -:1005A0004270A2091A401C400A430C438270C47076 -:1005B00010BDC046FF070000FFFF000007B5034B5A -:1005C0000090684601930EF0A9F807BDDD2A0200ED -:1005D00008B50348096801F0B1FA024808BDC046F1 -:1005E00010F0020074E0020010B5041C02A80078AC -:1005F000002906D0002804D10F49104827F07FFCBD -:1006000008E09A4208D1944214D00C480C49231CAB -:1006100010F0BAFEFFF7FFFD944205D2121B094904 -:10062000064810F0B1FEF5E79C4203D9034806499D -:100630001A1CECE710BDC046573F030000FD020046 -:10064000803F0300B93F0300EB3F0300F0B50025F6 -:10065000171C87B00C9C0D9E039004910593029586 -:100660000195059B9D4239D0039B9D4209D2636849 -:100670009B0537D4019B049A01330193AB00D058FA -:1006800019E006212368381CDB001943002204F01E -:1006900007FA00280BD16368DB0505D519492268E4 -:1006A000194810F071FE21E0A368336012E0029B4C -:1006B0004068013302932379012B03D101F02AFC16 -:1006C000307007E0022B02D101F0E4FA01E0032BC5 -:1006D00000D1306001350C340436C2E7019B039A27 -:1006E000934205D20848094927F009FCFFF793FD1A -:1006F0003B68029ADB089A4202D203480449F3E7B6 -:1007000007B0F0BD1A40030000FD020031400300B5 -:1007100052400300002805D0012809D18B685B00F6 -:10072000184306E08B680348002B02D1024800E022 -:100730000020704734CD020078CD02007FB5041C44 -:100740000122081C01A901F065FC0022217940204A -:1007500009F0B8F8061C0298311C19F07DF962689E -:10076000051C130A834208D2A368C1187143E068CC -:1007700022F084FF2379E06003E01B1A1B02D2B24F -:100780001343321CA06863607043E3686A4318181F -:1007900001992AF031FDA36802485D19A56004B0F3 -:1007A00070BDC04674E00200F7B5FF254668041C22 -:1007B0000191AE431DD10179321C402009F082F82D -:1007C0006368071C1D408023A1681B011D4308317D -:1007D00041436560E06822F051FF6368E0601A0AF7 -:1007E000A368013A01337A435F43311CC0192AF0F0 -:1007F00020FD2079019BE168A26809F0BDF9A3689A -:1008000003480133A3606368013BFF3B6360FEBDA7 -:1008100074E0020010B5041C102022F02BFF024BE4 -:100820004460036010BDC046D8C5020070B50A79A7 -:10083000041C0D1C002A09D1194926F0EEF8201CD1 -:10084000E968AA6801230BF04DFA23E0154926F068 -:10085000B0F9AB68002B1DD0201C134926F0DDF841 -:100860000026AB689E4211D2002E03D0201C0F49F7 -:1008700026F0D3F8321CE968287909F045F80122FE -:10088000011C201C01F036F90136EAE7201C08495A -:1008900026F0C3F8201C074926F0BFF870BDC046FB -:1008A000704003007C400300874003008B4003003E -:1008B0006AB003001B430300F8B5071C0D1C402061 -:1008C000391C002208F0FEFF061E05D10C490D4818 -:1008D00027F015FBFFF79FFC102022F0B9FE0A4B12 -:1008E000041C002F00D0094B281C2360FBB2A5601C -:1008F0007043636022F0ACFEE060201CF8BDC0468F -:100900008E40030010F8020050C6020014C6020018 -:10091000F0B5061C8BB00D1C141C12283AD034D82C -:10092000052800D087E0081C012204A922F0F4F970 -:10093000201C07A9012201F06DFB069B00220393F6 -:100940006B464020197B08F0BDFF061C0898311C3F -:1009500019F082F8069B071C03936B46A968187B65 -:100960007918FFF7A9FF059B041C1A1C0499C0689D -:1009700003932AF041FC321CE36805987A43181867 -:1009800007992AF039FC231C56E01B2839D01F2870 -:1009900006D050E0081C111CFFF7D0FE2B1C4BE0CA -:1009A000101C07A9012222F02CFD0322002814D0DC -:1009B000234B154240D1234A296891423CD104A9D6 -:1009C000281C012222F0A8F901230498009305991C -:1009D000079A089B24F00EFF28E0E3070ED4144288 -:1009E00003D1194B22689A4208D00322144B2240AB -:1009F000022A21D1154A1440062C1DD0144808F0B3 -:100A000065F9081C012204A922F086F9201C07A917 -:100A1000012222F0F6FC0A4B00280DD0089B301C66 -:100A200000930499059A079B24F02CFD094B00289C -:100A300002D1034B00E00023181C0BB0F0BDC046F0 -:100A400078CD020050C6020030D30200070080FFBC -:100A5000BF74030034CD0200F0B5051C87B00E1C36 -:100A6000002808D08B0724D10B68264A934202D075 -:100A7000254A93421DD1301C03A9012222F0C1FC5A -:100A8000002816D00022291C402008F01BFF061C5D -:100A90000498311C18F0E0FF071C281C391CFFF7D4 -:100AA0000BFF321C041C7A430399C0682AF0A4FB94 -:100AB00024E0301C01F00AFA071E00D04710391C50 -:100AC000281CFFF7F9FE041C301C07F051FB002620 -:100AD0000090009807F09AFB031E0FD0002F04D15E -:100AE000201C191CFFF760FEF3E7721C0192281C02 -:100AF000321CE16809F040F8019EEAE7201C07B0CB -:100B0000F0BDC04648EF020050C6020070B586B086 -:100B1000002A44D00324161C051C0A1C0C402CD1AE -:100B2000204B0968994228D1111C806803AA0AF059 -:100B300093FB002802D11C4808F0C8F8221C042EA0 -:100B40002DD12979402008F0BDFE049B061C287990 -:100B50000093039B0193019A009B991AFFF7ACFE47 -:100B6000041C0399049AEB68521A71437243591892 -:100B7000C0682AF041FB221C11E0A9682868002304 -:100B800001F060F9E968021C2879042E03D108F00D -:100B9000BBFE021C03E0331C08F0EEFF034A101CEE -:100BA00006B070BD00E202009B40030074E002004A -:100BB00037B51D1C00230C1C0093081C111C1A1CAB -:100BC0000133FFF711FD002C04D1201C211CFFF77D -:100BD00073FE1BE02968CB0705D48B0713D10C4BA0 -:100BE0000A689A420FD1081C01F054F8051C002035 -:100BF000291CFFF761FE041C0021C0682A1C2AF092 -:100C000018FB201C02E00020FFF726FF3EBDC04677 -:100C100030D30200002805D0012809D18B685B0081 -:100C2000184306E08B680348002B02D1024800E01D -:100C30000020704734CD020078CD02000021F0B5CD -:100C40008568EA0F5219521091420DDA074BC668B7 -:100C5000EB185B1A8C009B003419F6582768266045 -:100C6000C4680131E750EFE70148F0BDFFFFFF3FE7 -:100C700074E0020038B50D1C83684168041C8B4287 -:100C800012D3C900C06822F0F9FC63680A495A000F -:100C9000A3686260D21A013352189B00E060920090 -:100CA000C01800212AF0C5FAA368E268591C9B000D -:100CB000A16002489D5038BDFFFFFF3F74E0020075 -:100CC000F8B5071C161C4C10836803D5E418E243E2 -:100CD000D21714409C4200D91C1C0C4D381C291CF6 -:100CE000FFF7C8FFAC46BB6809495A1E5B189B005A -:100CF0001D1FF968A24204DD4859013AC8502B1C57 -:100D0000F6E7A4000E516046F8BDC04674E002004C -:100D1000FFFFFF3F38B50025041C85601021C06827 -:100D200022F0ACFC0423291CE060636010222AF04E -:100D300080FA014838BDC04674E002007FB50C1C43 -:100D4000114B02AD04310093013802230195FFF7E6 -:100D50007DFC23680D4C9968012911D9D868029A45 -:100D60000B4B2D79C918131B5E1EB34189005B42E2 -:100D70001A404118074B002D00D1074B22F018F8FC -:100D8000201C04B070BDC046D8C6020074E002004A -:100D9000FFFFFF3F78CD020034CD020070B50C6834 -:100DA000021CA368002B05D11A491B4827F0A7F89D -:100DB000FFF731FA2068012A01D04A6801E00122D8 -:100DC0005242191C002301F03DF8E268A36881003B -:100DD0005618013B043151181A1A35689200A36065 -:100DE000301C2AF012FA0021A368E0689A00115022 -:100DF000616804290BD95B00994208D94908890028 -:100E0000E06822F03BFC6368E0605B086360281CDC -:100E100070BDC046CC4003006CF9020007B50090DD -:100E200001910220694622F025F8694601900220CE -:100E3000FFF7B4FF00480EBD74E0020070B50E1C51 -:100E40000D49051C002425F0E8FDB3689C420ED234 -:100E5000002C03D0281C094925F0DFFDF268A3000F -:100E60009958281C012200F045FE0134EDE7281CAA -:100E7000034925F0D2FD70BD894003008B4003007B -:100E80006AB0030070B50326041C0D1C0E4028D167 -:100E9000174B0A689A4224D18B6882689918436874 -:100EA000994210D904318900C06822F0E7FBAB6891 -:100EB000A268E0609B181A1D9B006260C018311C7C -:100EC00010222AF0B6F9A368E9689800E3681818B8 -:100ED000AB689A002AF090F9AB68A268D318A360B7 -:100EE00003E0201C291C21F0CEFF024870BDC04643 -:100EF0009CC6020074E0020010B5041C102022F011 -:100F0000A7FB044B84600360034B43600023C36072 -:100F100010BDC0463CE20200932D020038B50B4BD9 -:100F2000051C03600C1C081E042800D20420686005 -:100F3000AC60800022F08CFB6A68E860121BA400A1 -:100F40009200001900212AF074F938BD9CC60200F5 -:100F50007FB50D1C161C12282AD004D8052807D0EE -:100F600007282BD058E0031C193B042B41D953E030 -:100F70000322002332409A424FD1131C3168284A81 -:100F800091424AD1B368AA68981821F095FF041CD1 -:100F9000AB68E9689A00C0682AF02EF9A868E3688F -:100FA00080001818B368F1689A002AF025F91EE04D -:100FB000081C111CFFF766FF2B1C2EE0101C03A958 -:100FC00000F0A6FE0023984227D0039A9A4200DA46 -:100FD0000393039BA868584321F06EFFC368041C69 -:100FE0000093E8680421AA68039B24F017FA231CE5 -:100FF00013E00C4BB20710D1094A316891420CD171 -:10100000B368E9680093AA68F3680AF05FF9064BD1 -:10101000002802D1034B00E00023181C04B070BD6F -:101020009CC6020078CD020034CD0200F0B50B1C46 -:1010300087B0041C171C0326002A16D10E400DD1C0 -:10104000524A0968914209D1191C03AA80680AF022 -:1010500003F90398049AE368851A78E003A902204B -:1010600003940493FFF79AFE8DE0042A2DD13142B8 -:1010700021D1464A096891421DD18068191C03AAF2 -:101080000AF0EAF8002805D1A068E16803AA24F074 -:10109000D8F979E0039B0498C01A21F00DFF051CD4 -:1010A0008368E1689A00039BC0689B00C9182AF016 -:1010B000A3F8281C68E01A1C20680023A16800F02F -:1010C000C1FEE3688000C0585EE00E4056D12F4A52 -:1010D0000968914252D1191C03AA80680AF0BCF831 -:1010E000BA680398049B85180193ED1A002D22DD40 -:1010F000A368E9186368994207D98900E06822F07B -:10110000BDFAA368E060EB186360039AE368A8186F -:101110009100800059181818A3689A1A92002AF0B2 -:1011200074F8039BF9689800E3681818BB689A0084 -:101130002AF062F81EE0E368800018189200F9684F -:101140002AF05AF8B8680399E368049A40189100A5 -:10115000800059181818A3689A1A92002AF055F8B6 -:10116000A3686A42E818E368800092001818311CEE -:101170002AF05FF8A3685D19A56004E0201C191C23 -:101180003A1C21F0DBFE024807B0F0BD00E202008D -:1011900074E00200002313B5046A00930A05A16BF2 -:1011A000024C920C125921F068FF13BDDCC70200FB -:1011B000F0B51C7887B07C2C06D185686D5C002D5D -:1011C00002D09A2D00D0DEE00393231C6B3B0292E9 -:1011D0000091071C022B29D884687D686018037869 -:1011E000032B00D0ACE004A922F03AF8631998422E -:1011F00000D19EE00378032B00D0A1E005A922F0E6 -:101200002FF8039B1B786B2B03D1049B059A134388 -:101210000AE06C2B03D1049B059A534004E06D2B2C -:10122000E4D1059B049A13400493DFE76E2C04D0AD -:101230000223221C9A43702A63D1009BBE68F018D7 -:101240007B6801930378032B7AD104A922F008F874 -:10125000051C019BF3189D426BD0AB78A81C6C78E1 -:10126000032B6DD105A921F0FBFF051C372C0ED1F6 -:10127000059A1F2A64DC4549049B11418B425FDCBF -:10128000C021090611418B425ADB934009E0392CF9 -:1012900009D1059B1F2B01DD1F230593049B059A94 -:1012A0001341049328E02F2C03D1049B059A9B182B -:1012B000F7E7302C03D1049B059A9B1AF1E7312CF8 -:1012C00009D10498059907F00BFD002838D1059B3A -:1012D000049A5343E5E7332C32D00599352C05D1D8 -:1012E00000292DD0049823F08FFB04E0002927D09B -:1012F000049823F099FB0490049B5A005340A8D50E -:101300001EE0752C1CD18368009A98188378447865 -:10131000032B15D1023021F0B2FF2F2C08D0302C36 -:1013200005D1404243000490584002D508E0C04334 -:101330000490009B381C7B60049921F0CEFE22E0D3 -:1013400000267B68009A029C9D1A0136E409FCD1B4 -:101350002B1C0134DB09FCD1731C1A19381C0099B1 -:10136000019321F07EFC071C039B311C1B78029A21 -:101370001A330370013021F02CFE019B211CF81858 -:101380002A1C21F026FE07B0F0BDC046FFFFFF3F3C -:10139000F0B597B00990C020002540230AAC80002A -:1013A0000F1C161C25706360A56022F05EF9256194 -:1013B000E0606561A561E5612762E562A84202D14E -:1013C000BF48C049C0E1331E03D00423022E00D021 -:1013D000033B0026BC4A9B000096201CB96B9A5820 -:1013E000331C21F04AFE102022F032F91021041C97 -:1013F00021F095FB0AADAB68002B00D181E12A7882 -:10140000002A00D07DE1013B0C32AB605343EA6817 -:10141000AD49D318DA785D689200525803921A6881 -:101420009B681202120A0493039B06925B7807934F -:101430000F23079A1A400592002D01D16368049387 -:101440003023079A1340102B02D0202B40D0F4E019 -:10145000002D03D0002E01D10026CBE7039B6A00AC -:101460009A18059B9D4231D25388190B012916D138 -:10147000391C403109781B0502321B0D994221D1DC -:101480000AA8211C21F05EFE0028E5D13B1C403358 -:101490001B78062B00D04CE18C488D4954E1059A0D -:1014A0006B1C934206D2049A0AA800920699039AEA -:1014B00021F0E3FD039B6D005D1969880AA8FFF721 -:1014C00069FEC9E70135CCE7012DDFD8012691E798 -:1014D000002E0BD0039A6B009B5A1B0B032BF3D1EE -:1014E000201C012121F083FB00230370039B6E006D -:1014F0009E191AE073881A0B012A29D13A1C40322E -:101500001278DBB29A4220D1082A07D1B96CF86C64 -:10151000FEF72AFF011C201C21F0A5FD002D08D09C -:10152000381C23F031FF01350236059B9D42E1D383 -:1015300010E0039B5B787F2BF2D90E9B201C591C7B -:1015400007930E9121F0C9FDEAE7002DBED09DE77B -:101550006B1CA8E700231E1C059A93420CD203992A -:101560005A008A185288110B012903D1D2B2072AD6 -:1015700000D901260133EFE7A368049A98180023E5 -:101580000793A2686368D318984206D2079B01218B -:101590000133079321F03DFDF3E7039B1B781F2BDD -:1015A00001D02E2B00D10126039B597840230B40FC -:1015B000181C4342434149B25B421E40002900DAF5 -:1015C00001260025049B0595D0180895079B9D4290 -:1015D0000FD0059A037801320592002B04D0089BA6 -:1015E0000133089300230593012121F012FD0135F9 -:1015F000ECE7002E02D1089B012B04D0201C05999A -:1016000021F062FB76E0A268049B944663441D1CB3 -:10161000079B9E4200D11FE72B78002B06D1A368C1 -:10162000201CE91A012221F05DFB04E0281C0121A5 -:1016300021F0EFFC051C0136EAE7002E1FD0059BC8 -:10164000022B03D10023012D45D13FE7012D00D10D -:101650003CE701232A1C1A403CD0059A032A3AD0C1 -:1016600014E73A1C0899403212780905090D8A429C -:1016700017D1002B10D0381C23F086FE0135012332 -:10168000079A039913402B405A008A1852880892EF -:10169000120B012AE5D006E00AA8211C21F052FD18 -:1016A000ECE70135CBE7049A0AA8009206996B1C77 -:1016B000039A21F0E2FC0AA80899FFF76BFD99E66E -:1016C00090F80200E9400300DCC70200F8FA0200CB -:1016D00011410300131C079A691ED20705D5039A0E -:1016E0009288120B012A00D16908012902D1002B2E -:1016F00000D1B1E6201C0499069A039BFFF758FD20 -:10170000AAE62B78002B00D05AE63B1C40331E780B -:10171000002E00D0BAE66368002B00D1B6E62B6934 -:10172000201C591C21F0D9FCA3686B62EB69AB62E9 -:101730000FE0022B02D11448144905E00B3B14487A -:101740001449012B00D9144926F0D9FB0023061CAB -:1017500013930D9821F0A3FF002E0BD0301C396895 -:10176000BA6B00230FF07EFE381C23F09BFD301C6B -:10177000FEF751FD381C23F095FD099A13AB13CBEE -:1017800013C2099817B0F0BDF8FA02002341030014 -:1017900078FD0200574103007E41030010B5041C90 -:1017A000102021F055FF044B84600360034B43601D -:1017B0000023C36010BDC0463CE20200713302004A -:1017C00013B5041C081C01A90AF06CFB002C07D0FF -:1017D000012C0BD1019922F033FB4000204306E09D -:1017E000019B0348002B02D1024800E0002016BDF7 -:1017F00034CD020078CD0200F0B585B0041C081C81 -:1018000003A9151C0AF04EFB061C002D06D1201C56 -:101810003549039A331C25F0CCF963E0011C002202 -:10182000039BC3180093009B99420ED20B78272B81 -:1018300004D0223B58424341DBB201E000230122A5 -:101840000131002BEFD0272703E02727002A00D003 -:10185000053F264D201C291C3A1C25F0AAF90195AC -:10186000009B9E4239D2301C22F0B9FA051C301C74 -:1018700022F0D0FA061CBD4203D1201C1C493A1CA0 -:1018800028E05C2D02D1201C1A4914E02B1C203BBF -:101890005E2B02D8201C01991BE00A2D02D1201CCE -:1018A000154908E00D2D02D1201C144903E0092D33 -:1018B00004D1201C124925F0B0F8D1E7FF2D02D841 -:1018C000201C104905E0104B201C10499D4200D9F6 -:1018D0000F492A1C25F06DF9C2E7201C01993A1C1A -:1018E00025F067F905B0F0BD8D4103009341030079 -:1018F0009241030096410300994103009C4103007B -:101900009F410300A2410300FFFF0000A941030023 -:10191000B0410300F7B51F1C08AB0C1C161C1D784A -:10192000FB0702D57F1001970EE0381C01A900F0DB -:10193000EFF9002808D1381C21F04DFD1B49021C8D -:101940001B480FF021FD0DE0019BA019002B17DAB9 -:101950000138A04208D20193002D25D1154816491F -:101960000FF012FDFEF757FC3F21027801388A4341 -:10197000803A511E8A419B18002BEAD1013014E0B5 -:10198000002B11D0844203D30193002D0DD1E5E744 -:101990003F2122788A43802A01D10134F8E7002BC5 -:1019A00002D00134013BEDE7201CFEBDB74103002E -:1019B00000FD02006CF90200DF410300F0B587B0C2 -:1019C000061C0D1C171C00F07BF802A9041C301C1F -:1019D0000AF068FA061C042F4FD1AB0735D1284B0B -:1019E0002A689A4231D105AB281C03A904AA23F026 -:1019F00006FD059B234FBB4204D0032B02D0224897 -:101A000007F064F9039B351CBB4207D00122201C60 -:101A10000092311C029AFFF77DFF051C049BBB421C -:101A200008D00122201C0092311C029AFFF772FF9D -:101A3000021C01E0029BF2180E20AA421ED3521B88 -:101A4000201C291C23F0F5FE18E00023311C009314 -:101A5000029A2B1C201CFFF75DFF0278012153B274 -:101A6000002B06DA402301211A4202D001315B0823 -:101A7000FAE701220AF0D8F900E0002007B0F0BD33 -:101A800000E2020074E002009B40030013B5041C56 -:101A9000A06806F0BBFB019000280ED06368074ADF -:101AA000934205D0181C0121002201AB06F066FA12 -:101AB00000F030FA0028EBD0019816BD74E0020067 -:101AC000084BC2070BD4084A084B0240062A06D02E -:101AD00003230340022B01D1054B00E00368181CCF -:101AE0007047C04630D30200070080FF80CA020062 -:101AF0000CD00200F8B50D1C041C161C01F0B8FE39 -:101B0000281CFFF7DDFF8768031C201C002F03D073 -:101B1000291C321CB84703E002495A6825F049F8ED -:101B2000F8BDC046F941030008B5031C0A1C024871 -:101B3000191CFFF7DFFF08BD10F00200F7B5051C08 -:101B4000081C0E1C26F0DFF900282AD0301C69463C -:101B500001AA0FF0BFFC009B002B22D0281C1649C5 -:101B600024F05BFF009C154BE71EE418A400002F37 -:101B700017DB019A281C13195B681259104925F0CC -:101B800018F8019B281C1B199A68002A03D10D49DB -:101B900024F043FF02E00C4925F00BF8033F0C3C16 -:101BA000E5E7281C311C0222FFF7A4FF281C054989 -:101BB00024F033FFF7BDC046FE410300FDFFFF3FA9 -:101BC000224203003F4B03003742030010B5041CC0 -:101BD000FFF776FF054B0069984203D0431E9841FA -:101BE000C0B202E0201C23F07FFD10BDF9B8000058 -:101BF00038B5051C0C1C01208D4241D0214B9D4263 -:101C000001D100203CE09942FBD001231D4204D0C9 -:101C10001942F6D12B1C0D1C1C1C2A1C1A4B1A40F5 -:101C2000062A05D0AA0711D1184A296891420DD178 -:101C30002340062B05D0A307E3D1144B22689A4218 -:101C4000DFD1281C211C0AF057FD19E02340062B88 -:101C5000D7D0A30703D10D4B22689A42D1D0281CBC -:101C6000FFF72EFF8369002BCBD01B20291C221CE1 -:101C700098470028C5D0064BC01A42424241D0B214 -:101C800038BDC04674E00200070080FF80CA020031 -:101C900034CD020008B5104B984219D00F4A0123E9 -:101CA000904217D0184201D0184114E0830706D1A2 -:101CB0000B4B02689A4202D103F014F90BE021F0B9 -:101CC0008AFB0849021C08480FF05EFBFEF7A3FAE6 -:101CD000002000E0181C08BD78CD020034CD0200C1 -:101CE00030D302004042030000FD020008B5C307E4 -:101CF00005D4830706D1054B02689A4202D122F02F -:101D000036F801E0FFF7C6FF08BDC04630D3020039 -:101D100038B50F4B0124984202D100230B6014E028 -:101D20000C4B984201D10C600FE0031C234002D001 -:101D30004010086009E0820708D1074A056895420B -:101D400004D10D1C03F0CEF82860231C181C38BDEC -:101D500078CD020034CD020030D3020008B5184B14 -:101D6000984228D0174B984227D0C30703D540107C -:101D700018F060FF23E00323184206D1124A0168DD -:101D8000914202D121F0FCFF19E00340022B09D15E -:101D90000E4B0340062B05D0FF23DB05C0180323A1 -:101DA00098430CE021F017FB0949021C09480FF089 -:101DB000EBFAFEF730FA002001E0FE20800508BDB6 -:101DC00078CD020034CD020030D30200070080FF3E -:101DD0005842030000FD020010B583070CD10368D0 -:101DE0000A4CA34202D123F0C7F80EE0084CA342EC -:101DF00002D121F09CF808E021F0EDFA0549021C1F -:101E000005480FF0C1FAFEF706FA10BDBCDC02006F -:101E10009CC602007242030000FD020013B50C1CB8 -:101E200001A9FFF7D9FF019BA34206D00349221C59 -:101E300003480FF0A9FAFEF7EEF913BD954203002F -:101E400010F80200F7B5051C0C1C171C1E1CD3074C -:101E500002D55710019710E0101C01A9FFF758FF99 -:101E600000280AD1381C6C6821F0B5FA1349031C0C -:101E7000221C13480FF088FA1BE0019B002B08DAA4 -:101E80001B190193002E0AD0002B04DA00230193C2 -:101E900011E0002E03D0A3420DD901940BE0019B69 -:101EA000002B01DBA34206D3064807496A680FF0FE -:101EB0006BFAFEF7B0F90198FEBDC046C2420300BE -:101EC00000FD02006CF90200E642030010B5041C9C -:101ED000830710D10D4B02689A420CD10C4B034082 -:101EE000062B03D1C00820F0C5FD00E08068012367 -:101EF0004000184308E0201CFFF7E2FD4369181E6C -:101F000002D00120211C984710BDC04648EF0200B6 -:101F1000070080FF174A70B50023904227D0164C67 -:101F2000A04201D1012322E0144A002390421ED096 -:101F3000012606409E4201D0401015E0051CFFF727 -:101F4000BFFD4369002B09D0301C291C984700288D -:101F500004D0031B58424341DBB208E0281CFFF7C2 -:101F6000B5FF0028DED00138431E9841C3B2181CCB -:101F700070BDC04678CD020034CD020074E002008E -:101F800010B5041CFFF7A2FF002809D1201C21F086 -:101F900022FA0449021C04480FF0F6F9FEF73BF957 -:101FA00010BDC046FC42030000FD020070B5041CD9 -:101FB0000D1C161CFFF784FD036A002B05D0201CA6 -:101FC000291C321C984700281AD10E4D201C002EC7 -:101FD00005D121F000FA0C49021C281C06E0042E51 -:101FE00008D121F0F8F9021C281C08490FF0CCF99F -:101FF000FEF711F921F0EFF90549021C281CF5E75D -:1020000070BDC04600FD02001D43030048430300AD -:102010006943030008B521F0F4F9002805D103490C -:10202000034825F06CFFFEF7F6F808BD9643030061 -:1020300000FD0200F0B585B000AF7A601D1C7B6822 -:10204000C26BCB18061C0C1CFB60934204D02B49BE -:102050002B480FF099F93BE0FB68994245D09A0074 -:10206000131C69460E33DB08DB00CB1A9D46181C97 -:102070000021BB6029F0DDF80023A200934204D0C8 -:10208000E858B968C8500433F8E7F9687A688C46AC -:1020900062447A60ED1803E06A6802341A60083519 -:1020A0007B689C4220D2286809F0E0FE0021021CD7 -:1020B000F36B3B603B68994206D08B00F018006CD4 -:1020C000904207D1013107D10D480E490FF05CF95C -:1020D000FEF7A1F80131EDE7B968CB1819680029BE -:1020E000DAD007480849F1E7BD68F868291C07F00D -:1020F000E9FDBD46066005B0F0BDC046803F030067 -:1021000000FD0200BB430300DC43030038B50C1C98 -:10211000051C0B6805495A6824F04BFD2168281CF2 -:102120004031221C10F0A6F838BDC0465B83030086 -:10213000F0B585B00C1C032509F098FE2540071C5E -:10214000002D03D11E4B22689A4205D01D491E481E -:1021500025F0D5FEFEF75FF8201C02A903AA20F0A7 -:10216000E6FE029E039B301C10308000019321F09C -:102170006FFA041C291C3C2229F05BF8134B6760A2 -:102180002360134BE663A360124BE360124B636161 -:10219000124BA361124BE361124B2362124B636239 -:1021A000124B6363B54208D0019BAF00D85909F0C8 -:1021B0005DFEE71938640135F4E7201C05B0F0BD79 -:1021C0009CC602000B44030000FD02006CEB020001 -:1021D0000D21000035200000459C0000099D0000F5 -:1021E000F1210000019E0000A19C0000D4CB020060 -:1021F000136870B5002B11D10568EE6BB34213D094 -:102200009C002C19246C8C4201D00133F6E7591C38 -:102210000AD002339B001B58136005E003490448B1 -:1022200025F06DFEFDF7F7FF70BDC04619440300B1 -:1022300034FB0200F8B5214D2E687368012B3BD9A1 -:10224000B1685C1E0A5D0A2A36D1002C03DD621ECD -:10225000885C0A2801D1221C05E0141CF5E7885C83 -:10226000202802D101329A42F9D3002C0BDD501CF8 -:10227000984208D1601E002805D001380F5C0A2F53 -:102280001AD0202FF7D0CB18023B1B78141B3A3BF7 -:1022900059425941A4086418013C0DD3084F301C21 -:1022A000391C042220F01AFC381C042111F00CFE09 -:1022B0002B6904332B61EFE7F8BDC04644010020D1 -:1022C000CAA7030008B503480021202228F0B1FF67 -:1022D00008BDC046D02E002008B5084B42681860E3 -:1022E0000020986018750138D860081C5A601A617F -:1022F000996126F0E2FAFFF79DFF08BD4401002036 -:10230000F8B50378002B1ED00F4D041CA86C0028D4 -:1023100004D0211C29F088F8002814D0201C29F0B2 -:102320008DF8471C381C21F0A0F9061E0BD03A1C72 -:10233000211C28F061FF054B054A1968043B996090 -:102340009342FAD1AE64F8BD882E0020E82E00201A -:10235000CC2E0020F0B5BD4B051C18689E68426865 -:1023600085B001921C1C002E00D0C5E06B1E042B12 -:102370001BD820F01CFC6368984200D163E1012D5A -:1023800000D106E1022D0AD00FE09A60412D37D02E -:10239000422D2ED0432D19D0442D00D0E8E02369E2 -:1023A0006268934200D91CE158E1032D00D14AE153 -:1023B000042D06D1206821694368994200D3E0E0EA -:1023C000FCE0052D00D1EFE0062D06D123685D6805 -:1023D0002369AB42AD416D4228E10B2D07D1019B32 -:1023E00022692068991A20F06FFC002504E10E2D67 -:1023F00004D1E368002B00DBA1E02FE1102D04D114 -:10240000E368062B00DC8DE028E1152D0BD1236954 -:10241000626820689A1A616820F064FC2369626827 -:1024200000259E1A1DE10D2D0AD1894826F045FA96 -:10243000206820F0EEFB6368C018FFF761FF14E12D -:102440001B2D02D10123A36008E1082D01D07F2DAF -:102450001BD121696268914200D8FFE0131C2068FB -:102460009D1A8B4205D08568ED5C202D06D1013385 -:10247000F6E70126032D02DD033600E00126891B65 -:10248000321C20F02FFC0127ADE0092D28D1236854 -:1024900061689868236940186E4A591A03AB0EF0B8 -:1024A000D7FD061E00D1D9E00025431C0BD1A06941 -:1024B00026F003FA23686168986823694018591A5E -:1024C00011F002FD98E023692068E918039B0135AB -:1024D0005A1C03921A7820F0E5FBB542F3D18BE049 -:1024E0002B1C203B5E2B00D9B8E02A1C20682169F8 -:1024F00020F0E1FB01257FE00022012E07D14F2DC6 -:1025000003D05B2D6BD1023269E0042267E0022E1A -:1025100033D1291C3039092900D936E703221D752A -:102520009A609BE05A1C4C4913339B005958002970 -:1025300000D193E020686368E26043600FE02068A8 -:10254000013BE36062684368991A20F0BDFBE368D1 -:10255000002B06DB1233404A9B002068995820F07C -:1025600074FB63682269D61A22685568ED1A78E010 -:10257000482D0ED0462D71D116E0032E29D17E2D87 -:1025800002D000252F1C1EE01B7D312B01D0372BE4 -:1025900005D10025236962682F1C9E1A14E01A1CBD -:1025A000FB21343A0A4206D1002723683E1C5D68AD -:1025B0002369ED1A08E0332BE3D1FBE6012220F07A -:1025C00091FB002501272E1C0023A3609E420BDCFB -:1025D00010E0042E03D1462DE6D0482DD9D09A60C4 -:1025E0003CE0002701260025301C11F091FC2369F6 -:1025F0009E1B2661002F19D02368019A5B689342C5 -:1026000004D2131C2269981A11F092FC22682369E3 -:102610009168C8185168C91A11F056FC23685868A7 -:102620002369C01A401B11F073FC08E0002D15DD72 -:102630002368291C98682369C01811F045FC236998 -:10264000ED1825610AE02E1C0FE0C0464401002071 -:102650003E4B030010F00200882E00200126764237 -:1026600003E00127002EBFDCC6E7301C05B0F0BD3B -:10267000F7B51F1C13780E1C0A3BD9B2051C1F4866 -:102680000F2904D850781B02184320F0F8F91524BC -:10269000037801931A4B01331522121B009219780B -:1026A000019A91421CD1427859788A4218D1827895 -:1026B0009978914214D100290FD1009B9A00104BB8 -:1026C000D45CBC4217D93B1C0E480F49321C0EF09B -:1026D0005BFEAB68002418600DE0C1780029ECD0E7 -:1026E000013C0433002CD7D106480849321C0EF0B7 -:1026F0004BFEAB681860201CFEBDC046BF740300D3 -:102700002846030078FD020093440300AC44030014 -:10271000F0B5177885B0051C0E1C992F47D1101CF9 -:1027200001A920F0D6FD019B021E9A423FD00378FA -:10273000191C0A390F2908D80F23281C311CFFF750 -:1027400097FF01238340181C39E0AE2B2FD120F0D6 -:10275000BBFD041C20F0B3FD02900378B22B26D100 -:10276000221CA33B311C281CFFF782FF012403A974 -:102770008440029820F0ADFD039B0290984203D064 -:1027800002A8391C20F0B4FD029A039B9A420CD097 -:10279000311C0F23281CFFF76BFF01238340029895 -:1027A0001C4320F08CFD0290EEE7201C07E005485A -:1027B0000549321C0EF0E8FDAB681860002005B03A -:1027C000F0BDC04678FD0200C4440300F0B585B0FA -:1027D000041C0D1C101C03A91E1C20F056FD071E16 -:1027E00008D10E480E492A1C0EF0CEFDA3681860D1 -:1027F0003B1C0FE00398FFF779FA021C031CB2435D -:1028000008D00096054807492A1C0EF0BDFDA368B4 -:1028100018600023181C05B0F0BDC04678FD02000A -:10282000DF440300F744030038B513780D1C0A3B5E -:10283000D9B2041C0F2908D92A1C124812490EF0DB -:10284000A3FDA368002518601AE052781B02134309 -:10285000C2680020904208D02569810049599942F8 -:1028600001D1051C0CE00130F4E722880025042A80 -:1028700006D11A1C034805490EF086FDA3681860AE -:10288000281C38BD78FD02002345030038450300AD -:10289000F0B587B0041C0F1C081C04A91E1C019273 -:1028A00020F0F2F8019B051C002B13D1322F03D12D -:1028B000BF2160690902EAE1482F08D0019BBE48A8 -:1028C000BE492A1C0EF060FDA3681860E1E1606952 -:1028D000BB49DCE1019B012B00D08BE0412F09D1EA -:1028E000291C201C3268FFF79FFF011C606923F040 -:1028F000AAF90AE0422F12D1291C201C3268FFF7E6 -:1029000093FF011C606923F0F5F9002800D0C0E1B5 -:10291000A948AC49A46825F0F2FA2060B9E1432F38 -:1029200009D1291C201C32680F23FFF7A1FE8E213C -:10293000C000C901A9E10378622B33D1049B032BAA -:1029400007D0052B2ED1C3785F2B2BD103796E2BAB -:1029500028D101279C4A6978531C7F422B32187872 -:10296000884206D1A87884465878844501D1581EFB -:10297000077803339342F2D17B1C9FD03268201C2E -:10298000291CFFF751FF049B021C00266069052BE0 -:1029900003D12B79773B5E425E41331C391C23F017 -:1029A0006EF9B2E7462F02D1606988496FE1472F7F -:1029B00002D1606986496AE1442F0BD1291C201C91 -:1029C0003268FFF7A5FEFF231B02B421184200D096 -:1029D00074E70DE0452F00D070E7201C291C3268F9 -:1029E000FFF796FEFF231B02184200D066E7BC21CA -:1029F00009024AE1019B022B00D0D4E073681B78E6 -:102A00000A3B0F2B49D8332F12D1291C3268201CC6 -:102A10000F23FFF72DFE291C071C7268201C0F23B3 -:102A2000FFF726FE391C021C606923F0F7F830E13D -:102A300000230293342F1BD18027FF01291C326809 -:102A4000201C0723FFF714FE291C01907268201C2C -:102A50000723FFF70DFE391C031C019A606923F060 -:102A6000D6F816E1029B013302930F2B00D125E724 -:102A7000029B281C9F00574B791C5918032228F0F1 -:102A8000E4FC0028EED1EB78002BEBD1514BFF5C3E -:102A900080233F01DB011F43D0E7332F01D1802783 -:102AA00002E0352F13D1A027291C32680723201CF0 -:102AB000FFF7DEFD291C0190FF23201C7268FFF741 -:102AC00085FE019BBF01074319023943DEE0362F23 -:102AD00001D1C027E8E7372F01D1E027E4E7002341 -:102AE0003D4A990050184088874258D18B5A201C83 -:102AF000029332680723291CFFF7BAFD766803901A -:102B00003378982B28D1301C20F01EFC002823D1CC -:102B1000301C20F0D9FB03789A2B1DD105A920F099 -:102B2000D8FB0599071C20F0BEFB022814D1381CE5 -:102B300020F0C5FB3A1C0723061C291C201CFFF7AC -:102B400097FD029B071CDB040ED5201C291C321CA0 -:102B50001F23FFF73BFE17E0174820492A1C0EF001 -:102B600013FCA3681860A9E6029B201CDB0B291C40 -:102B7000321C002B04D03E23FFF728FE400803E060 -:102B80007C23FFF723FE80080399029BFF00194373 -:102B90000F43F8218001C9000840391C75E001335A -:102BA000062B9DD18AE6019B032B00D086E6382FA9 -:102BB00016D1002718E0C04678FD02004F450300FB -:102BC00030BF0000AF4503006944030072B6000047 -:102BD00062B600002D440300262403008445030050 -:102BE000392F1DD180273F01291C32680723201C63 -:102BF000FFF73EFD291C019072680723201CFFF798 -:102C000037FD291C02901F23201CB268FFF7DEFD50 -:102C10000199029B394380010143DB00194335E0F0 -:102C20003A2F02D180277F01DEE7362F01D1C0275E -:102C300003E0372F00D041E6D027291C3268072354 -:102C4000201CFFF715FD726801900723201C291C2A -:102C5000FFF70EFDB2687F01137802900A3B0F2B3D -:102C600005D8201C291C0723FFF702FD07E080235D -:102C7000DB001F43201C291C0723FFF7A7FD029B35 -:102C80008001D900019B194339430143606922F057 -:102C900087FF07B0F0BDC046F7B5061C0D1C002429 -:102CA0000192019B9D4228D0631C0093052B03D108 -:102CB000B4681348134907E028780A38C3B20F2BC9 -:102CC00007D9B4680E48104925F019F92060002092 -:102CD00014E06B78000218431FF0D1FE0235071C88 -:102CE00028F0ACFB0228ECD13B78722BE9D17B7841 -:102CF0003034A342E5D1009CD3E7201CFEBDC04682 -:102D000078FD0200C3450300F645030030B50724F3 -:102D100002784160A243053C224302707F22039C5B -:102D200005882240D400034A83602A40224302805F -:102D300030BDC04607FCFFFF10B5072403782140D3 -:102D4000A34319437F230170049904880B40D900E1 -:102D5000084B426023400B430380039B04685B05E0 -:102D6000D90A054B23400B430360029B8360059BFC -:102D7000C36010BD07FCFFFFFF03E0FFC3790248FB -:102D8000002B00D10148704734CD020078CD0200FD -:102D900008B501F03FFA014808BDC04674E00200E2 -:102DA00008B5086801F036FA004808BD74E0020072 -:102DB00073B50D1C022823D10126486801A909F02A -:102DC000EBFC7642341C019BC31898421BD001785F -:102DD000722901D0772905D1621C0ED172394C427B -:102DE0004C4108E0622901D0742906D1721C04D13B -:102DF00074394E424E410130E7E70E480E4913E068 -:102E000001267642341C01A9286809F0C5FC7342EA -:102E1000734162426241DBB2D2B2019901F04EFBD2 -:102E2000002805D10548064925F069F8FDF7F3F9B2 -:102E300076BDC04610F802007C460300C0F90200CF -:102E400089460300F8B5061C10200D1C141C1F1C1D -:102E500020F00BFC011E09D02C190F604D608D6015 -:102E6000CC60301C024A034B22F030FAF8BDC04659 -:102E7000BF350200D53502000022114B1A60031C39 -:102E8000104A1233FF33811800225A701A7004332B -:102E90008B42F9D1011C031C09310833FF31002298 -:102EA0001A709A705A70DA7004338B42F7D1C323C8 -:102EB0007F329B00C254044A044B1A607047C046DC -:102EC00060010020110300002948030004000020D5 -:102ED0000023F7B5071C1C1CA200BA18FF32517C56 -:102EE0007F2951D0927C651C9B18DBB2EF2B2AD92D -:102EF000EBB20193C1239B00FE187D23351C009388 -:102F0000009B019A934209DB281D291C042228F00A -:102F100073F9009B043D013B0093F1E7002395000A -:102F20007D19FF356B74AB74EB742B757D25023402 -:102F3000E4B2A5421CDB301D311C042228F05CF9F0 -:102F4000013D043EF5E77D291BD8104A525CD207AB -:102F500017D5C1237D269B00ECB2FD18A64207DBE6 -:102F6000281D291C042228F047F9013E043DF5E7FD -:102F70007E23A200BA18FF32537400239374D374D3 -:102F800013750134E4B2A7E7F7BDC046DB47030081 -:102F9000012110B54B1EDBB29B00C318FF335A7CD6 -:102FA0007F2A15D00B4CA25C520602D40131C9B263 -:102FB000F0E75A7D7F2AF9D0A25C7F2AF6D9DA7D24 -:102FC000002AF3D054B2002CF0DB0132DA74EDE7C2 -:102FD00010BDC0463A470300031CF7B54B4A1333F4 -:102FE000FF3382180021197004339342FAD10B1C6D -:102FF0005AB2002A01DA464A7DE0021CFC32176907 -:10300000B94205D37F2244339B001A5401207CE04F -:10301000D668755C602D01D9203DEDB24C1CE4B240 -:10302000BC4223D0325D0092602A02D9203AD2B24B -:103030000092232D1ED1009A303A092A01D9354A2F -:1030400059E00231CCB2BC4204D3FF2AF7D8427017 -:10305000211CCDE7315D0D1C303D092DF5D80A2529 -:103060006A430134303A5218E4B2ECE7232DE6D03B -:10307000002200920026F7B20197274FF25DAA4284 -:1030800014D1264AB25C94462A2A0FD0009A94455D -:103090000CD16C469A0024798218FF32547444781B -:1030A000013302311475DBB2CCB2D1E70136512EB7 -:1030B000E1D10022194ED1B2965D2A2E0BD1BE5C11 -:1030C000AE4208D19A008218FF3251744178013320 -:1030D0001175DBB2BCE70132512AEBD1493A1049F4 -:1030E000895CA94204D0002A04D0013AD2B2F6E7A2 -:1030F000002A04D10B4A0C4B00201A6005E0191C71 -:103100004331890041188A70A2E7FEBD1203000016 -:103110002C4803003E48030098460300E94603009C -:103120000B4903004C480300040000201130FF301D -:1031300003787F2B0AD002228256002A01DC044A3F -:1031400000E0044AD35C43700430F1E77047C046A6 -:10315000BB4803008B4703000023F0B589B0019002 -:103160000093009B019A9B00D3180393FF335E7C6E -:103170007F2E00D1C6E064498A5D900702D4009B8F -:103180000133BDE0D2074BD4009A7D25571C721C39 -:10319000D2B204925D4AFFB2921952780592DA7C5B -:1031A0001B7D0692C122920094460793019B6344C3 -:1031B0001C1C0293BD4207DB201D211C042228F0A9 -:1031C0001BF8013D043CF5E7019BBF00DF196B468E -:1031D0001B7CFF377B746B461B7DB51CBB746B4639 -:1031E0001B7EEDB2FB746B461B7F3B75009B9C1CEA -:1031F000464BE4B29E19B7787D26039BFF33DA7CF9 -:103200001B7D03920493A6426CDB029B0422181DD3 -:10321000191C27F0F1FF029B013E043B0293F2E7E9 -:10322000009A0132D2B2131C019844339B001B5CFC -:10323000002BF6D0009A571C7F2B07D0CA5C1207D0 -:1032400002D4243B012B01D8FBB289E7731CDBB20B -:1032500004932E4B7D259B195B78FFB20593039B4E -:10326000FF33DA7C1B7D0692C122920094460793BD -:10327000019B63441C1C0293BD4207DB201D211CE3 -:10328000042227F0B9FF013D043CF5E7019BBF0094 -:10329000DF196B461B7CFF377B746B461B7DB51CAF -:1032A000BB746B461B7EEDB2FB746B461B7F3B759C -:1032B000009B9C1C154BE4B29E19B7787D26039B9E -:1032C000FF33DA7C1B7D03920493A6420ADB029B48 -:1032D0000422181D191C27F08FFF029B013E043B9E -:1032E0000293F2E7019BA4001C196B46FF3465743E -:1032F000A7741B7BE3746B461B7C2375009B033315 -:10330000DBB22DE709B0F0BD3A470300BB4803002C -:10331000F0B5002587B00190019AAB00D318029355 -:10332000FF335A7C002A00D12EE17F2A00D155E1DB -:10333000AB496C1C895CC8062AD5DA7C7D260492D0 -:10334000202211404A424A4115218A1A0392C12281 -:103350001B7D92000593019BE7B29C18BE4207DBE0 -:10336000201D211C042227F047FF013E043CF5E705 -:10337000019BBF00DF196B461B7BFF377B7400236B -:10338000BB746B461B7CFB746B461B7D3B75ADE0D1 -:1033900018264E2A02D04F2A23D11B26DA7C7D27FD -:1033A00002920D225A74C1221B7D92000393019B4D -:1033B000E4B29D18A74207DB281D291C042227F030 -:1033C0001BFF013F043DF5E7019AA300D31800223B -:1033D000FF339A746A46127A5E74DA746A46127B14 -:1033E000B1E0502A01D11C26D8E7C90933D0D97CD5 -:1033F000002930D0E4B2211C019844318900095CD5 -:10340000002928D1A91CC9B20391890041180F1CB9 -:10341000FF37787C7F281ED0714E305CC0091AD0EF -:10342000F97C002917D0C1227D26019B92009D18AE -:10343000039B9E4207DB281D291C042227F0DCFE8B -:10344000013E043DF4E71F237B740023BB74FB742F -:103450003B75251C60E76C1C172A12D1597B6A1E2C -:10346000D2B2452901D11B3902E0392902D10D39E7 -:1034700059738DE05A4A525CD20900D1ACE0122255 -:10348000A9E0182A07D15A7B55498A5C7F2A00D8BF -:10349000A2E013229FE0202A05D15A7B3C2A00D0CB -:1034A0009AE0262297E0482A09D15A7D7F2A03D044 -:1034B0004B498A5C92060FD44B225A740CE03C2A8A -:1034C0000AD15A7D7F2A00D186E045498A5C92065E -:1034D00000D581E03F227EE05A7C4149895CC907E2 -:1034E00004D5597B20294BD10C3A74E0029B6C1C0B -:1034F000FF335A7C352A06D15A7B3A498A5C5207F7 -:103500006AD5102267E02A2A1FD1C1227D26DF7CDE -:103510001B7D92000293019BE4B29D18A64207DB3B -:10352000281D291C042227F067FE013E043DF5E713 -:10353000019AA300D3182B22FF335A7400229A74E5 -:103540006A46DF74127A1A7583E72C2A18D1C122D1 -:103550007D26DF7C1B7D92000293019BE4B29D18C7 -:10356000A64207DB281D291C042227F045FE013E48 -:10357000043DF5E7019AA300D318FF332D22DCE7C1 -:10358000452A04D0392A02D00135ECB261E72A1C61 -:10359000111C019843318900114B095C6C1C595C6A -:1035A0007F2919D901320199D2B292008A18FF32CB -:1035B000517C002906D05B5C7F2B0DD9D37C002B7E -:1035C00006D009E0527D7F2A06D09B5CDB0903D040 -:1035D0001E22029BFF335A74E4B23AE707B0F0BDF3 -:1035E0003A470300DB470300F7B501214C1EE4B264 -:1035F000231C44339B001B5C7F2B2CD0554DEB5C74 -:10360000DB0702D40131C9B2F0E7231C013BDBB276 -:10361000002B21D01A1C44329200125C7F2A03D066 -:103620004D4EB25C7F2AF1D99A008218FF32567C47 -:103630007F2E0BD0AF5DBF0603D5474FBE5D76072B -:1036400004D5967C77080136F61996740133DBB2FF -:10365000A342E9D1D6E700239A008218FF32517CB9 -:103660007F2976D03C4D6E5CF40933D04127591C3C -:10367000C9B28C000419FF34667C0194BC467F2ECD -:1036800001D0AF5DBC464024AF5D27420FD1123E52 -:10369000012E01D90B1CDFE70233DBB244339B0060 -:1036A0001B5CEB5C2342F5D0937C013B08E0634656 -:1036B0005B0707D46346DB07ECD5937CDC081B1B58 -:1036C0009374E7E7019B9B7B5A1C9B08D318019AD4 -:1036D0009373DFE71F4C645C21070FD50133D9B228 -:1036E0008B00C318FF335A7C7F2AD3D0AA5C920781 -:1036F000D0D506229A74013A9A73CBE702210E4282 -:103700001BD01C1C0134E4B2211C44318900095C2B -:103710000029F7D001337F2919D00F4D695C890743 -:1037200015D5A4000419FF34A17C49080131A17406 -:10373000947C64080134947409E0E40606D5547B53 -:103740002C5D0C4202D0917C023991740133D9B2C4 -:10375000A0E7F7BDDB4703003A47030070B5041C40 -:10376000FFF78AFB201CFFF737FC231C0022FC33E9 -:10377000011EDA601A61914244D0261C224D113696 -:103780002B68FF36934203D02048311C02F07CF8AE -:10379000201CFFF7BDFD201CFFF7FAFB201CFFF7E4 -:1037A000C5FC201CFFF720FF201CFFF7D5FCC4221E -:1037B000331C9200A1181A78502A06D97F2A07D004 -:1037C000134A144B00211A601CE004338B42F2D1DF -:1037D0002B68002B02D010481EF0BCF9201CFFF70C -:1037E00077FB2B68002B03D00C48311C02F04CF8FF -:1037F000201C1FF0FFFE074B0949186827F014FE34 -:1038000041424141081C70BD6C0100206348030027 -:10381000724803000400002098480300A8480300F1 -:1038200029480300034B82B001AA98331A6002B002 -:103830007047C046882E0020034B82B098331B6827 -:1038400001A8181A02B07047882E0020014B9C3343 -:1038500018607047882E002008B50349034824F0FB -:1038600047FBFCF7D8FCC046260900004CF80200D4 -:10387000064B07B51A1C9C33983212681B6801A9C5 -:10388000521A9A4201D3FFF7E7FF07BD882E0020A6 -:1038900008B50B790349002B00D1034923F0BDF88B -:1038A00008BDC0466B2903006329030037B51D1C02 -:1038B0000023081C00930C1C111C1A1C0133FCF77C -:1038C00093FE064B002C06D02868FEF723FB044B22 -:1038D000002800D1014B181C3EBDC04678CD020027 -:1038E00034CD020010B50B1C041C002906D0054A7B -:1038F000096802609A6B00230DF0B4FD201CFCF7F0 -:103900008AFCC04678FD0200F0B5041C87B0039223 -:1039100002936718002A0ED0023A222A0BD93D4999 -:103920003D4824F0ECFAFCF776FC207802F06AF9C6 -:10393000002803D00134BC42F7D30AE023782B2BB4 -:1039400001D1013405E0061C2D2B03D101340126E1 -:1039500000E00026391B201C03AA1FF0FDFA2318E3 -:103960001D1C00240093BD4210D22B78181C01931B -:1039700002F060F9039B002806D0019A2F3A9A4280 -:1039800002DC019B303B0DE0102B03D0002E19D040 -:10399000644217E02023019A13431A1C613A052A56 -:1039A000F4D8573B201C0399019305F099F900289E -:1039B0001AD1039B5C43019B1C196300634013D421 -:1039C0000135D0E7012364001C43009B9D4216D0C3 -:1039D000BD4206D2287802F015F900280FD0013533 -:1039E000F6E7BD4213D00AE0009B05A80593F91A3B -:1039F000321C039B20F0A4F9059D041CE5E7074950 -:103A00000548039A0DF0C0FC0299FFF76BFF201CDC -:103A100007B0F0BD1449030010F802003749030055 -:103A2000F0B5041C8BB00993431808920193019BD5 -:103A30009C4200D30EE1207802F0E4F8002801D087 -:103A40000134F4E723782B2B02D10134049005E0F4 -:103A500004902D2B0ED12C3B01340493019B9C42EE -:103A600008D3824B002706930023251C07973E1C92 -:103A7000039356E0202322781A43692A2ED1019914 -:103A8000A21C914200D8BEE062781A436E2A00D090 -:103A9000B9E0A2781A43662A00D0B4E0E21DE51C22 -:103AA000914200D8A8E0E2781A43692A00D0A3E046 -:103AB00022791A436E2A00D09EE062791A43692A5D -:103AC00000D099E0A2791A43742A00D094E0E279F8 -:103AD0001343792B00D08FE005358DE06E2AC0D1DD -:103AE0000199A21C914200D88DE062781A43612AA4 -:103AF00000D088E0A27813436E2B00D083E0E51C51 -:103B000000265B4F7BE06B1C02932B781A1C303A2B -:103B10000592092A30D8022E07D10A237B43D718F1 -:103B2000029D019B9D42EED354E0012E15D10598D4 -:103B300017F0C8F8069916F0ADFD011C039816F0B1 -:103B40003BFA0390069818F0F1FE4A4A4A4B18F0E7 -:103B500067F818F03FFF0690E2E74849039816F02F -:103B600099FD051C059817F0ADF8011C281C16F0EE -:103B700023FA00260390D3E7002E02D12E2B02D188 -:103B800026E0022E19D020221A43652A15D1029B65 -:103B9000019A93420BD26B782B2B02D1AB1C029370 -:103BA00005E02D2B03D1AB1C029301230793029B4D -:103BB000019A934247D00226B2E70026089AB24201 -:103BC00009D0202213436A2B05D1029D013602E061 -:103BD0000126A5E70026079B002B00D07F42381C5A -:103BE00017F028F8011C254819F028FF011C03983C -:103BF00016F050FD071C02E0FF270026FF05049B7E -:103C0000002B09D005E0049B002B1CD0251C0026AE -:103C1000002780231B06FF18A54214D0019B9D425C -:103C200006D2287801F0EEFF00280CD00135F5E728 -:103C3000019B9D4207D1002E02D1099B002B0CD085 -:103C40000F48104901E00E480F4924F058F9109927 -:103C5000FFF748FE0023049303E7032302209F435A -:103C60000A4B0743F8180BB0F0BDC046CDCCCC3D95 -:103C70000000C07F9A9999999999B93F0000204115 -:103C800010F802005F4903007C49030000008080B7 -:103C900038B5051C0C200C1C1FF0DAFC024B4560EB -:103CA0000360846038BDC04680CD020010B5041C9E -:103CB0000C201FF0CDFC034B4460036001235B42EA -:103CC000836010BDBCCD020010B5041C0C201FF099 -:103CD000BFFC034B446003600223037210BDC04667 -:103CE000ACCF020010B5041C10201FF0B1FC044B37 -:103CF0000360237A0371636883600023C36010BD8F -:103D000044CF020010B5041C10201FF0A1FC044B8E -:103D100084600360034B43600023C36010BDC04652 -:103D20003CE20200A737020008B504301FF0DFFEB6 -:103D3000004808BD74E00200F8B5041C0D1C0B7AA5 -:103D4000124A9B00995822F068FE1149201C22F06B -:103D500064FE281CFFF7C6FF0126071C381C1FF055 -:103D60002CFD051E0CD0002E03D1201C094922F089 -:103D700054FE201C291C0122FDF7BCFE0026EDE7A5 -:103D8000201C054922F049FEF8BDC04604CE0200C1 -:103D9000964903008B40030099490300F7B50B686F -:103DA0001C4A041C0D1C934203D01B495A6822F084 -:103DB00000FF201C194922F030FE00230127019347 -:103DC000281C01A91FF0DAFC061E15D0002F03D114 -:103DD000201C134922F021FE0122201C3168FDF72E -:103DE00089FE1049201C22F018FE201C7168012257 -:103DF000FDF780FE0027E3E7201C0B4922F00DFEB3 -:103E00002B68044A934203D0201C084922F005FE87 -:103E1000F7BDC04664CE02009C490300A0490300E0 -:103E20008B400300A1870300DD4403001B43030014 -:103E3000002806D001280BD14B68DB085B00184333 -:103E400007E007224B680348934302D1024800E091 -:103E50000020704734CD020078CD020038B5151C23 -:103E60001A1C1C1C00F01CFE002802D04368002B0A -:103E70000ED12B1E08D1094B022C05D10849094847 -:103E800024F03DF8FCF7C7F9012C05D1436003E0AD -:103E9000022C01D100224260181C38BD74E00200DF -:103EA000A2490300F0FD020030B5002585B001A94C -:103EB000041C01951FF062FCA84205D10A490B4879 -:103EC00024F01DF8FCF7A7F9636802A9083B6360BA -:103ED0000368029343680393042328C0022005F07B -:103EE000F1FE05B030BDC046AA490300F0FD020056 -:103EF00073B50C1C151C1B280BD000231F2839D1AF -:103F0000081D111C002200F0CBFD1B4B002831D1F5 -:103F100018E00323194208D10A6818498A4204D1DB -:103F20002B4002D12968914224D0154BAA0721D1F8 -:103F3000144A296891421DD162686B685340072278 -:103F4000934301D00E4B15E00193201C01A91FF0F3 -:103F500015FC061E0DD0281D3168002200F0A0FDC2 -:103F6000031EEFD070685968FDF742FE0028ECD1BF -:103F7000E8E7014B181C76BD34CD020028CE0200C4 -:103F800078CD020064CE0200F0B51368141C012243 -:103F900087B00F680D1C0092D9080223061CFCF79D -:103FA00023FB022E22D103236868034016D1026846 -:103FB000D1682C4A914211D12A68904216D00593BB -:103FC000686805A91FF0DAFB061E0FD0381D31689E -:103FD000012200F065FD73684360F1E704F0C8F862 -:103FE0000390039804F012F9002801D1002526E07F -:103FF00004F0BEF8051C04F009F90290281C04F036 -:1040000005F9061C281C04F001F9029B002B03D0C3 -:10401000002E01D0002805D01349144823F06FFF6B -:10402000FCF7F9F8381D0299012200F039FD4660CD -:10403000D7E7A368EE009959002904D101356368D8 -:104040009D42F6D30AE00429F8D0381D012200F081 -:1040500027FDA3689E1973684360EFE7044807B023 -:10406000F0BDC04629410000C949030010F8020014 -:1040700074E0020010B5041C0C201FF0E9FA034B99 -:10408000446003600023037210BDC046ACCF020041 -:1040900010B5041C0C201FF0DBFA034B44600360D6 -:1040A0000123037210BDC046ACCF020008B5043036 -:1040B000002200F0F5FC002805D10449044823F053 -:1040C0001EFFFCF7A8F8406808BDC046A2490300DF -:1040D000F0FD020008B5024B08C01FF0E9FC08BD66 -:1040E00064CE0200F8B5071C48680E1C04F040F8C6 -:1040F000041CFDF7EBFE0B4D022F00D9B56800281C -:1041000000D040101FF0ADFB061C201C04F07EF810 -:10411000011E05D0301D012200F0C2FC4560F4E70D -:10412000301CF8BD74E00200F0B5071C89B0002017 -:104130001E1C0D1C01921FF094FB0E4B041C07600B -:104140009F4203D10422037913430371019B2B4344 -:104150000DD03368AA00B21805A8019903940493FE -:104160001FF0B8FC681C03A905AAFFF70DFF201C6F -:1041700009B0F0BD28CE020008B5002A02D11FF018 -:10418000B3FB11E0042A0DD10430002200F088FCBA -:10419000002805D10549064823F0B1FEFCF73BF89D -:1041A000406802E01FF096FB024808BDA2490300E8 -:1041B000F0FD020074E002008023044A5B051B69E5 -:1041C000107858438023DB02181A7047F82D00201E -:1041D0008023044A5B051B69107858438023DB0267 -:1041E000181A7047F72D002038B5084DC4012B6808 -:1041F000002118191FF0D4FD2868054B00197F30E5 -:1042000000781B788342F0D238BDC046640100209C -:10421000F92D002010B5C379041C002B08D0064BE3 -:1042200000791B68C00118180130A1791FF0B8FD92 -:104230000023237210BDC0466401002008B5034965 -:10424000034823F05CFEFBF7E6FFC0461A4A030072 -:1042500010F80200021C124B10B518685379DB01EC -:10426000C3181C1C7F342178FF2908D11179C9019A -:1042700041184978FF2910D0907988420DD0917962 -:104280005B1801315878CBB27E2B01D0937106E0D8 -:10429000002393712378537101E00120404210BD47 -:1042A0006401002038B5F8239B021A784D2A01D00A -:1042B0008023DB02802580206D052C69C0026442CA -:1042C00023402C6929691C1B001B15F0C5FB2A4BD8 -:1042D0002A4A18702B69E518AD185B421D40284921 -:1042E000284B294A5B1A9B18802252059D4202D214 -:1042F0001369ED18F3E78020C0021169401B15F027 -:10430000ABFB0122214B641B1870E411204BE4B27B -:104310001C70204B1A6000221F4B5A6059681D4ABE -:104320000029FBD0A123DB00D358DBB2A342F2D299 -:104330001A4901330B7001235360FFF73DFF0378E7 -:10434000051C174CFD2B09D180235B051869154B03 -:10435000C009C018C001281820600BE0FFF738FF23 -:104360000378803DFD2B04D0FFF732FFFD211FF0C5 -:1043700017FD256038BDC046F72D0020FF87FFFFE1 -:104380000000002028010020ACB10300F82D00201F -:10439000F92D002000D00040FCD00040F62D002078 -:1043A00064010020FFFFFF01F0B585B0264E274ACB -:1043B0003478274D201C1378296801330296039224 -:1043C000C201525CFF2A3DD00130C0B2984200D1F8 -:1043D0000120A042F4D1802300275B051B69DB0983 -:1043E0000193E3010093009A2B689E183278301CE9 -:1043F00053425341FF181FF0E9FC002809D0002365 -:10440000019A934218D0DA01B25C002A01D101333B -:10441000F6E7039B01341B78E4B201339C4200D1E0 -:104420000124029B1B78A342DBD1072F02D91FF086 -:1044300066FABBE7FF2005E02868009BC0181FF064 -:10444000BBFC201C05B0F0BDF62D0020F92D00208E -:1044500064010020F7B5071C0D1C01240E4B1B78CE -:1044600001930E4B1E68019B9C4211D8E10171180B -:104470000B78FE2B09D18B78AB4206D10331381C67 -:104480002A1C26F0AAFE002804D00134E4B2EAE790 -:10449000FF2000E0201CFEBDF92D0020640100205B -:1044A00008B5054A03791268DB01D318D81C99783E -:1044B000002207F0B9FC08BD64010020F0B585B00A -:1044C00002900D1C171C039378294DD8FFF7C2FFEB -:1044D000031C041C002F2AD0254EFF2805D032686B -:1044E000C301D01800211FF05BFCFFF75DFF041E25 -:1044F000FF2C05D11F49204823F001FDFBF78BFE5F -:104500003368C0010190FE2118181FF049FC336880 -:10451000019AE9B2981802301FF042FC3068019B02 -:104520000299C01803302A1C00F028FF02E0381C52 -:10453000FF2B1AD00C201FF08BF8039B002B01D00F -:104540000E4B00E00E4B0360094B04711B68447175 -:10455000E4011C19A378C77102338371012303722C -:104560006B461B7B437200E0002005B0F0BDC046E7 -:1045700064010020374A0300C0F9020040CC020069 -:1045800088CC020007B501A908F006F90199FFF7E8 -:1045900061FFFF2805D10549054823F0B0FCFBF772 -:1045A0003AFEFFF721FE03480EBDC04689460300D0 -:1045B000C0F9020074E00200F7B50192027A061C0D -:1045C0000091002A01D1FFF739FEC579002D06D1EF -:1045D000214A17680279D201D25D002A23D109222B -:1045E00001201A60404236E03279D201BA1852787E -:1045F000FF2A24D0D21A944200D9141C019A521BCB -:10460000944200D9141C002C24D0009AC9185019C7 -:104610000131221C26F0F0FDB379E318DBB27E2BCA -:104620000FD0B3712D1971797E24C90179180A1C34 -:104630007F32B3791278E41AFF2ADFD1D4E700245D -:10464000DCE70023B3717379DB01FB187F331B7840 -:104650007371E7E7281CFEBD64010020F0B585B04A -:104660000393037A041C01910292002B01D1FFF7FE -:10467000E5FDC379002B07D02B4A03791268DB01D3 -:104680009B5C029F002B1CD1092341E060793368B9 -:10469000C0011818291C7F301FF082FB3368ED0120 -:1046A000581961791FF07CFB63793268DB01D318FC -:1046B0007F331B786371009A019B94466344019396 -:1046C000BF1A002F29D07E22A3790097D21A9742D1 -:1046D00000D90092144E60793268C0011018C018D9 -:1046E000009A0130019900F049FEA379009AD3188D -:1046F000DBB27E2B13D10023A371FFF755FE051EFD -:10470000FF2DC3D12079FFF76FFD002323721C23F7 -:104710000120039A4042136003E0029801E0A37174 -:10472000C9E705B0F0BDC04664010020002038B5DF -:10473000011C1EF0E4FB0124051C0C4B1B78A3425A -:1047400012D30B4AE3011268D3181A78FE2A08D153 -:104750009978D81C002207F067FB011C281CFCF785 -:1047600089FA0134E4B2E8E7281C38BDF92D0020AD -:104770006401002013B501A908F00EF80199FFF7B4 -:1047800069FEFF2805D10F490F4823F0B8FBFBF75E -:1047900042FD0E4B1C68C301E31859789B78023325 -:1047A000DAB20023C00120187F300078FF2803D040 -:1047B0009B1A7E330022F5E7881AC0181FF09AFA78 -:1047C00016BDC04689460300C0F9020064010020FE -:1047D00008B5024A024B20F079FD08BD55420000A1 -:1047E00015420000FF2310B50324DB05CB18A343BB -:1047F000021C181CA24213D0042A09D00021002A4E -:104800000ED115F0F5FA0749002809D0064907E04E -:104810008022022012069B18A343044A03439918DE -:10482000081C10BD34CD020078CD0200000080804D -:10483000FF23DB0510B5041CC818032386B098437A -:1048400004330093002302A901931022673300F080 -:10485000BFFD02A9201C22F0E0F802A82E2126F0BC -:10486000D5FD00280FD102A8652126F0CFFD002834 -:1048700009D102A86E2126F0C9FD002803D1201C11 -:10488000024922F0CAF806B010BDC046094B030029 -:1048900030B51D1C002385B00C1C0093081C111C96 -:1048A0001A1C0133FBF7A0FE002C21D02868124B04 -:1048B0000340062B06D0032318420DD10F4A01688E -:1048C000914209D103A907F067FF002303990093E0 -:1048D0001A1CFFF7A5F80CE00340022B09D0FDF7E6 -:1048E0003DFA03239843013B1843054BC01800E0F1 -:1048F000044805B030BDC046070080FF80CA0200F2 -:10490000000080800200808070B5051C86B0101CFD -:104910000191FDF723FA041C0390681F182800D9A1 -:10492000B0E015F07BF80D10161B2C37686DAFAF9B -:10493000AFAFAF0D10161B2C3768898E93989D0072 -:104940000198211C54E00198211C15F0D5FF01901D -:104950008FE00198211C15F09DFEF8E7201C002136 -:1049600015F046FA002805D04849494823F0C7FA0F -:10497000FBF751FC01A803A91FF027F879E0201CE0 -:10498000002115F035FA0028EED10198211C15F010 -:104990008FFCDCE7201C002115F02AFA0028E3D167 -:1049A000211C019818F06AFF0021051C019015F0E8 -:1049B0001FFA002807D0039A0023002A01DA802377 -:1049C0001B06019355E00021281C15F017FA431E21 -:1049D00098410124039E404204400021301C15F000 -:1049E0000DFA431E9841E4B2844242D0281C311C87 -:1049F00015F0E2FAABE70198211C19F01FF8A6E7C1 -:104A0000201C002115F0F4F90028ADD101A803A95C -:104A10001EF0DBFF03220220019B1E499343034348 -:104A20005B180493039B934303435B1804A905930A -:104A300005F048F9031C26E00198211C15F0DEF969 -:104A400012E00198211C15F0EDF90DE00198211CF0 -:104A500015F0CEF908E00198211C15F0D9F903E012 -:104A60000198211C15F0E8F90B4B00280BD10B4BDA -:104A700009E00323019A02209A43131C054A0343C9 -:104A80009B1800E00023181C06B070BD4D4A0300BF -:104A90006CFC02000000808034CD020078CD020062 -:104AA000F0B5067887B0B30702D5002A00D0F2E04F -:104AB000F307DB0FDBB20293002B0ED0774B0B40DA -:104AC000062B0AD003230B4003D1754C0D68A54279 -:104AD00002D0012A01D0DEE0029301920D1C041CD9 -:104AE000730749D503688768DE08F600BE19B74228 -:104AF00011D23868A84204D1019B022B00D0A1E05A -:104B00009EE0029B002B04D1291CFDF771F80028C0 -:104B1000F2D10837EBE7019B012B00D0BBE0236803 -:104B2000D9086368994210D104316160A068C90056 -:104B30001EF0A4FD23686268DB08D21ADB00A060C7 -:104B4000D200C018002126F074FB07222068C30899 -:104B5000591CC90002400A432260A268DB004F4989 -:104B6000D3181D60181C0D40062D00D194E00121C2 -:104B700022788A4322708FE04368002B05D1019B85 -:104B8000012B00D087E000F08DF8444B2B400493BC -:104B9000062B04D1E8081DF068FF039005E0022011 -:104BA000291C03F081F9431003930398616814F002 -:104BB000D9FF002600910591009BDF00A368DF1953 -:104BC000386800281AD1019B311C012B63D1206861 -:104BD000C3080133DA000723034013432360002E88 -:104BE00000D1391C00234B60049B0D60081C062B70 -:104BF00052D001222378934323704DE0042803D13F -:104C0000002E21D13E1C1FE0A84203D1019B022BA4 -:104C100018D108E0029B002B16D1291CFCF7E8FFF5 -:104C2000002811D0F2E723686168083B23600098F0 -:104C3000013014F097FFA368C900CB58002B00D0B7 -:104C400004233B60381C27E000986168013014F0B1 -:104C500089FF059A00919142AED1019B012B1AD197 -:104C6000002E0ED023680833236000237360049B5A -:104C70003560062B03D02378019A93432370301CB0 -:104C80000AE0201C00F00EF80398616814F06AFF37 -:104C90000091059190E7002007B0F0BD070080FF6C -:104CA00080CA0200F7B54368041C0193591C002315 -:104CB000174A9A588A4205D204335C2BF8D1012551 -:104CC0000D4300E0151CE800A7681EF0D3FC072385 -:104CD00022686560134001223D1C002623601343B7 -:104CE0002370A060019B9E420DD02968002907D047 -:104CF000042905D0201C0122FFF7D2FE6B68436017 -:104D000001360835EEE7381C1EF0C9FCF7BDC04679 -:104D100048D002000022F8B50768051C8668781C98 -:104D2000114BD358834205D204325C2AF8D10123B7 -:104D3000184300E0181C002428606C6080001EF0FE -:104D400099FCA860BC420BD0A300F158002905D003 -:104D5000042903D0281C01221EF0E8FE0134F1E7EB -:104D6000301C1EF09CFCF8BD48D002007FB5012825 -:104D700003D108680021FCF7D7FE02A810211DF01E -:104D8000CEFE02A809491EF055FB039B0193002BA0 -:104D900006D1042804D1064823F0A4F8FBF73BFA17 -:104DA00002A9044807F00AF807B000BDBF74030069 -:104DB00030FC020080CA020010B510201EF048FC32 -:104DC000041C034B08C021F0C6F8201C10BDC046CF -:104DD00030D3020038B5052827D80D1C14F01EFE6C -:104DE00005250D03141C081C20E0081D21F0DFF927 -:104DF000031E0F481AD00F4818E0081D21F0F6FCDA -:104E000001214000084311E0FFF7D6FF291D041CD3 -:104E1000043021F002FA06E0FFF7CEFF291D041C42 -:104E2000043021F00AFA201C00E0002038BDC04602 -:104E300034CD020078CD020038B5051C83070CD1B3 -:104E4000104B02689A4208D1FFF7B6FF041C291DD7 -:104E5000043021F0D7F9201C12E0281CFCF71AFFBF -:104E6000C0231B06984205D180200021C0051EF0FA -:104E700032FF05E0C317C018584001234000184313 -:104E800038BDC04630D3020038B5051C18F0FAF919 -:104E9000012802D10F48104903E0002805D10F482E -:104EA0000F490CF071FAFBF7B6F9281C1FF054F803 -:104EB000002806D1281C15F09DFE01244000204347 -:104EC00007E0FFF779FF041C291C043021F0C2F829 -:104ED000201C38BD3CFD02005E4A030010F80200B1 -:104EE000774A030007B5C30701D540100DE0043031 -:104EF00001A908F06FFF002801D0019805E00349DF -:104F0000034822F0FCFFFBF786F90EBD904A030030 -:104F10003CFD0200F0B58DB00190012008400D1C51 -:104F2000171C041E07D04B1003A802A9022221F06F -:104F300051F803AE08E003230B4065D19A4A096893 -:104F4000914200D025E12E1DFB0707D57B1003A859 -:104F500002A9022221F03EF803AD1AE003231F420A -:104F600005D1914A3968914201D13D1D11E03B4084 -:104F7000022B00D011E18D4B3B40062B00D10CE100 -:104F8000301C21F086FC3A1C011C0198FFF7BCFC88 -:104F900008E1019B092B01D0162B16D1281C21F00A -:104FA00006F900283DD1301C21F073FC041C281C9C -:104FB00021F06FFC011C201C15F07AF90323022458 -:104FC00098437B4B0443E018ECE0019B182B00D97D -:104FD000BAE0FFF7F1FE041C019814F01FFD6A709F -:104FE0006476760D10171DDC478E946A70647676B1 -:104FF0000D10171DDC478E00201D311C4FE0201DB9 -:10500000311C2A1C21F0EBF9201CCBE0201D311CA7 -:105010002A1C21F025FBF7E7281C21F0C8F80028FE -:1050200002D06448644957E006A8271D20F093FF8A -:10503000321C2B1C381C06A908F076FD2A78337820 -:105040005340DB070ED506A821F0B1F8002809D19E -:10505000012109A8494220F0B3FF381C391C09AAD4 -:1050600021F082F906A820F082FFCDE7281C21F06C -:105070009EF80028D5D109A8271D20F06CFF321C0E -:105080002B1C09A8391C08F04FFD09A820F06FFF60 -:105090002A7833785340DB07B6D5381C391C2A1CD4 -:1050A00021F062F9B0E7201D311C2A1C21F0DFF944 -:1050B000AAE7201D311C2A1C21F059FAA4E7201D63 -:1050C000311C2A1C08F0BCFC9EE7381CFFF70AFFC5 -:1050D000021E05DA39483A4922F011FFFBF79BF826 -:1050E000019B201D311C032B01D0102B02D108F095 -:1050F0003BFC89E721F0D8F886E7201D311C2A1CEB -:1051000021F031FB80E7281C21F051F8002888D1DC -:10511000FFF752FE271D0190321C2B1C0430391C56 -:1051200008F002FD2A7833785340DB0704D5381C99 -:10513000391C2A1C21F018F9019B09A902200993A6 -:105140000A9404F0BFFD2DE0301C291C21F034F836 -:10515000019A031C193A0020042A23D8101C14F0C9 -:105160005DFC0307130B0F001648002B1ADA0EE044 -:105170001448002B0BDC15E01248002B12DC06E073 -:105180001048002B03DA0DE00E48002B0AD10E4820 -:1051900008E0181C06E0002004E00198291C3A1CD5 -:1051A00001F090F80DB0F0BD30D30200070080FF91 -:1051B000000080806CFC02004D4A030010F80200E1 -:1051C000BD4A030078CD020034CD0200A0200B4A76 -:1051D0000B49D36F30B5C0058B4201D1094C01E0BA -:1051E000A124E4001D68055118895B68D3671B89F9 -:1051F000181A002801DC0B89C01830BD882E002049 -:10520000080000200C05000008B5044A044B0220E9 -:10521000DA670449782205F0A5FF08BD08000020E0 -:10522000882E0020CD510000F8B5144BC218144B45 -:105230009A421FD8134B051118681E1C002801D173 -:105240001D8119E01EF0A7FDA0220F4B3168D20589 -:10525000D15037897468B44207D02089391C68431B -:1052600014F08AFC20816468F5E72581FFF7CCFF04 -:10527000002001E001204042F8BDC04618FCFFFFBD -:10528000583E0F00080000200C050000014B188953 -:105290000001704708000020334BF7B5051C994208 -:1052A0005ED80120314AA840161C5368B34205D08D -:1052B0001F68074204D11A1C5B68F7E7002310E05F -:1052C000C44327401F60A0270194294CFF05385193 -:1052D0003068019C0440346018680028EED158689A -:1052E0005060002081423DD0204A4900148901319C -:1052F0006143C912814200D10121081B4742474145 -:105300006DB2C91B641A291CA0200326C131FF31CC -:105310008900C0050E500120A840051C161C10680D -:1053200051682843A4B210600889914204D0A04279 -:1053300002D20E1C4968F7E7A04203D10B681D4357 -:105340000D600BE0002B04D1191C0C2001F08EFD28 -:10535000031C72681D605A601C817360002001E0AC -:1053600001204042FEBDC046FF03000008000020AF -:105370000C05000000487047F0D00200F8B50D1C85 -:10538000061C141C05F03AFE2B1C032733433B423A -:105390000BD1BC4209D9A208301C291C13F03EFFD6 -:1053A000231CBB43F618ED183C40002C04D0301CE5 -:1053B000291C221C25F060FD8023044ADB00D35801 -:1053C000002BF9D005F00AFEF8BDC04600E0014010 -:1053D000F0B58BB0079310AB80CB041C01911B7808 -:1053E000062A11D8012A05D93F230B700B1C013363 -:1053F000019301E0002A02D0002301990B700123E0 -:105400009342AD4168423BE2002809DA019B0199D1 -:10541000013300932D230B7080231B06C41807E073 -:1054200001990091002B03D00131009101990B707B -:10543000FF21C905081C019B20400993231C8842B9 -:105440001FD12023079A00991A40131C64024E2290 -:10545000CD1C002C09D100985A40492142704622A7 -:10546000594053400170837007E000991A430A7055 -:1054700041214B4000994B708A7000232B70019B97 -:10548000D0E1002F00DA0627551E0099019A521A22 -:10549000AD182022079911430291672903D1002FEB -:1054A00012D1012710E0002B1DD1029B662B0DD1DC -:1054B0007B1CAB4200DBAF1E6623039300237D1CE5 -:1054C000049305931E1CE9E0002B0CD17B1DAB421D -:1054D00000DBAF1F029B652B00D0CDE003933A3B6E -:1054E00000250493CCE0B64A934271D8201CB549FC -:1054F00014F0A2FC431E9841002620233030059072 -:1055000004930396B04B211CF05814F08BFC002838 -:105510000AD0049A039B944663440393AB4B201C2C -:10552000F15815F0B7F8041C049B04365B10049383 -:10553000182EE7D12D230493A14B039EA34213D32E -:10554000201CA04914F078FC002804D0002E09D1BA -:105550002B23049306E0201C9D4915F09BF801368F -:10556000041C01E0FE24A405029B662B03D0672BDC -:1055700024D1042E22DC6A46009B127D1A70029B05 -:10558000672B01D1731EFF187B1CAB4200DBAF1EE3 -:10559000002F00D155E12E23009A3D1C5370131C9F -:1055A0000233013E0093002E6DD0002D04D0302236 -:1055B000013D1A700133F4E7049565E06B1FBB42AF -:1055C00000DD48E1029A672A63D0AF1F131C62E036 -:1055D00000262023039604937C4B211CF05814F0E2 -:1055E00017FC00280AD0049A039B94466344039353 -:1055F000754B201CF15815F04DF8041C049B043623 -:105600005B100493182EE7D1201C7149039E14F0FF -:1056100013FC002805D0201C6E4915F03BF801361C -:10562000041C029B662B0AD1AE420BDAF31901333C -:10563000AB421ADBAD1BAF1E17D56F1E15E0029BE8 -:10564000652B05D16B1FBB4200DDEDE0AF1FEBE02A -:10565000029B672B00D00CE13B1DAB4200DB6F1FB0 -:10566000BE4200DBE7E0F343FF180023BD190493BB -:10567000013505966633DCE00025029B0495039313 -:1056800005952E1C0AE0049601235B4205936733BF -:10569000CFE01F1C029B002503930595FB43DB17FE -:1056A0001F40039B652B01D17D1C06E0039B672BEC -:1056B00003D13D1E01D101252F1C00230693069B1B -:1056C000AB4225DA201C15F095FA009B009A0133B5 -:1056D0000893031C30331370059B069A934207D13D -:1056E000002F05D0009B009A023308932E2353709D -:1056F00015F0A0FA011C201C15F0FEF8344914F036 -:10570000C9FF069B041C01330693089B0093D6E750 -:10571000029B009D662B02D1012E62DCA1E0201CC1 -:105720002D4914F089FB00283FD0009B013B1A78DB -:105730002E2AFBD0111C3039092902D901330193DB -:105740000AE0392A03D0013201931A7004E03022B2 -:105750001A70019A9342E9D1019B1B78302B1CD11E -:10576000019A52782E2A0BD10399662908D0019903 -:105770004B70049B0A702D2B01D1013E00E00136D5 -:10578000009D01352B1C019A934204D95A1E1178B1 -:105790001970131CF7E731231370094B9C4204D88E -:1057A000039B663B5A425341FF1A029B672B18D159 -:1057B000002F16DD6B1E1A78302A0FD11D1CF9E759 -:1057C000FFFF7F3FF8FF7F3FC0D10200A8D102005A -:1057D00000002041CDCCCC3D0000A0402E2A00D1BD -:1057E0001D1C049B002B1AD02023079A0A211A4063 -:1057F000131C452213432B706B461B7C301C6B70B3 -:1058000014F0BAF90A2114F09DFA3031A970301C55 -:105810000A2114F097FA2C1D3031E970251C002361 -:105820002B70099BE81A2BE02B2300250493059588 -:105830003A33039332E7672303933C3B00250493F9 -:105840002BE7009B04970133009301235B420593F0 -:105850006733039303E0029B039300230593002522 -:105860001FE7201C074914F0E7FA002800D05CE786 -:10587000B7E7029B002503932B230595049310E7BC -:105880000BB0F0BD0000A040F7B5061C194D0C1C74 -:10589000281C1CF05FF9311C17481CF089F81748C8 -:1058A0001CF058F916481CF055F9FF239B00E61828 -:1058B00021787F2916D0B44214D0627850290BD8B1 -:1058C000104B11485F5C114B5B5C0092A278019217 -:1058D0003A1C1CF06DF803E0A3780D481CF068F842 -:1058E0000434E5E7281C1CF035F90A481CF032F9AD -:1058F000F7BDC0460C4B0300394B0300414B03007E -:10590000174C030098460300624B0300E94603006E -:10591000854B0300354C0300F0B51D1C89B0069083 -:105920001B48161C07911CF015F9291C19481CF07E -:105930003FF819481CF00EF918481CF00BF9002428 -:10594000AC4220DA079BA0001818C778069BBC461B -:105950003F073F0F195D82780378009707889B0601 -:10596000FF047F0E019767463F09029700681209FE -:105970000003400E0390305D9B0E049008481CF01D -:1059800017F80134DCE702481CF0E4F809B0F0BD78 -:105990000C4B0300A64B0300D34B0300054C030044 -:1059A000374C0300F0B5456887B00393AB6805A892 -:1059B0000F1C029205931FF011FD061C05A81FF095 -:1059C0000DFD0323321C58430932101880001DF0CE -:1059D0003FFE041C094BAA6803606B68291C4360E6 -:1059E000059B06629B1AC360039B083000933A1C18 -:1059F000029B05F061F9201C07B0F0BD20D2020027 -:105A000038B5051C88680C1C1FF0AEF80349021C51 -:105A1000231C281C21F0CDF838BDC046594C03008A -:105A200010B5041C08201DF013FE024B44600360F7 -:105A300010BDC046D8D10200F8B5041CC0680E1CC9 -:105A4000002801D118602FE0201C111C6269203051 -:105A50001D1C824208D1154A964206D014491548A9 -:105A600022F04DFAFAF7D7FB1660201C124E63683D -:105A70000830776873600BF043FD7760012806D02B -:105A80000023E360022809D063691B680BE06369A7 -:105A90001B682B60002B07D1E36005E0236A073306 -:105AA0009B00E41863682B60F8BDC04674E00200F8 -:105AB000774C030000FD0200882E002013B501ABD7 -:105AC000141CFFF7B9FF01280DD0184C02281CD078 -:105AD000019BA34228D0002B26D0012101AA144803 -:105AE00022F0FAF90DE0002C0DD0201CFBF7E8FFA6 -:105AF000104905F0FFFF002805D00F480F4922F09C -:105B0000FEF9FAF788FB01980FE00198FBF7D8FF40 -:105B1000074905F0EFFF002801D10198F1E701984E -:105B20000BF012FCA042F8D1002016BD74E0020078 -:105B3000BCFA0200B4FD02004CF80200AD4C0300B8 -:105B400010B50C1C022801D1486800E0886802F0FA -:105B5000D7FF0649021C2068FFF7B0FF002804D1D8 -:105B6000034822F0BFF9FAF756FB10BD74E00200BB -:105B7000BCFA020008B50022FFF7A0FF002804D1FC -:105B8000024822F0AFF9FAF746FB08BDBCFA020062 -:105B900008B502490022FFF791FF08BD74E002003A -:105BA00013B5124C124A211C01ABFFF745FF012827 -:105BB00002D0022805D017E00E490F4822F09FF9C5 -:105BC00010E00198FBF77CFF0C4905F093FF0028DB -:105BD0000AD10198FBF774FF094905F08BFF0028F3 -:105BE00002D10198FAF717FB201C16BD74E00200E1 -:105BF000CCF80200AD4C03004CF80200B4FD0200EA -:105C0000BCFA020000237F2803D8034B1B5C9B07D0 -:105C1000DB0F181C7047C046CD4C030000237F28C3 -:105C200003D8034B1B5C1B07DB0F181C7047C046D7 -:105C3000CD4C030000237F2803D8034B1B5C5B077C -:105C4000DB0F181C7047C046CD4C030000237F2893 -:105C500003D8034B1B5C5B06DB0F181C7047C04668 -:105C6000CD4C030000227F2808D8054B0132195C77 -:105C70000C23194202D15F3842424241101C704746 -:105C8000CD4C030000237F2803D8034B1B5CDB06AD -:105C9000DB0F181C7047C046CD4C030000237F2843 -:105CA00003D8034B1B5C9B06DB0F181C7047C046D8 -:105CB000CD4C0300F8B50327041C381C0E1C5043C0 -:105CC000151C1BF02FFA0121331CA022B140C13357 -:105CD000FF33D2059B006060267065809F50094BA2 -:105CE000D1500022AA420CDA0323002153436068FA -:105CF0000132C1546068C01841706068C31899705F -:105D0000F0E7F8BD0C0500000122F0B50378A021F2 -:105D10009A40131C894AC905051C85B08B50322056 -:105D20000138C046C046C046C046C046C046C04610 -:105D3000C046C046C046C046C046F1D1EFF3108110 -:105D4000019172B60020698802910299884200DBB5 -:105D500007E1032141436C686118CC1C0394A02423 -:105D6000A1260F78E405FF09F600002F0BD0A35100 -:105D7000C046C046C046C046C046C046C046C046F3 -:105D8000C046A3500AE0A351C046A350C046C04637 -:105D9000C046C046C046C046C046C0460C78A12793 -:105DA000A446A0246646E405FF00E35176060AD522 -:105DB000C046C046C046C046C046C046C046C046B3 -:105DC000C046A35009E0C046A350C046C046C046E6 -:105DD000C046C046C046C046C0460C78A127A4466F -:105DE000A0246646E405FF00E351B6060AD5C04686 -:105DF000C046C046C046C046C046C046C046C04673 -:105E0000A35009E0C046A350C046C046C046C046A5 -:105E1000C046C046C046C0460C78A127A446A02470 -:105E20006646E405FF00E351F6060AD5C046C046C3 -:105E3000C046C046C046C046C046C046C046A35045 -:105E400009E0C046A350C046C046C046C046C04652 -:105E5000C046C046C0460C78A127A446A02466468A -:105E6000E405FF00E35136070AD5C046C046C046E8 -:105E7000C046C046C046C046C046C046A35009E022 -:105E8000C046A350C046C046C046C046C046C046F5 -:105E9000C046C0460C78A127A446A0246646E40567 -:105EA000FF00E35176070AD5C046C046C046C0464B -:105EB000C046C046C046C046C046A35009E0C046E2 -:105EC000A350C046C046C046C046C046C046C046B5 -:105ED000C0460C78A127A446A0246646E405FF002E -:105EE000E351B6070AD5C046C046C046C046C046C4 -:105EF000C046C046C046C046A35009E0C046A350B5 -:105F0000C046C046C046C046C046C046C046C04661 -:105F10000C78A127A446A0246646E405FF00E351BF -:105F2000F6070DD5C046C046C046C046C046C0466E -:105F3000C046C046C046A3500CE0C0460C05000059 -:105F4000C046A350C046C046C046C046C046C04634 -:105F5000C046C046039C0131A14200D0FFE601309B -:105F6000F3E6019B83F3108805B0F0BD30B58DB02A -:105F7000051C6846FAF734F9011E0ED12A1D0120CE -:105F80001EF008FD0122EB68041C5B1001335B006E -:105F90001343EB60FAF73AF90AE00198064A0368FE -:105FA0000024934204D0054A934201D0FAF733F912 -:105FB000201C0DB030BDC046BCFA02006CF90200D6 -:105FC00010B5041C10201DF043FB044B0360236834 -:105FD0004360636883600123C36010BD9CD20200EC -:105FE000F0B500270D1C85B003901E1C081C104B3B -:105FF000111C00970222FAF7F7FAA81C80001DF086 -:1060000027FB039B041C03606B1E3D1C0393436032 -:1060100033688360039B9D4207D20135AF00F0597E -:1060200002F0A6F8E719B860F4E7201C05B0F0BD4F -:10603000FFFF00007FB54B680E1C5C106846211CFA -:106040001CF084FD029D0021281C221C25F0F1F883 -:1060500001213068014004D1221C2B1C1DF022FEBE -:1060600008E0042C00D9042443100021201C2A1C21 -:106070001EF0AEFE6946024805F0A0FE04B070BDF9 -:1060800048EF0200F0B5002585B0081C0C1C1E1C52 -:10609000111C00952A1C0223FAF7A6FA0120AC4233 -:1060A0003FD0844228D1306820423AD103230340B4 -:1060B000AB4203D11C4A0168914232D01B4A0240D4 -:1060C000062A06D0002B0BD103689A69184B9A4216 -:1060D00006D103A906F060FB00220399131C18E007 -:1060E0000323021C1A40022A16D1FF22D20580186F -:1060F0009843FEF7C9FE14E003A9306806F04CFB94 -:10610000071C7068039CFBF7C5FD211C021C2B1C9F -:10611000381CFDF7F9FB04E0FBF7BCFD0123400050 -:10612000184305B0F0BDC04630D30200070080FF21 -:1061300079CD0000F0B58DB0099214AA1278041C34 -:106140000B9215AA12780F1C0892DA0700D494E07B -:10615000181CFBF79FFD002305900793002803DA26 -:10616000434205932D230793129B0026023B1E2BCF -:1061700016D8524B129A2020995C13F06DFC089BA4 -:10618000C5B2B34204D0681C032113F065FC061CA1 -:106190001398002801D025F051F90335AE193618AF -:1061A0003B689E4204D9301C1DF052FA20603E60CC -:1061B00023689F19069300237D1E2B70059B002BDF -:1061C00003D1023F30333B7033E00A9505981299B2 -:1061D00013F0B8FD0F1C0598129913F0CDFC3B1C71 -:1061E00005903033092F02DD0B9B0A3BFB186F1E15 -:1061F0003B70089B002B16D0059B002B19D0069BEB -:106200009F4216D90A9BDB1B032B01D03D1CDDE707 -:106210006B4620229B181B78AF1E3B70069B9F424B -:1062200007D90A97F2E7069B9F4202D9059B002BEC -:10623000ECD1139B002B0ED0181C25F0FFF8069B09 -:10624000381A984207D90023139AD25C002A2ED01C -:10625000C2540133F8E7079B002B06D0069B9F42F0 -:1062600003D96B461B7F013F3B702368381C9E1986 -:10627000F61B099B013E1E601EE09A0710D1104AD2 -:10628000196891420CD1129A391C0092139A01920A -:106290000B9A0292089A0392099A1DF0DAFC0BE01D -:1062A000002322681370099A2068136004E0079B9A -:1062B000071C002BD5D1D8E70DB0F0BD4D4D030024 -:1062C00030D3020010B50C1C1449031C8A4202D1C1 -:1062D000211C01221EE012498A4202D1211C032204 -:1062E00018E00020072B17D10E4B1340062B0ED0C1 -:1062F000930711D113680C498B4208D00B498B428C -:1063000005D00B498B4202D00A498B4204D1111CA3 -:106310000720221C01F0BAFF10BDC04678CD020054 -:1063200034CD0200070080FF80CA020048EF02005F -:10633000BCDC02009CC6020070B5061C081C1CF0E8 -:1063400068FC051C1DF02EFB041E06D108492A1C02 -:1063500008480BF019F8F9F75EFF301C1EF00DFC31 -:10636000031C0121201C1A1C02F066FC70BDC046F3 -:106370006E4D0300B8FB020010B5041C1CF049FC74 -:106380001EF011FC031C012083420CD00649201C86 -:106390001CF05BFC201C1CF03CFC1EF004FC0238D2 -:1063A00043425841400010BDBF4D0300F0B59DB0C1 -:1063B00000AF0C68032807D9CB680025FB600428D0 -:1063C00005D00D696D1002E00025A24BFB601C2377 -:1063D000201CF91806F0E0F97861002D56D09E4C8B -:1063E0006E216068FDF762FE061C6068962100223F -:1063F0000430FEF755FB1823FA18D118041C301C82 -:1064000006F0CAF93B6B011C013DC018002C0CD1F1 -:1064100088420AD9013803782E2BF9D105E0884249 -:1064200003D9013803782E2BF9D1013DF7D2FE694B -:10643000441A251C002E01D0751C2D192B1C6A46F0 -:106440000E33DB08DB00D31A9D46181C221C3B616F -:1064500024F0D2FE002E08D02E233A697969135514 -:1064600001341019321C24F0C7FE3869291CF9F7D1 -:106470007BFF012804D17949794821F040FD5FE094 -:1064800006243B69C0000443FD617B61201C05F0CC -:10649000EDFC02F007FE051E15D02E21786924F0D0 -:1064A000B5FF011C281C002900D1D0E0694BFA6817 -:1064B0009A4200D0CBE07B69C91A181CF9F754FF47 -:1064C00002F0F0FDC3E018220823BA18D0181033E8 -:1064D000FA184021D2181CF041FB0126BD603D6135 -:1064E0002C1C04E07B699B5D2E2B05D00136FB69DB -:1064F0009E4200D9A5E0F5D1311C7869F9F734FF47 -:1065000018220823BA183860D0181CF050FB182243 -:106510000823BA18002815D1D018321C79691CF04C -:10652000DDFA18220823BA18D018FFF725FF786083 -:106530007B68002B13D14A484A493A680AF024FF85 -:10654000F9F769FED0182F21F9F7E4FF7B693A6962 -:106550001820991808233818B21AC018DFE73868CD -:1065600002F0A0FD041E57D1386802F061FDFB69FE -:10657000041C9E4208D13C4BFA689A4204D18068C0 -:106580006E215E221DF0A6F97B68012B3DD11822F9 -:106590000733BA18D0181CF003FB18220823BA18C6 -:1065A0007860D0181CF003FB0022011C786805F00D -:1065B0003BFC1221021C201C01F0B6FD182208230E -:1065C000BA18D0182F21F9F7A5FF18220823BA18F6 -:1065D000D01826491CF039FB18220823BA18D01805 -:1065E0001CF017FB1EF0DFFA022806D11822082340 -:1065F000BA18201CD118FFF79FFE18220823BA18DA -:10660000D0180C211CF060FB06E018220823BA18F1 -:10661000201CD118FFF790FE002D0AD03A697B6943 -:10662000B11A9818F9F7A0FE221C011C281C01F0D1 -:106630007BFDBB68002B00D1BC60731C3B61251C3B -:1066400054E7044BFA68201C9A4200D1B868BD4652 -:106650001DB0F0BD74E00200882E0020834D0300C1 -:10666000B8FB0200A24D030078CD0200B74D030035 -:1066700010B5041C08201CF0EBFF024B44600360C3 -:1066800010BDC0469CD302000F22114008B5031C68 -:10669000081E03280ED813F0C1F90204090D181CB6 -:1066A0000BE00648002B08D1054806E0181C1DF039 -:1066B00021FB02E0181C1DF038FB08BD34CD0200A0 -:1066C00078CD0200F7B5002805D13A493A4A3B484F -:1066D00020F06FFA6BE00D68281CFBF7F1F94368B6 -:1066E000061CEF2B04D16D68281CFBF7E9F9061C8A -:1066F00000233349DA005058854203D18A182F48C5 -:1067000051680AE00133602BF3D12C4C2D4B201C37 -:106710009D4201D09E4203D12B4920F07EF946E0F4 -:106720002A4920F046FA281C0021FBF7FDF9201C1D -:106730002749726820F03DFA264B9E4203D1281C5F -:106740001EF01BFA0CE0244B9E4200D0351CA86BB7 -:1067500000282CD083072AD1204B02689A4226D1E8 -:106760001DF0CBF80025061EAE4220D073689D4276 -:106770001DD2B268EB00D3181F68002F15D05B68DC -:106780001749201C019320F014FA381C0021FBF754 -:10679000CBF91449201C20F00CFA01980021FBF7DA -:1067A000C3F9201C104920F004FA0135DEE70F4838 -:1067B000FEBDC046C7A40300C34D030010F0020095 -:1067C000D8D30200780303003A5203005652030064 -:1067D0005E52030028D902006CEB020064CE020076 -:1067E000CCA703006E5203003F4B030074E002008D -:1067F00038B5151C041C1DF038FC2A1C201C02494D -:106800001DF0E4FB38BDC0464D40020038B5437969 -:106810000D1C0024032B06D9836A074C9200E41A4E -:10682000C369D358E41803211DF010FC44702412EE -:106830000570847038BDC046FD7F0000F8B50023A8 -:10684000041C617183608371E260036101330F1C7A -:10685000151C4361032906D80121836949429A0026 -:10686000C06924F0E6FC0023A36223622A8C6B8CAF -:10687000D3180122002B00D01A1C364E201C311CCC -:106880001DF0A4FBAA8C201C311C1DF09FFBE368AB -:10689000201C197E1DF0D3FBE368201C997E1DF09F -:1068A000CEFBE368201C197F1DF0C9FBE368201CA8 -:1068B000997F1DF0C4FB042F07D1636A226A201C54 -:1068C0009A1A311C1DF082FB03E0201C02211DF0EE -:1068D000AAFB311C201C2A691DF078FB311C201CEE -:1068E000EA681DF073FB00262B8D9E420BDAEA6AE4 -:1068F000F300D3181A78032A03D19978201C1DF0CD -:10690000B4FB0136F0E7201CFF211DF0AEFB042F85 -:106910001FD10022698BAB8BC9188A4219D0002085 -:106920002E8DB0420CDAEF6AC300FB185F78FF07C8 -:1069300004D55F88974201D15B6802E00130F0E73F -:1069400002230626DB003343666B9000835101323D -:10695000E3E7F8BD2740020013B54379012B2FD0A0 -:106960008268041C002A03D01648174920F021F938 -:10697000201C00211DF063FB6379032B13D1226AD5 -:10698000D01C9843A36A20626062E362C0181CF0C6 -:1069900071FEE3682063588B9B8BC01880001CF04D -:1069A00069FE60630CE0042B0AD1E368616AE26A65 -:1069B0005218197E00915869216B636BFCF7A6F998 -:1069C00013BDC04610F00200D4730300224BF7B58C -:1069D000A0331B68022B3ED84469A1423BD9051C59 -:1069E000836A026901919E1A0C1B331C23432ED02B -:1069F0000096062C10D81F2E01D91F230093271EA6 -:106A0000032F00D90327281C01211DF00CFB009A3D -:106A10007B011343037016E00F2E01D90F2300935F -:106A20000E4B271E9F4200D91F1C0221281C1DF05F -:106A3000FAFA8023702200995B4219433B09134004 -:106A40000B4303704770009BE41BF61ACDE7AB6A5B -:106A50002B61019B6B61F7BD882E0020FF070000B2 -:106A600038B5041C0D1C01211DF0CFFA201C0F2D80 -:106A700005D0102D05D010210E2D06D102E01121D8 -:106A800000E012211DF0F1FA0DE017211DF0EDFAE2 -:106A90000322A36A201C03339343A36204211DF045 -:106AA000D5FA014B036038BDCCEF0200F8B5061CE7 -:106AB0000D1C141E124F11D1111C1DF0A6FA8023BB -:106AC0001B021D4203D0301C32211DF0CEFA2A1CBD -:106AD000301C3A403521FFF799FE0FE03A1C0A407E -:106AE0004621FFF793FE80231B021D406A1E95413D -:106AF000ED012C43E1B2301C1DF0B7FAF8BDC046E1 -:106B0000FF7FFFFFF7B52E4B2E48191CFC31CA6BD7 -:106B1000824254D9043ACA63191C1268A4310F681E -:106B2000501C84083E5D051C032425406D002E4149 -:106B3000811A34400130022CF3D0AC331B681201AF -:106B40009B180901019389080029DCD0019B1B686F -:106B50001A072FD11A48041CAC342468A34229D345 -:106B6000051CB0352D68AB4224D2051C1B1BDC175D -:106B7000240FE318A4351B112E689C0836191D1C20 -:106B8000032425406D00AC46377862463D1C154114 -:106B90002540012D0ED194403C433470061CFC3638 -:106BA000F46B094FBC4203D2201DF063236001E067 -:106BB000B4300560019B013904330193C4E7F7BD8C -:106BC000882E0020402F0020C02F00200F23994343 -:106BD00070B5061C0D1C081A412112F03DFF104C27 -:106BE000021C231CA8331860231C211CA4331E6024 -:106BF0008301EB1AAC310B60231C301CB033002135 -:106C00001D6024F016FB221C0023FC325364221C5E -:106C1000FE32D38701223F33FF33E25270BDC046BC -:106C2000882E0020024BFE33DA8F0132DA8770475C -:106C3000882E0020024BFE33DA8F013ADA87704744 -:106C4000882E0020034BFE33D88F431E9841C0B2DC -:106C50007047C046882E0020F7B5002400900191AF -:106C6000019B9C4238D0009AA300D3581A072FD119 -:106C70001A4A111CAC3109688B4229D3101CB03060 -:106C80000068834224D2101C5B1AD917090FCB1855 -:106C9000A4301B11066899087618181C03210840B7 -:106CA0004000844637786546381C28410840012852 -:106CB0000ED1A94039433170161CFC36F16B084FD8 -:106CC000B94203D20A1DF2630B6001E0B4321060D6 -:106CD000FFF718FF0134C3E7F7BDC046882E002038 -:106CE000C02F002008B5FFF79DFF06480022031CB7 -:106CF000B4331A60031C044AFC332621DA63FFF71D -:106D0000ABFF08BD882E0020402F0020F8B52C4C8A -:106D10000025221CB4321368AB4221D0231C15601D -:106D2000284AFC33DA63231CA8331B689B009D426E -:106D3000EDD2221CA4321268AB08D15C03232A1CBA -:106D40001A40520011410B40032B07D1221CFC3288 -:106D5000D36B191DD1631D60FFF7D4FE0135E2E747 -:106D60001E1C221CA83212689200934221D2211CC0 -:106D7000A43109689A088A18032011781F1C0D1C79 -:106D800007407F003D410540022D05D0854209D0D6 -:106D9000012D0CD12E1C01E0002E08D0B8408143FB -:106DA000117004E00220B8400026814311700133C5 -:106DB000D7E70023FC346364FFF73CFFF8BDC0460F -:106DC000882E0020402F0020274AF0B5131C111CEC -:106DD000B033AC3109681B685B1A111C03600023D7 -:106DE000A8310C68191CA432156843608360C36025 -:106DF00003614361A400A1422FD08A08AE5C032244 -:106E000094460A405700321C66463A413240012AF5 -:106E100012D8012B03D1C6680136C66004E0022BEC -:106E200002D10669013606614669B34200D9436161 -:106E3000012A0CD0002A06D0022A0CD14268013364 -:106E40000132426007E083680133836002E04368F7 -:106E500001334360131C0131CDE743681B014360DC -:106E600083681B018360F0BD882E0020F7B5404D7C -:106E70000F302B1CFE33DC8F0609002C01D00020C4 -:106E800075E0002EFBD09F235B00E95A4B4259412D -:106E90002B1CFC335A6C2B1CA8331B6801932B1C36 -:106EA000A4331868019B9A4228D2835C9F0704D1BF -:106EB0000134B44202D3920026E000240C273B4266 -:106EC00005D10134B44203D3920001321CE0002406 -:106ED00030273B4205D10134B44203D39200023241 -:106EE00012E000243F27BB4305D10134B44203D351 -:106EF0009200033208E000240132D3E70029BED11A -:106F000002F0ECF90121C3E7131B591C012C04D139 -:106F10002E1C541CFC36A40874648C08001903242D -:106F200001260C406400A640341C0678023334432A -:106F3000047093420FD82C1CA43424689808241899 -:106F400003200226184040008640301C267801337A -:106F500030432070EDE7AC352C680B010132E418AA -:106F6000521A1201201C002124F063F9201CFEBDDE -:106F7000882E0020224B70B51A1CFE32D28F002AB8 -:106F80003DD102073BD11A1CAC321268904236D375 -:106F9000191CB0310968884231D2801AC217120F09 -:106FA00010181A1CA432001112688108555C041CC8 -:106FB00003221440640025412A40012A1FD11A1CD3 -:106FC000FC32546CA14200D251641D1CA4352A68C5 -:106FD000840814190322011C161C114049008E401C -:106FE000311C267801308E4326702C688108645C41 -:106FF000011C114049000C412240022AE5D070BD1D -:10700000882E0020031C0F2070B518402AD1164A84 -:10701000111CAC3109688B4225D3141CB034246890 -:10702000A34220D25B1AD917090FCB18A4321B1127 -:1070300015689A08AC5C191C0322114049000C41E8 -:107040002240012A0FD15A1C91086E5C141C0321A6 -:107050000C4064002641D01A314001320229F3D09D -:10706000000100E0002070BD882E0020F0B55B4FCD -:10707000051C3B1C0020FE33DB8F85B0834200D013 -:10708000A9E001920E1C854204D1081C291CFFF7BF -:10709000EDFEA0E0002900D199E00F22181C2A4043 -:1070A00000D098E03B1CAC331B68101C9D4200D202 -:1070B00091E0391CB03109688D4200D38BE0EB1AA6 -:1070C000D917090FC9183B1CA4331B680911009379 -:1070D00000988B08C35C0324081C20404000034137 -:1070E000101C1C40012C76D1331C9446A8373868FC -:1070F0000F3380001B0902904F1C029A97421AD24C -:107100000098BA08825C381C039203221040039A4C -:1071100040000241101C03221040022801D101341A -:1071200007E0002807D101229444624612199A42CE -:1071300001D20137E1E7A3423AD01AD2CB181E1C84 -:107140000C192649A6420DD0A4310F68B208BF1809 -:107150000320321C0240520090403A7801368243AC -:107160003A70EEE7FC314A6C9B08934220D24B64A4 -:107170001EE06246A21893421CD86218C8188242C8 -:107180000FD216489608A4300068022786190320FB -:10719000104040008740381C377801323843307047 -:1071A000ECE71A1B240112012819002124F041F8F0 -:1071B000281C10E0019800280DD0301C0021FFF79A -:1071C00055FE061E07D02201291C24F015F8281CA4 -:1071D000FFF7D0FE301C05B0F0BDC046882E002061 -:1071E00010B58AB004A8FFF7EFFD069B094C039386 -:1071F0000093049A059B201C07491FF0DAFC099BA9 -:10720000201C039300930549079A089B1FF0D1FCAB -:107210000AB010BD10F002000074030023740300D4 -:10722000F8B53F4D3F4E2B1CAC33301C3E491A681D -:107230001FF0BFFC00242B1CA8331B689B009C4242 -:1072400024D2A20632D12A1CA4321268271C9446EA -:107250006146BA08895C03203A1C02405200114181 -:10726000014202D101379F42F2D33A1B7F2A12D941 -:107270009209301C2D491FF09CFC3C1C3F239C4371 -:107280002B1CA8331B689B009C4204D3301C28494C -:107290001FF0C3FBF8BD2A1CAC3212682301D218C0 -:1072A0001203120B301C23491FF083FC2A1CA4324A -:1072B0001268A308D15C0322231C13405B00194110 -:1072C0000B1C13407132022B23D0073A032B20D022 -:1072D0002E22012B1DD12B1CAC331B682201D3584D -:1072E000154954228B4214D01449083A8B4210D0CD -:1072F0001349083A8B420CD0124902328B4208D013 -:107300001149043A8B4204D010490B328B4200D011 -:107310001B32301C0E491FF04CFC01348BE7C04679 -:10732000882E002010F002005774030072740300CE -:107330003F4B03008E740300BCDC02009CC60200BD -:1073400064CE02000CD00200C0D8020028D902008E -:1073500093410300F0B593B0061C06A80F1C141C43 -:10736000F8F73EFF051E23D13368311C012603A820 -:107370003A1C0193FAF70CF8A3082A1C3340019930 -:1073800003A808F017FF051C03200CF069FD281C5A -:107390001DF0F1FA012040420CF062FDF8F736FFD3 -:1073A000344203D01348311C0CF08EFD012518E047 -:1073B000012040420CF054FD01210C4202D00D4846 -:1073C0000CF082FD0798FAF77BFB0B4904F092FB67 -:1073D000051E04D109480799FAF7B0FB01E08025A2 -:1073E0006D0001210C4202D002480CF06DFD281CFA -:1073F00013B0F0BDBE74030030F9020010F00200BB -:107400001FB5202168461BF08AFB254821F055FA5C -:1074100068461BF0B9FB234821F04FFA0CF03CFD05 -:107420000128F2D002280AD11F4821F046FA684606 -:107430001BF09FFB01221D4B00201A702DE003283A -:1074400003D168461BF0A0FBE8E7042804D0C1B2D2 -:1074500068461BF0F1FBE1E7154821F02EFA019A8E -:10746000002A08D1104821F028FA68461BF081FB59 -:107470008020400011E09620029940000023FBF795 -:10748000E1FC002803D10B481AF092FAC0E7012171 -:107490000A1CFFF75FFFC305BAD505B000BDC046A3 -:1074A00096740300C18303003E4B030006010020D5 -:1074B00029480300B174030030B587B002A8202129 -:1074C0001BF02DFB444821F0F8F9444821F0F5F970 -:1074D00002A81BF059FB02A841491BF0ABFF012891 -:1074E00009D1404821F0E9F902A81BF042FB002035 -:1074F0003D4B18706EE0022803D13A4821F0DDF9C7 -:10750000E0E703281AD0042808D1364821F0D5F93D -:1075100002A81BF02EFB802040005BE0052825D14F -:10752000324821F0CAF902A81BF02EFB0CF0B4FC83 -:107530006B46C1B2DC1D2170032901D12948C5E782 -:10754000042904D1274821F0B8F9012427E002A832 -:107550001BF072FB23780D2B03D1254821F0ADF9E8 -:10756000E4E7201C01210CF0AFFCDFE702A81BF0D0 -:107570001EFB0028ACD002A81BF04BFB09F0B6FCA8 -:1075800000280BD002A80A211BF056FB02A81949BB -:107590001BF050FF0328D1D00428ECD1002402A80E -:1075A0001BF0FEFA051C02A81BF001FB021C962032 -:1075B000291C40000023FBF745FC002803D10E489E -:1075C0001AF0C8FA84E7211C0622FFF7C3FEC305A0 -:1075D00000D47DE707B030BDC0740300057503001B -:1075E0002B7503003E4B030006010020307503009D -:1075F00060750300677503009828030038B50523FC -:10760000041C094A094D1068434309481B199B0093 -:1076100018582B68146018180F23194009012860A6 -:1076200003F016FB38BDC046680100206001002051 -:1076300048D70200A839031C00B5081E06282ED81A -:1076400012F0ECF9040A10151B2027009A18E22307 -:10765000DB00D218107826E0C4329200D05C80069D -:10766000800E20E0C4329200D05AC00403E0C4323D -:107670009200D0580003400E15E0C43292009A18D0 -:1076800090780AE0C43292009A18D0780007000F70 -:1076900009E0C43292009A18D078000903E0002073 -:1076A000014A024B1A6000BD597D0300040000200E -:1076B000A83910B5041C081E062846D812F0AEF9E9 -:1076C000040A131E29333B00E221A218C9005218F4 -:1076D00013703DE03F20C4329200115D03408143AE -:1076E0000B43135534E07F21C43292000B409901C3 -:1076F000105B184B03400B43135329E07F21C43226 -:1077000092000B40105914495B0301400B43135185 -:107710001EE00F21C4329200A21890781B01014094 -:107720000B43937014E00F20C4329200A218D1785A -:107730000340814306E00F21C4329200A218D078A2 -:107740001B0101400B43D37002E0044A044B1A6052 -:1077500010BDC0463FE0FFFFFF1FF0FF647D030048 -:1077600004000020F0B585B003930723D2B2134084 -:10777000013BDBB20F1C042B02D92B4C2B490C60B4 -:107780002B49CE5C07211B028A43019308D1294B68 -:10779000C55C2D09ED43EBB23D7800932C1C1FE036 -:1077A000D443E4B20825244B019A1B199B5C5F006B -:1077B000FFB2DB0904D002200521FFF71FFF05E01F -:1077C0000120311CFFF71AFF002EF4D0013DEDB26D -:1077D0003B1C002DEBD10134E4B2002CE2D120E0BF -:1077E0000826154B019A1B199B5C5A00D2B20292D3 -:1077F000DB0902D003201A2101E004200621013E0A -:10780000F6B2FFF7FBFE029B002EEED1009B013487 -:10781000E4B25B1B1B19DBB2002BE1D1009BED1A1C -:107820003D70039805B0F0BD707D0300040000209A -:107830008380030019070000927503000022F0B551 -:10784000051CFF248BB008AB0191DA71231CC433F3 -:107850009B00EB189978604E0A09B05C0F2200017A -:10786000114001439970D9780807000F375C9143A4 -:10787000174039430809305C0A4000010243DA70BE -:10788000013CE3D2E223DB00EE5CB308F31ADBB287 -:107890000693524B1B68002B0BD081231B01E81869 -:1078A000C4239B00E918E223DB00EA18019BFEF7E2 -:1078B00033F800244823271C049303940294812264 -:1078C0002B1912019B181B7805930723059A9A43DD -:1078D00007920BD008ABD91D281C231C059AFFF773 -:1078E00041FF019B0230C4B2023B32E03C48029BA4 -:1078F000C35C9C46231C6246C4339B00EB189978FA -:10790000DB7809091143374A515C039A805C1A07F6 -:10791000120F1043334A1B09105C40183249C95DED -:107920000B43D15C01234118FF2801DC6B461B7F10 -:10793000C9187839C9B209090020FFF75FFE049B16 -:10794000013BDBB20493002B0AD1019B0134E4B26A -:10795000013BDBB20193019B002B3BD02B780493BE -:10796000013EF6B2002E0CD1E22200272B19D200E4 -:107970009B181E780397B308F31ADBB2069302979D -:107980009DE7069B013BDBB20693002B02D1059BD2 -:10799000002B16D1221CC4329200535D02999B0623 -:1079A0009B0ECB18DBB20293535B0399DB045B0E97 -:1079B000CB18DBB2039353591B035B0EFB18DFB2EA -:1079C0007DE708ABD91D281C231C059AFFF7CAFECA -:1079D000041CC9E70BB0F0BDDE7D03006C01002084 -:1079E000BF800300E27A03003F7E0300064A125C78 -:1079F000002A05D0054A135C4B43D811C0B201E000 -:107A0000034A105C7047C046DF7F03008880030094 -:107A1000927A0300064A125C002A05D0054A135CDC -:107A20004B43D811C0B201E0034A105C7047C04616 -:107A3000DF7F0300827C030033800300F0B5037A0C -:107A40008BB07F2B00D14DE1031C071C0025041CCB -:107A50000933FF330837099300953E787F2E03D111 -:107A6000002302930093DEE0012E02D1201C311C82 -:107A700003E0022E05D1201CFF21009A2B1C1CF0D4 -:107A80000EFF994ABB78301CD3185B780093FB78C3 -:107A90000193A178FFF7AAFF3F2318400290E178F5 -:107AA000301CFFF7B7FF7F23904A1840925D039088 -:107AB0001A408F4B04929A5D0F231A4005928D4A0B -:107AC000925D1A4006928C4A925D1A408B4B079247 -:107AD0009B5D08937B78EB18DBB29C462A1C3F2108 -:107AE000C4329200135D8B4302990B431355105B14 -:107AF000039B83499B01014019431153049B105977 -:107B00005903804B18400B1C03430F201351059958 -:107B10001E0C06400901A21831431B0E069E9170EF -:107B2000834307993343090118400843D0706946DD -:107B30002020812209186319097812019A181170FE -:107B4000E222D2009B180199009A01355218EDB239 -:107B50001A706545C2D1099B04379F4200D07CE76B -:107B60007EE76949CD5C8E5C6849AE4264D18D5C2C -:107B7000CB5C0493039B597A009B5918CBB20093BA -:107B8000049B5B19DBB20693023B1B0647D4A82675 -:107B9000009B5D1BEBB20593A82E55D1039B311CB6 -:107BA0005F7A5A7B7F085208D3190193009B201CEF -:107BB0009A18D2B2DF1BFFF73DFDFFB2051C311C46 -:107BC000201C3A1CFFF736FD2D1AEDB27F232A1C2C -:107BD0006DB29A43EB17E81858400199079212F0DA -:107BE000B1F8281CCBB20199089311F0C5FF00250C -:107BF000C3B2059F09933A1C311C201CFFF71AFDE4 -:107C0000019A0599099B01375218C318FFB2D2B2E5 -:107C1000DBB2BA422BD10136F6B2AF2EBCD1029BF9 -:107C20000133DBB20293029B9B00E31803931A7AA1 -:107C30001B7B7F2B95D133E03548AE4201D2C55C2A -:107C400096E78D5C835C94E7049B009A311C9A183C -:107C5000D2B2201CFFF7EEFC311C051C059A201C3B -:107C6000FFF7E8FC069B2D1AEDB20193AEE7089AE8 -:107C7000AD18019AEDB295420CD3AD1A6A46127F47 -:107C8000EDB252B2002A03DB002B03D0013300E037 -:107C9000013BDBB2201C311C3A1CFFF709FDAAE7AF -:107CA000029B02339B00E3185978009B59186368C4 -:107CB000C9B2002B03D0201CFFF7C0FD12E0E22266 -:107CC000D200A0181A1CC4329200125D05789206E8 -:107CD000D20EAA1A02708022013301305200934260 -:107CE000F0D1E8E70BB0F0BDD37D0300E27B0300E9 -:107CF0003F7F0300837D0300327C0300EF7D0300A0 -:107D00003FE0FFFFFF1FF0FFB97C0300097D030088 -:107D10008F7F03000D4B73B530CB161C012804D99F -:107D20004D682C1C022800D08C68086801A904F05A -:107D300033FD011C2C20019A0023FF30FBF782F851 -:107D4000311C2A1C231C00F077FF76BD882E0020F2 -:107D500070B5F8F7C7FA0B4C0026231CA0331E6041 -:107D6000266301F089F9084D0121281CFCF7B2F9BE -:107D7000281C6E215E221BF0ADFD656025606664E7 -:107D800070BDC046882E0020BC2E002070B5062491 -:107D9000134EC3001C4373680022051C211C181DD0 -:107DA000FCF77EFE021E18D1706C002807D004304C -:107DB000211CFCF775FE002801D040680EE000226F -:107DC0000848211CFCF76CFE021E06D106492A1C3D -:107DD000064809F0D9FAF8F71EFA506870BDC04697 -:107DE000882E00205CF70200BF810300FCF902002E -:107DF0000A4B10B5041C18685B6898420AD006212B -:107E0000E300043019430022FCF74AFE002801D0A9 -:107E1000406802E0201CFFF7B9FF10BD882E00204B -:107E200008B5074B586C002801D1064807E004301C -:107E300026210022FCF734FE0028F6D0406808BD59 -:107E4000882E002080F402000A1C062108B5034B8E -:107E5000C000014318681BF03DFD08BD882E0020BE -:107E6000062108B5034BC000014318681BF03CFD18 -:107E700008BDC046882E00200A1C062108B5034B09 -:107E8000C000014358681BF025FD08BD882E002066 -:107E9000062108B5034BC000014358681BF024FDC0 -:107EA00008BDC046882E002038B5051C0C1C0628CD -:107EB00006D1081CFAF72EF800284CD028484DE0CF -:107EC0000123194217D04810042D06D0052D0FD0DC -:107ED000002D42D10028F1D03DE0C0221206904290 -:107EE00004D18020C0051BF005FF37E0404200E0D0 -:107EF000C043400013E0022813D11A4B0B40062B5D -:107F000008D08B070DD10B689A69174B9A4208D19C -:107F1000486802E0C8081AF0A8FD01234000184391 -:107F20001CE0201CF9F7CCFD4369002B0DD10F4B51 -:107F3000AD00201CED581BF04EFA0D49031C2A1C05 -:107F40000C4809F021FAF8F766F9281C211C98471B -:107F5000002803D1EBE7084800E0081C38BDC04604 -:107F600078CD0200070080FF79CD0000F0EC020020 -:107F7000D881030000FD020034CD0200F8B5041CD6 -:107F80001D1C0F1C161CF9F79BFD0369201C9C4649 -:107F9000002B08D11BF01FFA0549021C054809F007 -:107FA000F3F9F8F738F9391C321C2B1CE047F8BDFF -:107FB000F681030000FD0200F8B5061C0D1C171C1D -:107FC0001C1C00290BD01868F9F77AFD73689842D9 -:107FD00005D0064906481FF092FFF8F71CF9B06873 -:107FE000291C3A1C231CFFF7C9FFF8BD12820300AD -:107FF00000FD0200F8B5061C0F1C141C1D1C930785 -:1080000014D11368174A934202D163682B6028E0A9 -:10801000154A934207D1002802D0F9F751FD071CF9 -:10802000636888C51DE0114A934201D12C6018E0B5 -:108030005B681A1CF23A012A01D9F02BF6D1002E06 -:108040000ED1201CF9F73CFD094B984208D10C20B9 -:108050001BF0FEFA074B476003608460286000E075 -:1080600050C5F8BDA8EC02006CEC02006CEB0200FD -:1080700084D8020000D80200F8B5002313605360D2 -:10808000071C0C1C151CF9F71BFD061C102C05D138 -:10809000836A002B02D00F4B88C519E0F369002BCF -:1080A00004D0381C211C2A1C984711E0B06B002812 -:1080B0000ED00621E4001A1C04302143FCF7F0FC2A -:1080C000031E05D05A68381C311C2B1CFFF792FF89 -:1080D000F8BDC0464CF7020070B5161C041C0D1C00 -:1080E000FFF7CAFF3368002B15D10B4EA30707D14A -:1080F0000A4B22689A4203D1301C0949626805E0A4 -:10810000201C1BF068F9021C301C06492B1C09F0CE -:108110003BF9F8F780F870BD34FB02006CEB02000D -:108120002A8203005182030073B5041C0D1C161C27 -:10813000F9F7C6FCC369002B09D00422019600920E -:10814000201C291C6A469847009B002B0AD0201C43 -:108150001BF041F90449021C2B1C044809F014F9D6 -:10816000F8F759F873BDC0465182030034FB020092 -:1081700013B5041CF9F7A4FC436A002B0BD1201C97 -:108180001A216A46FFF778FF009B002B08D068464B -:10819000FDF716FF0EE0201C984700280AD1EEE7F5 -:1081A000201C1BF018F90449021C044809F0ECF8E3 -:1081B000F8F731F816BDC0467382030000FD0200D7 -:1081C00037B5041CF9F77CFC856A201C002D01D012 -:1081D000A84716E010216A46FFF74EFF009B002BD0 -:1081E00005D0281C291C6A461CF0D4FB09E0201C81 -:1081F0001BF0F1F80349021C034809F0C5F8F8F731 -:108200000AF83EBD8F82030000FD020030B5051C58 -:108210008FB0FBF72DFB281CF9F752FC846A281C51 -:10822000002C01D0A04728E010216A46FFF724FF68 -:10823000009B002B17D002A8F7F7D2FF011E07D131 -:108240006A461CF0A7FB041CF7F7E0FF201C14E0B3 -:10825000039B0B49186803F04DFC031C201C002BEA -:108260000BD1039807E0281C1BF0B5F80549021C48 -:10827000054809F089F8F7F7CEFF0FB030BDC046CA -:10828000BCFA02008F82030000FD0200F0B585B049 -:1082900002900E1C171C202802D1914214D1A1E19A -:1082A000029B1B2B01D01E2B10D1301C391CF9F75F -:1082B0009FFC002803D0029B1B2B05D192E1029B5F -:1082C000BA481B2B00D099E1B94897E1029B212BBA -:1082D0002AD1101C09F0A0F8002807D0301C391C46 -:1082E0001FF017FE002800D07CE1EDE703243C409E -:1082F00000D042E1AF4B3A689A4200D03DE17B6842 -:108300009C42E1D2A300FB189D68281C09F084F868 -:10831000002800D130E1301C291C1FF0FAFD002894 -:1083200000D05FE10134EAE70123194200D1EAE01D -:108330004D101A4200D1DEE0029B54101D2B00D9D3 -:108340001BE1181C11F07EFB1E00200023002600FC -:1083500038003F00410043004E0056006B0074009F -:10836000A3001E0020002300260038003F0041002B -:1083700043004E0056006B007400BC00C0001901A1 -:10838000C400C800254300E065402E1CA8E02C4036 -:10839000261CA5E0002C02DA8748884902E11F2C40 -:1083A0006FDC874B23419D426BDCC0231B062341BE -:1083B0009D4266DBA540E8E7002CEDDB1F2C00DDCD -:1083C0001F242541E1E72E198AE02E1B88E0281C96 -:1083D000211C00F085FC002853D101206C4364006F -:1083E00020430BE1002C00D1DAE0281C211C1CF0FA -:1083F0001BFB1BE0002C00D1D2E0281C12F01AFC61 -:10840000051C201C12F016FC011C281C11F050FF4A -:108410000323022598436B4B2843C018EEE0002C41 -:1084200000D1BDE0281C211C1CF0EEFA061C57E010 -:10843000002C02DB0395012617E0281C12F0FAFB42 -:108440000323022698435F4B0643F61889E0E307AF -:108450000ED4012C44D003986410011C00F040FCA1 -:1084600000280ED1039B5B430393002CEFD137E030 -:10847000301C039900F034FC002802D1039B5E43BA -:10848000E7E7E917281C1BF026FC061C69E0002C16 -:1084900000D185E00021022001F014FC211C061C03 -:1084A000281C1CF0C1FA012740003843B060211C91 -:1084B000281C1CF0A9FAB8403843F060301C9DE03D -:1084C000A54200DB00E78DE0A54200DCFCE689E088 -:1084D000A54200DDF8E685E0A54200DAF4E681E099 -:1084E00073001A1C724002D40120184386E0301C2D -:1084F0001BF000FC82E003231340022B03D1324B1C -:108500001340062B70D1029B1F2B2AD1381CF9F780 -:10851000D7FA8369051C002B07D16B6A002B16D094 -:10852000381CFFF725FE041C0BE00298391C321C96 -:108530009847002862D1F0E7311CF9F759FB002871 -:1085400050D1201CFFF762FE0028F5D1BCE6381C94 -:108550001AF041FF1D49021C1D4808F015FFF7F7EE -:108560005AFE301CF9F7ACFA8369002B05D002984B -:10857000311C3A1C98473FE02F1C029B301C9A008C -:10858000144BD5581AF027FF041C381C1AF023FF8F -:10859000114900902A1C231C0D4808F0F5FEDEE767 -:1085A0000E480F491FF0ABFCD9E7C04634CD02009E -:1085B00078CD0200BCDC020010F80200BD4A0300C6 -:1085C000FFFFFF3F00008080070080FF73820300F1 -:1085D00000FD0200A8EB0200AE8203006CFC02006A -:1085E0004D4A0300064809E0281C12F023FB3A1C00 -:1085F000011C0298FCF788F90028BED005B0F0BD38 -:1086000034CD0200F0B513688DB00693002803D175 -:10861000131D0393041C03E0131C546808330393D5 -:10862000FF220B1C13400193090A1140019A4B00D1 -:1086300005939B18039A9B00D558D3185F68049143 -:10864000381E09D00020BB0706D17F4B3A689A42FA -:1086500002D1381C1BF03BF9049BC618002D16D123 -:10866000019B760001339B19980000931AF0F0FFEC -:10867000251C061C002C01D001250460019BA800CC -:108680009A003018039922F0B7FD019B30E0AB0748 -:1086900031D12B686D4A934202D06D4A93422AD160 -:1086A000281C09A90AAAF9F797FB099B019A01332B -:1086B0009B1876009B19980000931AF0C9FF251C9F -:1086C000061C002C01D001250460019BA8009A0023 -:1086D0000399301822F090FD019B0A99E818099B34 -:1086E00080009A00301822F087FD019B099A9B18A0 -:1086F0005B19029338E0019B7600181D83199800DE -:1087000000931AF0A5FF0294061C002C02D001234E -:1087100004600293029B03999800019B30189A0011 -:1087200022F06AFD019A029B9446281C634402933E -:10873000FFF71EFD029B07909C000798FFF766FD60 -:10874000051E11D0029B009A934207D3301CD10022 -:108750001AF094FF061C009B5B000093029B3551AE -:10876000013302930434E8E7029B9800049B30181D -:10877000DA00019B9900039B591822F03DFD029AF3 -:10878000059B944663441C1C002F4ED00325381CC7 -:108790003D4019D12C4B3A689A4215D11BF0ADF8E7 -:1087A00041688D4241D08368EA009F58002F09D06C -:1087B000042F07D0A300F7508768F318BA1852683F -:1087C00002345A600135ECE7C5210AAAFFF784FCA0 -:1087D00000200AAA011C1CF0DDF8FFF7C9FCA50067 -:1087E00001900198FFF712FD071E1ED0009A631C2E -:1087F00093420BD353000093032B01D8042300931F -:10880000009B301C99001AF039FF061C09AA381C7D -:108810000221F9F703FB099B02341B687351099B82 -:108820005A6873195A600835DBE7029B0698E21A0A -:10883000191C5208331CFFF7A1FB041C301C1AF052 -:108840002EFF201C0DB0F0BD64CE0200BCDC020087 -:108850009CC6020073B50C1C161C83071FD103684D -:10886000224A934207D0224A934218D1694601AA6C -:108870001AF05DFB03E0694601AA1CF07DFB009B3A -:10888000A34227D32AD80023019DA000A3422CD0C5 -:108890009900421A043AAA5801337250F6E7FFF7DA -:1088A00067FC0023051C0093009B281CA3420CD2EC -:1088B000FFF7ACFC00280DD0009A0E49A31A5B18F4 -:1088C0009B00013298510092EEE7FFF79FFC0028D1 -:1088D0000BD003E008480949009A02E0221C064830 -:1088E000074908F051FDF7F796FC73BDBCDC0200A8 -:1088F0009CC60200FFFFFF3F10F80200D382030076 -:10890000F6820300F7B5141C0A0AFF230E1C151C7F -:108910001E401D4083073CD107683E4B9F4203D059 -:108920003D4B9F4235D104E0694601AA1CF024FB6F -:1089300009E0FF231143194201D1206068E0694634 -:1089400001AA1AF0F4FA009BAA19934259D39A008B -:108950009446002001998200A84206D06746BF1ABB -:10896000043FCF590130A750F5E79B1BB500181AFB -:108970004919A4181AF0C3FA019B20605D1900235D -:1089800001360133B34243D09A0051426958A15095 -:10899000F7E7FFF7EDFB0023071C0093009BB342B2 -:1089A0000CD2381CFFF732FC00282AD0009AB31AE8 -:1089B0005B199B00013218510092EFE70020011C67 -:1089C0001AF09DFA061C381CFFF720FC011E03D08C -:1089D000301CF8F74FF9F6E7B168A94211D3AB00A4 -:1089E000E3181E6088009C4206D0C21AF768A218DD -:1089F000D259043B1A60F6E7491B301C1AF09CFA66 -:108A000006E00649009A064808F0BEFCF7F703FCAA -:108A1000F7BDC046BCDC02009CC60200D382030046 -:108A200010F80200F0B587B01D1C061C0C1C01924A -:108A3000F9F746F82F4B984206D1301C211C019AB9 -:108A40002B1CFCF7F9FF53E0876A2B4B002F07D054 -:108A50009C4220D1301CB8472860002816D147E03E -:108A60009C4218D1301C102103AAFFF705FB039B81 -:108A7000002B0DD1301CCD2103AAFFF72DFB0120C7 -:108A80000021059403AA1BF085FF286001202FE038 -:108A9000381C391CF6E7002CECD1019B201C002B64 -:108AA00026D0181CF9F70CF8144903F023F8002815 -:108AB0000FD0301CCC2103AAFFF7DEFA039B002B5A -:108AC00007D0201C211C03AA1BF064FF2860201C77 -:108AD0000EE0301CCE2103AAFFF7CEFA039B002B39 -:108AE00003D00120002101AACDE70220019B2B60C9 -:108AF00007B0F0BD20D2020074E00200B4FD020015 -:108B000010B5041C08F088FC002806D00021201CA9 -:108B10000A1C0B1CFFF732FA0AE0201C1FF0F3F9C5 -:108B2000031C201C002B03D1024803491FF0E7F966 -:108B300010BDC04600FD02001E8303007FB5062362 -:108B4000C0001843054B01900491052001A9029330 -:108B500003930592FDF72AFC07B000BD74E0020004 -:108B60000C23F0B58BB000AFFA18051C0C1CFFF7F6 -:108B700083FA3B69002B06D02B49221C2B4808F0B6 -:108B800003FCF7F748FBF86800284AD1281C1BF0C3 -:108B90000FFA0028F0D00C23281CFA180D21FFF73B -:108BA0006BFA0823F868F91803F0F6FD3860201C0A -:108BB000BD6819F05FFF6A4601352B187B600E33E4 -:108BC000DB08DB00D31A9D46BD6839682A1C68465D -:108BD00022F012FB6E462E23201C735519F04FFF16 -:108BE0003860201C19F046FF01357519021C3968E0 -:108BF000281C22F001FB79686846F7F7B5FB0623CD -:108C0000C00018430A4B0822BB61FB61094BBA182C -:108C10003B6201237B620B337861D1180520FDF79D -:108C2000C5FBBD460BB0F0BD48830300B8FB020096 -:108C300074E0020034CD0200F0B5174C0F1C6168DF -:108C400095B003912168061C08A804916260236016 -:108C5000F7F7C6FA051E06D0039B09986360049BCC -:108C60002360F7F7D8FA336805A8311C3A1C019342 -:108C7000F8F78EFB2A1C2B1C019905A807F09AFA1D -:108C80001BF079FE051CF7F7C1FA281C039B6360F3 -:108C9000049B236015B0F0BD882E002010B5041C85 -:108CA000FDF7D0FF031E064803D006491FF027F941 -:108CB00003E00549221C08F067FBF7F7ACFAC04651 -:108CC00090F802005E83030087830300011C08B54F -:108CD00002481FF014F9F7F79EFAC046A8FC0200FC -:108CE00070B5061C0D1C002811DD002906DD154895 -:108CF00010F042FF0124864213DC11E0C020311C39 -:108D0000000610F039FF012485420ADB08E0002943 -:108D100009DDC020000610F02FFF0124864200DB91 -:108D20000024E4B20BE00024A04208D00548311C26 -:108D300010F022FF0123854200DB231CDCB2201C43 -:108D400070BDC046FFFFFF3FF0B5051C89B002AF04 -:108D50000E1CBA603B60FAF78BFDAB687B61142395 -:108D6000F8181CF03BFB14237860F8181CF036FB55 -:108D7000032358437B68C0188300FB602C2B0AD860 -:108D80006B46F8682A30C008C0001B1A9D460023B5 -:108D900002ACFB6005E0F8681C301AF066FC041EAB -:108DA000EED0AA687B69201C9B1A63607B68321C2A -:108DB000A3613B68291C0093BB6801F07DFF184E3E -:108DC000201C7368002163616B68736008F098FB76 -:108DD0006369B8607360002802D0022803D00BE0FA -:108DE000E3681D6809E07B6805339B00E3185D6854 -:108DF000FB68002B0CD005E00A4DFB68002B0AD065 -:108E00000023BB60201C1AF04AFCBB68002B02D078 -:108E1000281CF7F700FA281CBD4607B0F0BDC04675 -:108E2000882E002074E002000122031C30B513409C -:108E300085B04510002B4ED128491D1C88424AD0D0 -:108E4000274B984247D0274B151C984243D0032309 -:108E5000041C034006D1244A0168914202D11AF051 -:108E600086FF0EE0214A251C2240062A05D0002B51 -:108E700009D11F4B22689A4205D1201C01A903F099 -:108E80008BFC051C27E0201CF8F71AFE194B9842B2 -:108E900007D1FF23DB05E0180323984311F0AAFE56 -:108EA000EFE7154B984205D1201C694601AA1CF03A -:108EB00063F80FE0114B984205D1201C694601AAC6 -:108EC0001AF035F806E0201C01A902221AF099FADE -:108ED000002800D0019D281C05B030BD74E00200C0 -:108EE00078CD020034CD020030D30200070080FFAD -:108EF00080CA02000CD00200BCDC02009CC602004A -:108F0000F0B585B0051C0E1C029203931F4F00287C -:108F100004D043680193002903D125E0002903D040 -:108F20000190019B581C01E0081C01910430800055 -:108F30001AF08EFB164B041C03607B684360029B97 -:108F40008360039BC360002D07D0291C201C019B5C -:108F500008319A00103022F04FF9002E13D0019BF7 -:108F600004339B001E510EE0019B181D80001AF077 -:108F70006FFB074B041C03607B684360029B8360AC -:108F8000039BC360E1E7201C05B0F0BD882E0020E4 -:108F9000C0D8020070B5061C10200D1C141C1AF05D -:108FA00057FB034B466085600360C46070BDC046DC -:108FB00048D8020008B50B1C02495A681DF0F9FD9B -:108FC00008BDC046B583030070B5151C12680C1CA3 -:108FD0008368002A09D1CC000621181D2143FBF724 -:108FE0005FFD00281ED043681BE01A79181C920709 -:108FF0000BD50D4A934215D10C4E736C002B03D147 -:1090000001201AF02EFC7064706C06216A68E4007E -:109010002143002A02D11AF067FC01E01AF05AFC41 -:1090200000232B6070BDC04658F70200882E002038 -:10903000F8B50625C3001D43071C291C0C48012256 -:10904000FBF72EFD061C4068002810D10C301AF0EA -:10905000FFFA084B041C0360476001201AF001FC72 -:109060006E21A0602A1C1AF035FC201C7460F8BD2B -:10907000AC2E002028D9020008B502480321FBF7D6 -:1090800029F808BDA82E002010B50C1C0621C00030 -:10909000014301220248FBF703FD446010BDC046B6 -:1090A000AC2E002073B50625C3001D43061C291CE9 -:1090B0000F480022FBF7F4FC041E17D1221C0D48B8 -:1090C000291CFBF7EDFC041E11D0606808216A46DC -:1090D000FEF7D2FF009B002B08D000206A46011C3F -:1090E0001BF058FC301C6168FFF7CEFF606876BD4E -:1090F000AC2E002064D9020010B588B0694601AAE0 -:10910000041C08F0E7F9009B022B2AD904A832219D -:1091100002AAF7F7F3F9019B13495A6802A81DF058 -:1091200048FD201CF8F7CCFC104BC2689A4210D1C5 -:10913000236802A85A680E491DF03BFDE368002B26 -:1091400007D05A68002A04D002A899680022F8F7CC -:10915000D1FC04A819F05DFD0AF0FEFE04A819F088 -:1091600008FD08B010BDC046C383030071120100A2 -:10917000CC83030070B5051C90B0002803D11F48B4 -:1091800018F0E8FC38E004A8F7F72AF8041E19D113 -:109190002E6801A8291C0122F8F7FAF8221C231CCA -:1091A000311C01A807F006F8041C03200AF058FE41 -:1091B000201C1BF0E0FB012040420AF051FEF7F7B3 -:1091C00025F819E0012040420AF04AFE05990C48B2 -:1091D000F8F7B4FC0598F8F773FC0A49041C02F090 -:1091E00089FC002808D1201C074902F083FC0028D4 -:1091F00002D10598FFF780FF10B070BDD083030047 -:1092000010F0020030F90200C8F7020037B5294B10 -:1092100001AA1A60FAF706FBE120C000FAF716FB74 -:10922000254B2648C118FDF7D1FCFEF791FD0AF049 -:10923000F5FDF9F747F80BF0D1FE0023204CA367AA -:10924000204B1A781D1C012A1FD1F8239B021A7883 -:109250004D2A07D15A78502A04D159881A481BF050 -:109260008FFC12E0002219480721131CFBF726F996 -:10927000002802D01BF08FFC07E0A6201449012231 -:109280004000FFF75BFC1BF09EFB2B78002B0ED100 -:10929000FEF7B6F80028F8D00E481FF00EFB0023AA -:1092A0000D4A5360136063671BF061FB37BDFEF727 -:1092B00003F9EFE74C270020DC25000070010020B7 -:1092C000882E00200601002004E00300FD83030037 -:1092D000F8DC020005840300F42E002007B5FDF73A -:1092E00001FD054B01A81968091A8908FDF7B4FCAE -:1092F000FDF70CFD07BDC0464C2700209F23002131 -:10930000024A5B000248D1527047C046882E0020B6 -:1093100074E002009F230121024A5B000248D152FF -:109320007047C046882E002074E002009F23044A44 -:109330005B00D35A0348002B00D103487047C04656 -:10934000882E002034CD020078CD020008B5FFF74A -:10935000C5FF014808BDC04674E002000023820733 -:1093600008D10268044901338A4203D0034BD31A5F -:109370005A425341181C704764DC02002CDB020087 -:1093800070B5061C0D1C0124B44206D2A300286847 -:10939000E9581BF02AFC0134F6E7014870BDC046CD -:1093A00074E0020010B5041C10201AF051F9044BAF -:1093B00084600360034B43600023C36010BDC0465C -:1093C0003CE20200C94C020038B5051C10201AF01E -:1093D0003FF9041C074B696808C01AF09DFBAB6895 -:1093E000E968A3606B68E0689A0021F005FF201C23 -:1093F00038BDC04664DC02000023F7B5041C0D1C18 -:1094000001938B0705D10B68224FDF1B7A427A410B -:109410000192AB68002B09D1019B002B03D0201CCB -:109420001D491DF0FAFA201C1C492FE0019B002B5E -:1094300003D0201C1A491DF0F0FA201C19491DF018 -:10944000ECFA002601236A68964216D2B200171C75 -:10945000EA68D259002A0ED0042A0CD0002B03D17E -:10946000201C11491DF0D9FAEB68201CD9590122A2 -:10947000F8F740FB00230136E5E7201C0B491DF0FF -:10948000CCFA019B002B03D0201C09491DF0C5FA22 -:10949000F7BDC0462CDB0200138403001A840300CE -:1094A00020840300A04903008B400300DD44030037 -:1094B0001B43030008B5FFF751FF002805D10349FE -:1094C000034807F061FFF6F7A6FE08BD2B840300F2 -:1094D00000FD020038B50D1C041CFFF7EBFF281C33 -:1094E000FEF746FE051C281CFEF790FE011E07D065 -:1094F000201D00221AF01AFB0028F4D0014800E0D9 -:10950000014838BD78CD020034CD020008B583078C -:109510000BD10368084A93420DD0084A934204D104 -:10952000074908481EF0EBFC03E00748074907F02D -:109530002BFFF6F770FE08BD64DC02002CDB020096 -:109540004184030034FB020000FD02002B84030071 -:1095500038B50D1C041CFFF7D9FF281CFEF708FEC8 -:10956000051C281CFEF752FE011E04D0201D0322FC -:109570001AF0DCFAF5E7014838BDC04674E0020095 -:1095800038B50D1C041CFFF7C1FF291C201D01224A -:109590001AF0CCFA004838BD74E0020038B50D1C52 -:1095A000041CFFF7B3FF291C201D02221AF0BEFA8B -:1095B000004838BD74E0020010B5041CFFF7A6FF98 -:1095C000201D1AF03CFB014810BDC04674E00200AB -:1095D00008B501221BF042FB004808BD74E0020000 -:1095E00038B5041C0D1CFFF791FF201D291C022219 -:1095F0001AF09CFA002804D103481EF073FCF6F719 -:109600000AFE024838BDC046F0FD020074E00200C8 -:1096100010B5041CFFF77AFF201D1AF0F2FA00289B -:1096200005D1034903481EF06AFCF6F7F4FD10BDAE -:1096300063840300F0FD0200F8B501280AD0002879 -:1096400002D002280AD029E08B681548002B26D1C9 -:10965000144824E08B685B00184320E003250020B9 -:109660000D4085421BD10C680F4B281C9C4216D123 -:109670000E1C4F68BD420DD0F268AB00995800290E -:1096800006D0042904D00220FEF70EFC4010241856 -:109690000135EFE701206400204300E00020F8BD21 -:1096A00034CD020078CD02002CDB0200F7B5071C98 -:1096B0001020019119F0CCFF051C0A4B061C08C5AF -:1096C000281C391C1AF028FA0024BC4208D0019A40 -:1096D000A300D158281C01221AF028FA0134F4E71B -:1096E000301CFEBD64DC0200F7B5051C0E1C171E05 -:1096F00005D0FFF70BFF1A4CB54209D12EE0FFF75A -:10970000D9FEB54204D1281C1BF080FA041C25E0C8 -:109710000020011CFFF7CAFF041C301CFEF728FDC7 -:1097200001900198FEF772FD061E0BD0281D311C1A -:1097300000221AF0FBF90028F3D0201C311CFFF79F -:109740001FFFEEE7002F09D0E86819F0A8FF636853 -:109750006B60A368AB60E368014CEB60201CFEBD4E -:1097600074E00200F0B585B0041C039002910192F0 -:109770000027FFF7F3FDB84207D13A1C204801212A -:1097800003AB1BF0C6FA041C0137029D0026281CFF -:10979000FFF7E4FDB04207D1321C1948012102ABAA -:1097A0001BF0B7FA051C0136019B002B05D0A368FE -:1097B000AA68934201D1002310E0201CFFF7F2FDBC -:1097C000019001981BF080FA011E06D0281D00228E -:1097D0001AF0ACF90028F4D1EDE701230193002F32 -:1097E00002D0201CFFF7E8FE002E02D0281CFFF755 -:1097F000E3FE019B0348002B00D1034805B0F0BDF8 -:1098000064DC020034CD020078CD020037B500914F -:1098100001921F2850D8151C0C1C10F0FFF81015D1 -:109820001A4D4D4D1F4D4D4D4D4D4D10151A4D4D71 -:109830004D1F4D4D4D4D4D24272C393E4D43081C99 -:10984000111C1BF0EDF938E0081C111C1BF0F6F997 -:1098500033E0081C111C1BF051FA2EE0694602206F -:109860001BF02DFA29E0081C111C00E0101C01223D -:10987000FFF778FF21E0081CFFF71CFE281CFFF70C -:109880006DFD031E0D4818D0A368AA68934214D139 -:10989000201C291C1BF06EFA0FE0081C111C1BF089 -:1098A00061FA0AE0081D111C00221AF03FF9031E9C -:1098B000034802D1014800E000203EBD78CD0200FF -:1098C00034CD02003E2803D0402809D03C280ED1D8 -:1098D0004239C9B22F290AD8084B585C012308E045 -:1098E000712904D8064B585C064B5B5601E00123F6 -:1098F0000020002A00D013607047C0465D85030039 -:1099000079840300EB84030008B5512836D00FD8C2 -:10991000492827D006D842281CD048281FD0002824 -:109920004BD117E04F2840D042D84C281AD044E001 -:10993000682811D007D864282AD0662825D0622844 -:109940003BD188563AE06C2832D071280FD0692874 -:1099500033D12DE0885C31E05200505E2EE05200A1 -:10996000505A2BE0920050581AF0DFF929E0D2004B -:109970008A18106851681AF0AEF922E0D2008A18ED -:10998000106851681AF0C2F91BE09200505805E0C7 -:10999000D2008A181068516813F01CF8032398430A -:1099A000013B1843074BC0180BE09200505808E0E9 -:1099B000920050581AF09EF903E000200123400065 -:1099C000184308BD00008080F7B5161C156801AA71 -:1099D000041C0F1CFFF776FF402C05D1019B043CB3 -:1099E0005A1EAD185B421D402B183360221C5A26AC -:1099F0003E3ABE42B6415442624176422B1CD2B23C -:109A0000311C1BF0BCF9041C0D1C4F2F3ED0532FF2 -:109A100008D1201C21F012FD0022011C201C02F0A4 -:109A200003FA33E0662F06D1032302209C43184B30 -:109A30000443E0182AE0642F09D1201C12F0CAFF69 -:109A4000032302249843124B2043C0181EE0002E2B -:109A500010D080220023D20512196B41201C002B4C -:109A600004D1002A02DB1AF045F90FE0291C1AF094 -:109A700032F90BE0201C002905D1064B9C4202D88C -:109A80001AF053F902E0291C1AF040F9FEBDC04655 -:109A900000008080FFFFFF3FF0B587B0141C03AAD1 -:109AA000071C0E1C01931D68FFF70CFF0090402F50 -:109AB00005D1039B043F5A1EAD185B421D40009B1D -:109AC000019AEB1813603E3F642E09D0662E02D037 -:109AD0004F2E22D140E0201CF8F740F9041C3BE057 -:109AE000201CF8F73BF97C427C4112F01FFFE4B2E6 -:109AF00004900591A30006AAD318083B211C2A1C38 -:109B00001B6804201BF064F901235C40A40006AB31 -:109B10001C19083C043524681EE0A3070CD1154B22 -:109B200022689A4208D179427941201CC9B2009A30 -:109B30002B1C1AF0B7F81AE0201CF8F7ABF8009BC2 -:109B4000041C042B08D95A2E06D9002804DA281D33 -:109B50001A1FFF2121F06DFB0098042800D9042072 -:109B6000794279412A1CC9B2231C1BF031F907B094 -:109B7000F0BDC04630D3020070B5061C0D1C141C8D -:109B8000181C642E0CD0662E04D04F2E11D19400D8 -:109B9000635127E094000D19F8F7E0F8286021E000 -:109BA000D4000D19F8F7DAF812F0C0FE28606960E9 -:109BB00018E020233343712B0CD10321014009D13C -:109BC000094B02689A4205D1E4002B1908221AF0C9 -:109BD00069F807E0F8F75EF8291C031C221C301C0A -:109BE0001BF009F970BDC04630D3020070B50E1CE1 -:109BF0001049041C00251CF010FF73689D420ED212 -:109C0000002D03D0201C0C491CF007FFAB00F318FB -:109C1000201C99680122F7F76DFF0135EDE7012B54 -:109C200003D1201C05491CF0F8FE201C04491CF03F -:109C3000F4FE70BD638703008B4003008D85030035 -:109C40001B43030070B501281ED0002805D0022850 -:109C50001ED10D1C0F4C002605E04B680E48002B52 -:109C600017D10E4815E06B689E4209D2B300EB187D -:109C700002209968FEF718F9401024180136F2E71F -:109C800001206400204304E04B685B00184300E0BF -:109C9000002070BDF8DC020034CD020078CD020057 -:109CA00010B5041C102019F0D3FC044B8460036031 -:109CB000034B43600023C36010BDC0463CE202007A -:109CC000374F020070B50E4A002816D0841CA4003D -:109CD000061C201C0D1C19F0BBFC0A4A46600260E1 -:109CE000021C002D09D00022083CA24204D0AB582F -:109CF00081188B600432F8E7021C101C70BDC0464E -:109D0000F8DC0200BCDC02007FB5041C0E1C151C34 -:109D1000072829D002D8052805D062E0031C193B8A -:109D2000042B3ED95DE0101CF7F7CAFE2F4901F065 -:109D3000E1FE011E56D06B68726800219818FFF78B -:109D4000C1FF311C7368041C9A000831083021F0EF -:109D500053FA291C70686B680230800020189A0042 -:109D6000083121F049FA18E003A9101CF7F7D0FFD9 -:109D70000021884236D00398884210DD736858432A -:109D8000FFF7A0FF041C231C301C0833009308308D -:109D900004217268039B1BF041FB211C22E0144943 -:109DA00020E0081CF7F78CFE281CF7F789FE114B02 -:109DB000426A9A4206D0281C0C491BF0B2FC0E499C -:109DC000051E0FD0311C2B1C6A6808310092083325 -:109DD000201C726801F07AFA0849002802D106496D -:109DE00000E00021081C04B070BDC046BCDC0200CD -:109DF000F8DC0200A19C000078CD020034CD020006 -:109E000030B585B0042A2DD103240A1C051C0C4052 -:109E10001FD1164B096899421BD1111C406801AA39 -:109E200001F01AFA002802D11148FEF74FFF019BFA -:109E30000298211CC01AFFF745FF041C6368083014 -:109E40009A00019B991C8900691821F0D5F9201C02 -:109E500009E0286869680023F7F7F4FF0230800002 -:109E6000405900E0002005B030BDC04600E20200CD -:109E70009B400300F0B51D1C002385B0081C009317 -:109E80000C1C111C1A1C0133F6F7AEFB1748002CF2 -:109E90002AD02868830703D1154B02689A4223D041 -:109EA000102019F0D5FB041C2868FEF761F9002585 -:109EB000042603900398FEF7A9F9071E0BD0B542BC -:109EC00005D3F100201C19F0D9FB041C7600AB006F -:109ED0001F510135EEE7281C211CFFF7F3FE051C7E -:109EE000201C19F0DCFB281C05B0F0BDF8DC0200DA -:109EF000BCDC020010B5041C081C1BF05FF8031C3E -:109F0000002C04D0012C07D14000204305E0034879 -:109F1000002B02DC024800E0002010BD34CD02001E -:109F200078CD020070B54568C6688468102019F0C5 -:109F30008FFB034B4560C6600360846070BDC04604 -:109F400058DD020038B50D1C041C6A680749AB686F -:109F50001CF02FFEEA68201C012A03D104491CF0E2 -:109F60005CFD02E003491CF024FE38BD8F85030030 -:109F70001B4303009C85030030B5041C87B0002000 -:109F8000042A30D1201C0D1C1BF018F8011CAB0753 -:109F90001DD1164B2A689A4219D1291C03AA01F037 -:109FA0005BF9102019F054FB114B039A0360E3682E -:109FB00061685A4352184260049A111C5943019235 -:109FC00062688A188260059A5343C3600BE00023DD -:109FD00020682A1CF7F736FFE36858436368C01807 -:109FE00001234000184307B030BDC04600E2020024 -:109FF0001CDD020008B5F7F7B1FE12F097FC002255 -:10A00000074B11F00DFE074B074A11F0CBF912F088 -:10A01000E1FC03239843013B1843044BC01808BDDF -:10A0200000806640FB210940182D445400008080C8 -:10A0300008B5F7F793FE12F079FC084A084B11F0C7 -:10A04000EFFD084B002211F0ADF912F0C3FC032321 -:10A050009843013B1843044BC01808BD182D4454C5 -:10A06000FB210940008066400000808008B5F7F7BA -:10A0700075FE034B184002231843024BC01808BD5D -:10A08000FCFFFF7F0000808008B5F7F767FE13F044 -:10A09000F9F8034B002800D0024B181C08BDC0463D -:10A0A00034CD020078CD020008B5F7F757FE13F063 -:10A0B000E9F8034B012800D0024B181C08BDC0462C -:10A0C00034CD020078CD020008B5F7F747FE13F053 -:10A0D000D9F8034B012800D8024B181C08BDC04614 -:10A0E00034CD020078CD02001FB500230193F7F7AD -:10A0F00035FE01A913F036F90322031C0220934315 -:10A10000064903435B180293019B934303435B1887 -:10A1100002A90393FFF7D6FD05B000BD00008080C3 -:10A1200038B50D1CF7F71AFE041C281CF7F716FEAD -:10A1300010F060FD011C201C13F0F0F8032398437D -:10A14000013B1843014BC01838BDC0460000808059 -:10A150001FB500230193F7F701FE01A913F0B2F830 -:10A16000032302249843074B2043C0180290019810 -:10A1700019F0C0FD02A90390201CFFF7A3FD04B055 -:10A1800010BDC0460000808038B50D1CF7F7E6FD15 -:10A19000041C281CF7F7E2FD011C201C13F06EFBC9 -:10A1A00003239843013B1843014BC01838BDC046F8 -:10A1B0000000808038B50D1CF7F7D0FD041C281C6A -:10A1C000F7F7CCFDC00FC307600040081843032316 -:10A1D0009843013B1843014BC01838BD00008080F4 -:10A1E00038B50D1CF7F7BAFD041C281CF7F7B6FDAF -:10A1F000011C201C13F0CAFA03239843013B1843A7 -:10A20000014BC01838BDC0460000808008B5F7F784 -:10A21000A5FD12F03DFE03239843013B1843014B7B -:10A22000C01808BD0000808008B5F7F797FD13F04F -:10A230005BFA03239843013B1843014BC01808BD48 -:10A240000000808008B5F7F789FD13F0FBF90323C0 -:10A250009843013B1843014BC01808BD00008080A3 -:10A2600008B5F7F77BFD13F069F903239843013B29 -:10A270001843014BC01808BD0000808008B5F7F7EF -:10A280006DFD13F019F903239843013B1843014B6B -:10A29000C01808BD0000808008B5F7F75FFD12F018 -:10A2A0005FFF03239843013B1843014BC01808BDCF -:10A2B0000000808008B50349034807F065F8F5F70A -:10A2C000AAFFC046A285030010F8020070B5061C64 -:10A2D00008680D1CF7F742FD0021041C0FF098FDE3 -:10A2E000002801D0FFF7E6FF201C13F029FB041C17 -:10A2F000012E06D1032302209C430D4B0443E0189A -:10A3000015E06868F7F72AFD0021051C0FF080FDB5 -:10A310000028E7D1281C13F013FB011C201C0FF0B0 -:10A32000C7FF032302249843014B2043C01870BD8C -:10A330000000808008B5F7F711FD13F02BFA032316 -:10A340009843013B1843014BC01808BD00008080B2 -:10A3500038B50D1CF7F702FD041C281CF7F7FEFCAE -:10A36000011C201C13F06AFB03239843013B184394 -:10A37000014BC01838BDC0460000808010B5F7F70B -:10A38000EDFC0021041C0FF039FD002801D0FFF77F -:10A3900091FF201C13F0FAFC03239843013B184360 -:10A3A000014BC01810BDC04600008080F0B5071CEE -:10A3B000443787B0041C381C0191002618F0E4FBD8 -:10A3C0002069431C18D00A2804D1201C1AF036FF3B -:10A3D0000126F5E7FBF716FC002823D12369232B80 -:10A3E00008D1201C1AF02AFF23695A1CE8D00A2B36 -:10A3F000F7D1E5E75C2B07D0E369256A019AA363EF -:10A40000E563002A12D117E0201C1AF017FF236918 -:10A410000A2B07D0E369A363236AE3630423403470 -:10A420002370F9E2201C1AF009FFC9E7012B03D1C0 -:10A430000622012D00D07AE1636A002B04DA221C87 -:10A440000721403211702FE0002B06D0221C06217C -:10A4500040321170013B6362B8E1002E39D0A36A2B -:10A46000002B36D1211C052240310A706362226B19 -:10A47000BA4B606BD3185B001B5A013D9D4200D163 -:10A48000A4E113D9E16A8A4207D30831490019F0DF -:10A49000F5F8E36A60630833E362236B5A1C2263B6 -:10A4A000626B5B009D52636A0133D4E7236BAB4A56 -:10A4B0009A185200125A954205D2013B2363636AEF -:10A4C000013B6362F2E7954200D17FE102230B700A -:10A4D0007CE12069431C1BD1A04A236B616B9B1854 -:10A4E0005B005A5A231C4033002A00D121E1052287 -:10A4F0001A7000236362994A236B9A185200525AC9 -:10A50000002A00D162E1013B2363636A013BF1E76A -:10A51000272800D17EE1222800D17BE1752804D0D4 -:10A520001023021C9A43622A04D16369272B11D09D -:10A53000222B0FD0722803D16369622B2ED104E045 -:10A5400062282BD16369722B28D1A369272B01D0F4 -:10A55000222B23D1752803D1201C1AF06FFE59E15C -:10A5600062280ED1201C1AF069FE00230193236992 -:10A57000722B00D048E1201C1AF060FE01230193E9 -:10A5800042E100230193722800D045E1201C1AF01B -:10A5900055FE2369622BEED001233CE1FBF73EFB25 -:10A5A0002169002803D15F2901D07F291ED9231CEE -:10A5B000082240331A70C9B2381C18F03DFB201C29 -:10A5C0001AF03CFE2069431C00D1FFE0FBF726FB9C -:10A5D000002801D0217CEFE720695F28FAD07F288E -:10A5E000F8D8FBF727FB0028F4D1EFE0081CFBF7B5 -:10A5F00021FB002808D0251C216940352E290CD1CB -:10A600000A2300262B7035E023692E2B52D1606976 -:10A61000FBF710FB0028EED14CE0092300262B703D -:10A62000302927D16269173313430122161C622B8C -:10A6300020D06F2B1ED0783B5E425E411AE020692D -:10A64000431C00D1C2E0002E1BD12023021C9A43E0 -:10A65000131E452B15D13B3B2B706521381CF5F79C -:10A6600059FF201C1AF0EAFD216902220B1C2B3B2A -:10A670009343E4D1381CF5F74DFF201C1AF0DEFDA2 -:10A68000DDE7FBF7CBFA002803D021692E2909D199 -:10A690000DE02069FBF7CEFA0028F6D123692E2BB6 -:10A6A000F3D093E020230A1C9A434A2AE2D10A23DA -:10A6B0002B70DFE721692E291FD1261C381CF5F7E6 -:10A6C00029FF201C1AF0BAFD236940362E2B00D03A -:10A6D00093E165692E2D00D08FE1381C291CF5F718 -:10A6E00019FF291C381CF5F715FF201C1AF0A6FDD0 -:10A6F000201C1AF0A3FD0D2380E10026184D2F78B1 -:10A70000002F0ED0B9420CD03B1CFD20633B6A1CCD -:10A71000034202D0452F01D1013E151C01360135FF -:10A72000EDE7201C1AF08AFD002F04D10122231C22 -:10A7300040331A704AE0371C01352B78652B11D154 -:10A740006B78226901379A4205D1201C01351AF035 -:10A7500075FD3E1C06E00235EFE7C046FFFFFF7FB8 -:10A76000DF8503002B78452B0AD16B7822699A424A -:10A7700004D1201C1AF062FD3E1C0EE001220EE006 -:10A78000632B0AD16B78226901379A4205D1201CCC -:10A790001AF054FD02353E1CCFE7A04B9A5D231CF6 -:10A7A00040331A70231C40331B780422191C914338 -:10A7B000422901D0442B02D1A36A013305E0432989 -:10A7C00001D0452B02D1A36A013BA362211C403179 -:10A7D0000B78082B00D01FE10023E56CA66C904A93 -:10A7E0009800805800228418B24205D0875CAC5C87 -:10A7F000A74205D10132F6E72278002A00D1FFE016 -:10A800000133222BEBD107E1231C0C2240331A70B9 -:10A81000012306E000230193231C0B2240331A700E -:10A8200000232722049323690392222B00D1039350 -:10A83000201C1AF003FD0123039A05932369934218 -:10A840000AD16369934207D1201C1AF0F7FC201C3F -:10A850001AF0F4FC032305930026236902930133C5 -:10A8600000D1B0E0059B012B03D1029B0A2B00D144 -:10A87000A9E0059B9E4200D3ACE0029B039A934261 -:10A8800005D1381C111C0136F5F744FE97E0029BF8 -:10A890005C2B00D08DE0201C1AF0D0FC019B2569B8 -:10A8A000002B02D0381C02996BE0622D00D1A2E08F -:10A8B00012D84E2D4BD007D8222D66D0272D64D02C -:10A8C00000260A2D7BD045E05C2D5ED0612D00D1A5 -:10A8D0008FE0552D3ED11BE0742D11D007D86E2D81 -:10A8E00010D0722D12D0662D34D10C2550E0762D6B -:10A8F0000AD00DD30226782D16D06B1C5ED029E02D -:10A90000092545E00A2543E00B2541E00D253FE000 -:10A91000049B002B04D0381C5C21F5F7FBFD37E0CD -:10A920000426752D00D0B6190025013E2BD3201C1E -:10A930001AF084FC2369181C0293FBF787F900289E -:10A940004DD0029819F0A0FA2D014519EDE73548D0 -:10A95000FEF7BCF92B1C303B072B10D81D1C03261F -:10A960006369303B072B0ED8013E002E0BD0201C14 -:10A970001AF064FC2369ED00303B5D19F0E7381CE8 -:10A980005C21F5F7C7FD6B1C18D0274B9D420BD8F7 -:10A99000049B002B04D1381C291CF5F7BBFD0DE0EE -:10A9A000FF2D01D8E9B206E0231C012240331A70C2 -:10A9B00004E06B46197A381C18F03EF90026201C7A -:10A9C0001AF03CFC49E7059B9E4203D2231C03225C -:10A9D00040331A70381C311C18F076F9F6E6231C47 -:10A9E000012240331A70049B051C002BDAD11D1C78 -:10A9F000D1E70725CCE70825CAE74A233370E5E607 -:10AA0000212B07D1094BA0331A681023002A02D04A -:10AA1000023B00E00E330B7007B0F0BDB4850300BD -:10AA2000ECDF020021860300FFFF1000882E0020CB -:10AA3000054B002805D00023022802D101224B003B -:10AA40001343181C7047C04678CD020008B5024970 -:10AA50001BF0E3FF08BDC0465C29030073B501A9E4 -:10AA600001F09AFE019B061C502B02D91848194987 -:10AA70001CE08020400018F0EBFD174C051C231C47 -:10AA8000883318600023019A934203D0F15CE954A3 -:10AA90000133F9E75B22281CEA5403F01DFA2B1C52 -:10AAA000002807D1883420600C4909481DF027FA96 -:10AAB000F5F7B1FB5A1B0133591E09789B29F9D1CF -:10AAC000291C07481AF0B5FE00238834236076BDA0 -:10AAD00010F80200A0860300882E0020AF86030035 -:10AAE00080CA0200F0B58BB0061C10A80778364863 -:10AAF00005AD00900195081C111C1A1C0523F5F7E3 -:10AB0000A5FD9120000118F0A3FD304B304A1860DC -:10AB1000059B476043702B7904A903702B7A041CB2 -:10AB200083702B7BC3702B7C301C136001F034FED0 -:10AB30000025284B071C0C201D6018F089FD264BB2 -:10AB4000061C036008F0F2F9B06008F0EFF9234B3F -:10AB500023491860234B70601D70234B301C1D70FF -:10AB6000224B0A1C1D602B1C08F0EEF8201C391C1F -:10AB7000049A18F03BFD201CF8F7F0FD1C4B071E53 -:10AB80000393134E194D164C0AD108F001F80F4BE0 -:10AB900018481F60184B19681DF0B1F9F5F73BFB19 -:10ABA0000122164B1A7008F0BBF90028FBD1039B59 -:10ABB000883318603368002B03D01148296816F0D9 -:10ABC000F7FE201C0BB0F0BDC0E00200102F0020EB -:10ABD0006C01002058270020FCE0020054270020D0 -:10ABE00074E00200FB2D0020FC2D00205C270020DB -:10ABF000882E002010F8020004000020FA2D00200A -:10AC0000C686030000220D4910B50B78DBB29342D3 -:10AC100012D10B4A1478002C02D001240C7013704E -:10AC2000084B1B78002B06D0074A136820331360AB -:10AC3000064B1A6800E08268101C10BDFC2D002035 -:10AC4000FA2D0020FB2D002058270020542700203B -:10AC5000D2235B005843134A30B51368000C83427B -:10AC600006D9114C2368013323601368203B13601D -:10AC70001F23051C14689D43A54203D901240B4BD7 -:10AC80001C70F5E703401A1D202A00D92022084C29 -:10AC90002468934203D2E51829710133F9E7054B83 -:10ACA000186030BD582700205C270020FB2D0020B5 -:10ACB0005427002050270020F0B5151C42688FB0A3 -:10ACC000944606938369CA6802938B6882606344E2 -:10ACD0005A1C42601A78041C01929A1C4260DA1CC9 -:10ACE0005F7842609A78059104921A1D4260DB7881 -:10ACF00000210393031C1833C360029B03339B00A2 -:10AD0000C31804330361029B1C309B001A1C079379 -:10AD100020F08FFA149AAB00D3180B93029B049A7D -:10AD2000DB1B08939B1A05339B00E3181E1D0122B1 -:10AD30000199BD420FD9114203D1834883493A1C7E -:10AD40002CE01E1C149BB900E81B5918FEF7BAFF33 -:10AD50003D1C706027E0114202D01E1C7C4B7360CA -:10AD6000069B002B1FD1019B1B071CD4039BFA1AC7 -:10AD7000954211D3D91B8B009C462A1CBA4212D291 -:10AD8000614693005818059901320818079900691F -:10AD9000CB1AE3189861F1E76B486C492B1C06F05D -:10ADA000F3FAF5F738FA0022AA4208D01499079866 -:10ADB0009300C958C31AE31899610132F4E7069B5E -:10ADC000002B03D1019B1B0700D494E00223019ABE -:10ADD0001A4000230A920793002A04D0069818F01C -:10ADE00040FD079030600026A3680B9D0993069BE9 -:10ADF0009E4228D000222968049BDB199A4215D272 -:10AE000009989300C35899420ED1029B013B9B1AAB -:10AE10009B00E318DA69002A03D0CA084A484D4962 -:10AE200066E06A68DA610BE00132E5E70A9B002B15 -:10AE300002D14548484963E007986A6818F04AFD1E -:10AE400001360835D3E7089B03989A1D039B9200AF -:10AE5000D91CA218059B043289005918131C00281C -:10AE600008D01D68002D01D10D681D600138043324 -:10AE70000439F4E7039B9B00D318029A0632920030 -:10AE8000A2180432934209D20433191F0968002919 -:10AE9000F3D1D21A92102C48304929E0089B099A24 -:10AEA0009D00BB00D31865190693002610E0039B94 -:10AEB000059904339B0058580699B3000430C958CB -:10AEC000F9F7EEFD00280CD04368AB610136043D74 -:10AED000049B9E421ED2AA69002AF7D1019B1B0740 -:10AEE000E5D4F619099BB600F25817481C49D20858 -:10AEF00006F04AFA55E7049B002B04D01248194982 -:10AF00001CF0FDFF4DE7019B9B0703D5049818F04B -:10AF1000A8FC306065680DA825600D951AF05EFAF2 -:10AF20002E180136731E1D78FF2D09D0029B013BA0 -:10AF30005D1BAD006519E869FBF79AFBE861F0E776 -:10AF400066600FB0F0BDC04600FD0200803F030008 -:10AF5000F8DC0200DC430300573F0300D586030002 -:10AF6000078703003787030070B5041C0D1C1049C8 -:10AF70001BF053FD6968201C0122F6F7BBFD0D4E46 -:10AF8000201C311C1BF049FDA968201C0122F6F78A -:10AF9000B1FD311C201C1BF040FDE968201C012282 -:10AFA000F6F7A8FD201C04491BF037FD70BDC04614 -:10AFB0005E8703008B4003001B43030070B5061C33 -:10AFC00010200D1C141C18F043FB034B46608560D9 -:10AFD0000360C46070BDC04600E202008022044BE2 -:10AFE00052001A600123034A1360034A136070473A -:10AFF00000E100E00C8C0040008000408022054B06 -:10B000005200DA67044BFF3A5A600022034B1A6081 -:10B010007047C04604E100E0008000400C8C004016 -:10B0200038B501251D4B1E4C18601E4BE550C0461F -:10B03000FFF7E4FF1C4A1D4BE560E25000230221AC -:10B040001B4AC220A3500432A15049180832A15013 -:10B050008021C12209039200A150053AFF21FF3A45 -:10B06000A3504024134B80001A588A432243802463 -:10B070001A500C301A5824061202120A22431A508F -:10B0800004301A588A433F390A431A508022120466 -:10B090001A60802252041A6038BDC0466027002022 -:10B0A00000800040FC0F0000701700004C050000FD -:10B0B0000405000000E100E038B5224C224D636C2D -:10B0C000002B0AD000236364204B1B689847A822FA -:10B0D000D200AB580001C018A850A36C1A4D002B29 -:10B0E0000AD00022174B9A64184B5B689847184A9D -:10B0F0000001AB58C018A850E36C134D002B0BD0C7 -:10B100000022104BDA64114B9B689847A922D200A9 -:10B11000AB580001C018A850236D0B49002B0FD06D -:10B120000022084B0B481A650B4A8B581B188B5092 -:10B130000A4A1368063313608022094B12045A60CE -:10B1400038BDC046FC800040008000401400002054 -:10B1500044050000701700004C050000FC2C002086 -:10B16000FCE100E0F7B50191032824D8134B8000DF -:10B17000C758C2230125124C9B00E75003191D64D8 -:10B18000A825ED005E59B4460E4EA659921B6244A6 -:10B19000D117090F8C4662441211013200920A49FC -:10B1A000019A4250C121009A89001201B6186750D5 -:10B1B00000205E5101E001204042FEBD78E2020025 -:10B1C000008000404C0500001400002003280BD82C -:10B1D000074B8000C158C223064A9B00D150064A43 -:10B1E000064BC250002001E0012040427047C0469B -:10B1F00078E2020000800040175402001400002092 -:10B2000008B5024B1B68984708BDC0466027002060 -:10B2100010B50024054AA358002B02D00021A150EC -:10B2200098470434102CF5D110BDC0466427002087 -:10B23000074A89008B58002B06D188508021054A87 -:10B2400049045160181C01E0012040427047C0468B -:10B2500064270020FCE100E030B585B003AB051C9D -:10B26000141C081C02AA01A91AF0C9F8019A16496F -:10B2700000238A4200D0531002984210884200D125 -:10B280002A1C002B04DA5B19D843C017034002E0E4 -:10B29000AB4200D92B1C002A01DA521902E0AA4263 -:10B2A00000D92A1C23609A4200DA1A1C039B6260B0 -:10B2B0008B4205D0032B03D05B10A360002001E07C -:10B2C0000120A06005B030BD74E00200F0B587B089 -:10B2D000061C151C0C9F1B2803D1BA4212D000205B -:10B2E0003FE0192808D01C280CD13D1C171C0A1C53 -:10B2F0001D26191C131C05E03D1C171C0A1C1A26D0 -:10B30000191C131C0397AF4200D903951C1C002382 -:10B3100002910193019B039A93421BD0029B0594D7 -:10B32000049301CB02CC0293F6F762FC002802D012 -:10B33000019B0133EDE71B2ED1D0049B301C196813 -:10B34000059B1A68FCF7A2FF074BC01A43425841FD -:10B35000C0B206E0BD4201D002D2C0E71A2EBED074 -:10B36000012007B0F0BDC04634CD0200F0B51E1C70 -:10B3700085B0039018680D1C171CF6F7A1FB7368C5 -:10B38000019002930024022F18D9291CB2680123CE -:10B39000F6F758FD041C032F10D0291C0198F26801 -:10B3A0000123F6F74FFD051C08E0039AA300D058CF -:10B3B0000299F6F71DFC002808D10134AC42F4D301 -:10B3C000054906481CF09BFDF4F725FF01206400A9 -:10B3D000204305B0F0BDC0466587030010F80200A9 -:10B3E000F8B5041C0D1CA368002B0AD0334AE96889 -:10B3F000914206D0EB58002B03D00422E3681A6078 -:10B400005AE0A86B002820D0062163680430DB00D6 -:10B4100019430022F9F744FB031E16D0227C002AB0 -:10B4200002D0002021680BE02068002807D0234AC2 -:10B43000E968914203D0224A954200D00069291C54 -:10B440005A68E368FCF7D6FD36E02368002B03D189 -:10B450006E6B002E14D12FE0227C002AF8D1174AFF -:10B46000E9689142F4D0164A9542F1D018696168B2 -:10B47000E268FCF701FEE3681B68002BE8D01BE0E4 -:10B4800075680836002D17D000276B1E0C4A9F42A6 -:10B490000CD2BB00F158914206D0201CFFF7A0FF50 -:10B4A000E3681B68002B07D10137EEE7054BED1869 -:10B4B000AD00AD59954296D1F8BDC04675B70000B4 -:10B4C00078FF0200FFFFFF3FF0B5146889B0002C41 -:10B4D0001FD143685E6B002E1BD0171C736803AD31 -:10B4E00001938368083603936960AC60EA602C744A -:10B4F000019B9C4209D0A300F158281CFFF770FF64 -:10B500003B68002B05D10134F2E7281C0249FFF704 -:10B5100067FF09B0F0BDC04678FF020008B50B1CFC -:10B5200002495A681BF045FB08BDC0467C870300F2 -:10B5300070B50E1C00218AB0041C151C05A814222D -:10B54000009101911FF075FE202307936B4605942F -:10B5500008931C23002D02D0042D07D11A23216843 -:10B5600005A80693FFF73CFF022106E01B23216894 -:10B5700005A80693FFF734FF03210098042805D19E -:10B580002069311C2A1CF6F711FD0DE000280BD0B4 -:10B5900002AB0022029403960495FCF7EFFC031C17 -:10B5A0000248042D00D1181C0AB070BD74E00200DE -:10B5B000F0B5204B82008BB0D25805AE00237260EC -:10B5C0001422019003AF05910D1C301C09680393F0 -:10B5D0007B60B260F7603374FFF702FF039C042CBA -:10B5E00005D101982969FCF75FFC041C1EE0002CC2 -:10B5F0000DD0201C291C19F0C5F9019B041C022B3D -:10B6000014D1F6F773FB0124400004430EE0019BC4 -:10B61000022B0BD12433301C29687360FFF7E0FE46 -:10B620003B68002B02D101246D002C43201C0BB081 -:10B63000F0BDC046F0EC0200F0B5161C724272413B -:10B6400089B00C1C1F3200230492082201A903AD0B -:10B650000691071C2168281C019302932B74039404 -:10B660000592FFF7BDFE019B002B08D1002E06D1ED -:10B670001F33281C21686B60AE60FFF7B1FE019894 -:10B68000042819D12069F6F71BFA164BC2689A42B2 -:10B690000ED1002E07D02368586817F0F0F9011C6E -:10B6A000381C1BF0BAF98022381C324321690BE0A8 -:10B6B000381C2169321C07E0002808D0211C19F031 -:10B6C00061F90022011C381CF6F714FA08E0201C6E -:10B6D00017F081FE0449021C231C381C1BF069FA78 -:10B6E00009B0F0BD711201008987030038B5041C50 -:10B6F0000D1C0B491BF091F96968201C0022F6F71C -:10B70000F9F9201C07491BF088F9A968201C0022C0 -:10B71000F6F7F0F9201C04491BF07FF938BDC0464C -:10B720009B8703008B400300C1830300F7B500250E -:10B73000436808300F1C061C2C1C0193019B9D4282 -:10B7400012D0AB00F358094A93420BD0084AD9688B -:10B75000914202D03B60013404E0586B391CFFF782 -:10B76000E5FF24180135E9E7201CFEBD78FF020043 -:10B7700075B70000F0B58FB0051C0F1C406B05A914 -:10B7800001920293FFF7D2FF061DB600301C17F09E -:10B790005FFF041C002120C018F08AF9321C201C15 -:10B7A000103A103000211FF044FD012F05D1029BFB -:10B7B0001B680393042B00D183E00922002309A80E -:10B7C000426007AE0332291C8260C660037407938F -:10B7D00073600993FFF704FE0798042807D10598C2 -:10B7E000391CC668019A029BB047206123E00028FB -:10B7F00021D0019A3A4306D1012106AB0695FCF708 -:10B80000BDFB041C17E0019B5C003C190134A40043 -:10B81000201C17F01DFF221F0390029920C01FF06B -:10B82000EBFC791C3068019A039BFCF7A7FB041C16 -:10B83000039817F034FF201CF6F742F9A84240D1D4 -:10B840000023082209A8291C089307930B93099445 -:10B850000A92FFF7C5FD079B002B32D001993943AF -:10B8600005D1081C07AA19F095F8061C1CE0019BDD -:10B870005E00BE190236B600301C17F0E9FE321C1D -:10B88000051C079B083A03600393089B02994360D9 -:10B8900008301FF0B1FC381C01992A1C19F07AF805 -:10B8A000061C281C17F0FBFE074B9E4209D0301CDB -:10B8B00017F091FD0549021C054805F065FDF4F7F8 -:10B8C000AAFC201C0FB0F0BD74E00200A4870300A6 -:10B8D00000FD020038B5C568041C002D06D10449DE -:10B8E0006268044805F050FDF4F795FCA84738BDA0 -:10B8F000CC87030000FD0200F8B5041C0F1C161CC9 -:10B900001D1C19F00FFE002809D1201C17F063FD43 -:10B910000949021C094805F037FDF4F77CFC0428AE -:10B9200001D1206902E0211CF8F7B2F9391C321C60 -:10B930002B1CFCF723FBF8BDF681030000FD020081 -:10B94000F0B5154B89B0161C8200D5580C1C0C2282 -:10B950000021071C68461FF06CFC182303A84560F3 -:10B96000836000256B462168C36005740394FFF76C -:10B9700037FD0098042805D1381C2169321CFCF7DA -:10B9800085FC07E0002805D00120291C6A460296A4 -:10B9900019F000F809B0F0BDA8EB0200F0B585B0D1 -:10B9A000071C0D1C081C161C01A902AA19F0E4FAB8 -:10B9B0000023019902988B420CD09A008258D468D7 -:10B9C000002C05D123495268234805F0DDFC26E010 -:10B9D0000133F0E73C2017F04DFE204B041C0360C0 -:10B9E0001F4B476083601F4B4563C3601E4B8663DC -:10B9F00003611E4B03A943611D4B83611D4BC36152 -:10BA00001D4B03621D4B43621D4BC362281CFFF795 -:10BA10008DFE012805D910481A491CF070FAF4F778 -:10BA2000FAFBA36B4E21181D0022F9F739F8051E09 -:10BA30000DD0032243681A4009D11B685B68F22BC2 -:10BA400005D1031D0121104819F0C7FD6860201CB5 -:10BA500005B0F0BDE987030000FD02006CEB0200B9 -:10BA600039B6000075B70000F9B80000B1B50000A4 -:10BA700041B900004F55020031B500009F56020049 -:10BA80005B56020012880300A8EC020037B51C1CAC -:10BA900000230D1C0093081C0333111C0122F4F732 -:10BAA000A3FD012D09D0032D0BD1206800F0DEF994 -:10BAB0006168A268FFF772FF09E02068F6F700F8F6 -:10BAC00005E0034903481CF01AFAF4F7A4FB3EBD55 -:10BAD0004088030000FD020038B5051C0C200C1C3A -:10BAE00017F0B6FD024B45600360846038BDC04668 -:10BAF00030EC0200F8B50F1CB8421ED003240440FD -:10BB00001DD1134B02689A421BD1466B002E1AD0EE -:10BB100075680836002D18D06B1E9C4208D2A30011 -:10BB2000F058391CFFF7E6FF00280FD10134F3E786 -:10BB3000084BED18AD00A859DEE7012006E0002013 -:10BB400004E0201C02E0301C00E0281CF8BDC046C8 -:10BB50006CEB0200FFFFFF3FF0B585B0051C0191C3 -:10BB6000081C8B0710D10B68154A934204D101239E -:10BB7000029301AB03930DE0124A934204D102A950 -:10BB800003AA19F0F9F905E00F4910481CF0B7F9BC -:10BB9000F4F741FB0024029E039FB4420BD0A300A4 -:10BBA000F9580B4B994208D0281CFFF7A3FF002837 -:10BBB00003D10134F1E7074800E0074805B0F0BDC4 -:10BBC0006CEB0200BCDC02005C88030000FD02009C -:10BBD00078FF020078CD020034CD020008B583075B -:10BBE00003D1064B02689A4205D0054905481CF06E -:10BBF00086F9F4F710FBFFF7AFFF08BD6CEB02000E -:10BC00009588030000FD0200F7B5CC1CA400071CBA -:10BC1000201C0E1C019217F01BFD221C051C054B5D -:10BC20004760866003600C3A01990C301FF0E4FA1B -:10BC3000281CFEBD18ED0200032210B502400121B0 -:10BC4000002A04D10A4C03688C46A3420ED00B1C78 -:10BC500003409C4608D1002A08D1036805481B1AF6 -:10BC60005A425A41944601E001239C46604610BD69 -:10BC70003CCD020030D3020010B5041CFFF7DCFFFE -:10BC80000123002809D10322031C2240022A04D1E7 -:10BC9000034B2340063B581E83410120184010BD32 -:10BCA000070080FF08B517F096FB0349021C034804 -:10BCB00005F06AFBF4F7AFFAB888030000FD020054 -:10BCC00010B5041C102017F0C3FC044B8460036003 -:10BCD000034B43600023C36010BDC0463CE202003A -:10BCE000A35A0200F7B50E1C0193041C8B180A1C02 -:10BCF00000210093009B9A420ED21378272B04D088 -:10BD0000223B58424341DBB201E0002301210132D2 -:10BD1000002BEFD0272503E02725002900D0053D83 -:10BD20001F4F201C391C2A1C1AF043FF009B9E4207 -:10BD30002FD23278AA4203D1201C1A492A1C24E0AF -:10BD40005C2A02D1201C18491AE01F2A0AD97F2A2E -:10BD500019D0019B002B02D053B2002B0CDB201C0E -:10BD6000391C12E00A2A02D1201C104908E00D2AD1 -:10BD700002D1201C0E4903E0092A04D1201C0D49E0 -:10BD80001AF04BFE03E0201C0B491AF012FF01369B -:10BD9000CCE7391C2A1C201C1AF00BFFF7BDC0464B -:10BDA000934103009241030096410300994103002F -:10BDB0009C4103009F410300A2410300194B70B551 -:10BDC000061C0D1C98420ED188684968F4F796FA53 -:10BDD000041E08D0281C16F0CCFE00230620E40028 -:10BDE0002B6020431DE0102017F032FC6968041C12 -:10BDF00081600660A868F4F763FA6B686060591C9C -:10BE00002B68994202D1AB68E36003E0A86817F0A1 -:10BE100035FCE0600023201CE268A1685354AB604D -:10BE20002B6070BD80CA020038B5051C0C1C002AAE -:10BE300002D0F4F799FA03E0F4F760FA002803D08F -:10BE40000623C000184304E00248291C221C19F0F4 -:10BE5000F0FC38BD80CA020008B5031C0A1C024869 -:10BE6000191C19F0E6FC08BD48EF020008B50B4BA1 -:10BE70000340062B01D1C0080EE0031C820708D145 -:10BE8000074A0168914204D19968C068F4F76CFAD6 -:10BE900002E0181CFFF706FF08BDC046070080FF40 -:10BEA00080CA020008B5064B0340062B03D1C00828 -:10BEB00016F0EAFD02E08368C0680B6008BDC0466A -:10BEC000070080FFF0B5002689B0051C0F1C081C78 -:10BED0001C1C111C0096321C0323F4F785FB0E205A -:10BEE000B74237D0012F0ED104A802AA1021F4F7CF -:10BEF00005FB02A82168321CF5F7FCFD281C04A9EB -:10BF0000FFF75CFF26E0206804A983071AD1124BD3 -:10BF100002689A4216D1FFF7C5FF104B061C206835 -:10BF20000340062B04D1C00816F09FFD041C00E05E -:10BF300044681020049F17F08BFB05608760C66083 -:10BF4000446007E00122F6F765F80498059900229D -:10BF5000FFF76AFF09B0F0BD48EF0200070080FF5D -:10BF6000F0B58BB0049008680D1C06920793F5F7A6 -:10BF7000A7FD041C6868F5F7A3FD061EA64202D0C3 -:10BF80006868FFF78FFE08A92868FFF78BFF041C7D -:10BF900009A96868FFF786FF089A0590A31803931C -:10BFA000049B271C022B19D9AB681F498B4206D072 -:10BFB0000121301C0091211CF5F7ACFC071C049BEF -:10BFC000032B0BD0EB68184A934207D00122301C98 -:10BFD0000092211C089AF5F79DFC0390039B381CE6 -:10BFE000D91B069B059A0093099B19F003FC011EBF -:10BFF0000AD10120079B4042002B12D00B490C486C -:10C000001BF07DFFF4F707F90A4B9E4205D1201C77 -:10C0100017F007FF0121400002E0001B4100012052 -:10C0200008430BB0F0BDC04674E00200E488030092 -:10C0300010F8020080CA0200F0B58DB0041C039114 -:10C04000F5F73EFD04A9061C201CFFF72BFF01900D -:10C05000039883070BD10368314A934204D105A9A1 -:10C0600006AA18F089FF10E02E4A934208D02D4806 -:10C070000121C36800220293029C03ABA0470390F6 -:10C08000039805A906AA16F052FF0024251C059B5B -:10C090009C421ED2069BA700D859F5F711FDB0426D -:10C0A00005D0214921481BF02AFFF4F7B4F8002CF1 -:10C0B00001D0049BED18069BD8591D4B0340062B5D -:10C0C00003D1C00816F0D6FC00E080682D180134BA -:10C0D000DDE7291C002508A816F038FD0A9C059B01 -:10C0E0009D4217D2002D06D0201C0199049A1FF002 -:10C0F00083F8049BE418069AAB00985807A9FFF749 -:10C10000D1FE079A011C201C1FF076F8079B013511 -:10C11000E418E4E7301C08A9FFF750FE0DB0F0BDAD -:10C12000BCDC02009CC60200F888030000FD02008F -:10C13000070080FFF0B5071C87B008680D1CF5F7F5 -:10C14000BFFC04A9061C2868FFF7ACFE05A9041C67 -:10C150006868FFF7A7FE0390201C022F07D9012370 -:10C16000301C0093211C049AAB68F5F7D3FB059AA9 -:10C17000041B0499A418064B8C4206D803991FF09F -:10C180002CF8044B002800D0014B181C07B0F0BD60 -:10C1900078CD020034CD020073B50D1C061C086872 -:10C1A0006946FFF77FFE01A9041C6868FFF77AFE65 -:10C1B000011C022E02D90848FCF788FD019A009B59 -:10C1C00006489A4207D8981A20181FF006F8031E4E -:10C1D000034800D0014876BD3D89030078CD0200B8 -:10C1E00034CD0200F0B58FB0079010680C1C171CFE -:10C1F000F5F766FC0690012C10D07868F5F760FC26 -:10C20000069B984202D07868FFF74CFD78680DA92C -:10C21000FFF748FE0D9B0890099303E0072309935D -:10C220002C4B089338680DA9FFF73CFE0D9B0B9033 -:10C230000493079B012B05D1049B5D1E01235B42E8 -:10C240000A9302E0012300250A930024261C049B84 -:10C2500003940593059B002B22D00B9B08985A1939 -:10C2600001230999009319F0C5FA002812D1039B04 -:10C27000002B0ED1079B002B03D1049B2E1C5D1EAF -:10C2800019E0079B012B15D001232C1C2E1C0393B6 -:10C2900000E02C1C0A9BED18059B013B0593D9E798 -:10C2A000039B002B08D10C4B069A0E209A420FD00C -:10C2B0000A480DE0039E2C1C049B0134A21B9A42E9 -:10C2C00001D1386804E00B9B0698991919F0B1FA6E -:10C2D0000FB0F0BD0B8D030080CA020054ED0200C8 -:10C2E000F0B589B0049008680D1CF5F7E9FB041C53 -:10C2F0006868F5F7E5FB071EA74202D06868FFF7FC -:10C30000D1FC06A92868FFF7CDFD061C07A96868BF -:10C31000FFF7C8FD069A0590B3180393049B341CDD -:10C32000022B19D9AB681F498B4206D00121381C5A -:10C330000091311CF5F7EEFA041C049B032B0BD083 -:10C34000EB68184A934207D00122381C0092311C36 -:10C35000069AF5F7DFFA0390079B0025002B10D112 -:10C36000039B201C191B17F06BFD013040000125B9 -:10C3700014E0201C05991EF030FF002807D101357C -:10C38000341C079A039BA6189E42F2D904E0201C95 -:10C3900017F040FD061CF3E701206D00284309B0AB -:10C3A000F0BDC04674E00200F0B58BB00E1C071C57 -:10C3B0000392F5F785FB041C301CF5F781FB8442E2 -:10C3C00002D0301CFFF76EFC05A9381CFFF76AFD90 -:10C3D00006A9051C301CFFF765FD069B021C002BFF -:10C3E00005D11A491A481BF08AFDF3F714FF1949C1 -:10C3F0008C4201D10E2100E0174907910891099163 -:10C400000399002901DD079700E009970399281C8B -:10C410000091059919F0EEF9002811D0471B3A1C3C -:10C42000291C201C19F005FA069A059BB918DF1B78 -:10C4300007906918BA1A201C089619F0FAF90990A1 -:10C4400007A90320FDF73EFC0BB0F0BD4F890300A8 -:10C4500010F8020080CA020054ED020008B5011C69 -:10C46000014819F0FDFA08BD613E020008B5011C43 -:10C47000014819F0F5FA08BD753E0200F7B5061C33 -:10C48000081C01A9FFF70EFD019B051C002B01D123 -:10C49000144826E0144B041C9E4201D1002712E0F0 -:10C4A000124B9E42FAD0019A631B934218D2207815 -:10C4B000B04701340028F6D1EAE72078F9F7AEFB5F -:10C4C000002805D10134019A631B9342F5D305E09E -:10C4D0002078B0470028DBD00127F3E7002FD7D022 -:10C4E0000348FEBD78CD0200855C00009D5C000025 -:10C4F00034CD020008B5011C0148FFF7BFFF08BD9D -:10C50000055C000008B5011C0148FFF7B7FF08BD36 -:10C510001D5C000008B5011C0148FFF7AFFF08BD16 -:10C52000355C000008B5011C0148FFF7A7FF08BDF6 -:10C53000855C000008B5011C0148FFF79FFF08BD9E -:10C540009D5C0000F0B585B0041C0D1C171CF5F7B0 -:10C55000B7FA6946061C201CFFF7A4FC041C042F34 -:10C5600022D1AB0715D1124B2A689A4211D10098FB -:10C57000291C01AAFEF770FE002802D10D48FCF725 -:10C58000A5FB019B029AE118D21A301C19F051F94F -:10C590000BE00023301C00992A1CF5F753FC012303 -:10C5A000205C4000184300E0002005B0F0BDC0460C -:10C5B00000E202009B40030070B58AB000296BD0F6 -:10C5C00018681C1C031C364D2B40062B05D0830716 -:10C5D0001ED1344B02689A421AD10239012955D82A -:10C5E00006A9FFF75FFC061C20680540062D04D154 -:10C5F000C00816F03AFA041C00E044681020069DBA -:10C6000017F026F8284B85600360C660446044E05C -:10C6100001293BD8012210420CD04410211C06A84D -:10C6200016F094FA089B0021181C221C01931EF09E -:10C6300000FE26E003A916F0E4FE002805D00399C9 -:10C64000049A194819F0F5F827E02068F5F73EFC40 -:10C65000002802D106A8102101E0411006A816F01A -:10C660005EFA2068FBF784FD041C201CFBF7CEFD5E -:10C67000002806D0F5F70EFBC1B206A816F0DCFACA -:10C68000F3E706A90848FFF799FB06E007490848C1 -:10C690001BF035FCF3F7BFFD06480AB070BDC0467D -:10C6A000070080FF80CA020048EF02005F89030094 -:10C6B00000FD020054ED020073B5041C081C01A922 -:10C6C000161CFFF7EFFB051C201C042E05D10849A2 -:10C6D000019A2B1C1AF06DFA08E006491AF09DF930 -:10C6E000201C291C019A0123FFF7FCFA73BDC046E8 -:10C6F0008D410300EB260300F7B5021C1A4B051C05 -:10C700000C1C1A401E1C062A08D10B40401A062B8E -:10C7100026D0E80816F0A9F9071C00E04768264073 -:10C72000062E03D1E00816F0A0F900E06068002FA3 -:10C7300005D0002803D0874201D0002013E0281C38 -:10C740006946FFF7AFFB01A9051C201CFFF7AAFBF8 -:10C75000009A019B011C9A42EFD1281C1EF03DFD5E -:10C7600044426041C0B2FEBD070080FF084B07B5E0 -:10C770000340062B08D0830704D103689A69054B50 -:10C780009A4201D0FFF78EFA01A9FFF78BFB0EBD8D -:10C79000070080FF79CD00000A4B13B503400C1C45 -:10C7A000062B08D0830704D103689A69064B9A4286 -:10C7B00001D0FFF777FA01A9FFF774FB019B236013 -:10C7C00016BDC046070080FF79CD0000F0B59BB0D4 -:10C7D0000B900C1C079212A810210EAA0993F3F7D4 -:10C7E0008DFE079B9C4200D3ACE221787D2909D1C4 -:10C7F000079B671C9F4202D261787D2910D0BE48FA -:10C80000BE493EE07B2904D012A816F015FA271C79 -:10C8100087E2079B671C9F4254D261787B2903D132 -:10C8200012A816F009FA7CE27D2916D0212914D02D -:10C830003D1C3A2911D02B787D2B08D0212B06D016 -:10C840003A2B04D0079B01359D42F4D140E0079B71 -:10C850009D423DD23C1C2F1C01E000252C1C3B7846 -:10C86000212B12D1079A7B1C9A4208D97E78331C5F -:10C87000723B012B03D8BB1C934208D328E09E488F -:10C880009F491BF03CFBF3F7C6FC3B1C00261A78C3 -:10C8900000273A2A00D048E25F1C5B787D2B14D039 -:10C8A0003B1C393A07998B4212D219787B2901D166 -:10C8B000013205E07D2903D1013A002A00D134E29A -:10C8C0000133EFE70026351C341C079B9F4202D33F -:10C8D00089488C49D5E7002305933B787D2B02D00E -:10C8E00085488949CDE7002C47D00023207816934E -:10C8F000F9F7A0F9211C002822D0099B1B6804939A -:10C90000002B02DD7C488149BBE716AA201C291CAC -:10C9100018F058FF209A169B013A0690934237D29E -:10C92000219A01339B009B58099A049301235B428F -:10C9300013601CE00B782E2B04D05B2B02D001314E -:10C94000A942F7D30691201C091B0122FFF76CFABC -:10C95000041C00222298211CF8F7A2F8002804D118 -:10C96000211C6B481BF0C4FA8DE743680493069BB7 -:10C97000AB4217D26748FCF7A9F9099B1B68002B4B -:10C9800002DA5D4864497CE7209A013A934202D377 -:10C990006248634975E7013321999A00525804921D -:10C9A000099A1360059B002B03D1002E00D1BAE138 -:10C9B00001E0002E12D016A8102110AAF3F79EFD58 -:10C9C000321C733A531E9A4110A8D2B20499F5F75B -:10C9D00091F8544816A9FFF7F1F9049001235B423E -:10C9E0000D931093059B002B00D1A3E0F6F740FFB9 -:10C9F000209B16A80093219B05990193229B3A1C2A -:10CA00000293099BFFF7E2FE16A816F002F9179BA6 -:10CA10000678C3180A930023041C05939E4216D07F -:10CA2000414D311C281C1EF0F1FC002800D07FE194 -:10CA300063780593002B09D0281C191C1EF0E6FC16 -:10CA4000002800D078E10590061C00E0059E2378C0 -:10CA500008932B2B05D02D2B05D00425202B05D199 -:10CA600002E0022500E00025013401E000250895E0 -:10CA70002378232B02D1133B1D4301342378302B21 -:10CA800007D1059B002B01D13D330593002E00D12A -:10CA90003036201C0A990DAA18F094FE03780690EF -:10CAA0002C2B04D10C3B1D43031C01330693069B26 -:10CAB0001B782E2B06D106980A99013010AA18F07F -:10CAC00081FE0690069B1C78002C07D01748211C7D -:10CAD0001EF09CFC002800D030E1041C069B1B7853 -:10CAE000002B02D004481249CBE616A816F041F8F4 -:10CAF000059B002B2BD121E010F80200798903005F -:10CB0000A1890300BA890300D2890300F6890300D2 -:10CB1000F0FD0200598A0300768A03006CF90200D6 -:10CB2000408A030080CA0200C08A0300C58A03004D -:10CB3000D58A0300059D2C1C2E1C08950498FFF730 -:10CB40009BF83E230593002801D1023B0593002E5C -:10CB500000D12036089B002B09D0732C02D17E48CF -:10CB60007E498EE6632C02D17B487D4989E6059B90 -:10CB70003D2B05D05E2B05D03C2B05D13B3B02E085 -:10CB8000402300E080231D430498FFF755F8002858 -:10CB90005FD0632C23D016D8472C06D8452C58D20A -:10CBA000002C27D0252C54D04CE0582C3CD0622CA3 -:10CBB00048D10D9B009502930023019603930EA884 -:10CBC000049902222EE0672C02D8652C12D340E093 -:10CBD0006F2C19D0782C27D06E2C33D10AE0049812 -:10CBE000F5F758F80D9B16A90870012200960193DD -:10CBF0000EA889E00D9B00950293002301960393F4 -:10CC00000EA804990A220DE0EB0602D580239B00B2 -:10CC10001D430D9B08220293002304990095019661 -:10CC200003930EA861330AE00D9A231C029200229E -:10CC300004990392173B009501960EA8103201F05B -:10CC400057FC6EE0049816F0C6FB4649031C4248A8 -:10CC500063E00498FFF710F8002838D0002C1FD0AC -:10CC60006E2C1DD0472C15D8452C1AD2252C27D137 -:10CC70000498F5F773F83C490DF00CFD80230D9AEC -:10CC80005B000192109A011C02922B4300960EA8A1 -:10CC9000662212E0231C653BDBB2022B10D800E0B9 -:10CCA00067240498F5F75AF80D9B221C0193109BFA -:10CCB000011C02932B1C00960EA819F02BFF30E0EC -:10CCC000049816F088FB2949031C234825E0059B9E -:10CCD0003D2B02D120482649D3E50498002C01D0F1 -:10CCE000732C15D116A9FFF757FD109B011C169A3E -:10CCF000002B00DA1092109B9A4200D916930D9BDC -:10CD0000169A009601930EA82B1C01F093FB08E0E5 -:10CD100016F061FB1749031C0F48221C04F034FB7A -:10CD2000B1E57C1C5DE5732645E605971F1CD4E53F -:10CD30000596013400268AE6023488E6069B013314 -:10CD40000693CBE60B9A12AB13CB13C21B6813608E -:10CD50000B981BB0F0BDC04610F80200EE8A03002D -:10CD60001A8B03004D8B03000000C8427E8B03002A -:10CD7000B28B0300E78B0300F0B5A1B0041C0D1CBF -:10CD80000D920A2800D0E6E1073C0692144010D12B -:10CD90001368B94A934206D1069810A90FAA18F051 -:10CDA000EBF806940BE0B54A934202D10F9410942D -:10CDB00005E00DAB0F930123109300230693109B06 -:10CDC000281C08930F9B11A90A93FFF76BF8002307 -:10CDD0000B900C93AB0705D1A94A2B689B1A5A42BA -:10CDE0005A410C9214AA18A81021F3F787FB119A44 -:10CDF000002794460B9B0B9C63440593059B9C4228 -:10CE000000D39BE12178252903D018A815F014FF41 -:10CE100092E1059B661C9E4202D39A489A4916E00D -:10CE20006178252904D118A815F006FF341C83E188 -:10CE30000025282919D1A01C061C00E001363378F2 -:10CE4000292B08D0059B9E42F8D38E488F491BF0B2 -:10CE500056F8F3F7E0F9311A0122FEF7E5FF011C5D -:10CE60000698F7F723F9051C01360023341C002629 -:10CE7000099320330793059B9C4211D223782D2BD5 -:10CE800001D12C3B06E02B2B01D1293B02E0202BCA -:10CE900002D11C3B1E430FE0232B0BD0302B05D0BF -:10CEA00000231293059B9C4208D320E04022079365 -:10CEB000164301E0102309930134DCE723782A2B81 -:10CEC0000FD1089A3B1E934202D371487149BEE7C5 -:10CED0000A9A9B009858F4F7DDFE0137129001344E -:10CEE00005E0201C059912AA18F06CFC041C012313 -:10CEF0005B421393059B9C428FD223782E2B1ED12D -:10CF0000059B601C984288D263782A2B0CD1089A22 -:10CF10003B1E9342D9D20A9A9B009858F4F7BAFE66 -:10CF200001371390023406E00023059913AA1393E6 -:10CF300018F048FC041C059B9C4200D36DE7002DB3 -:10CF400007D1089A3B1E9342BFD20A9A9B009D5874 -:10CF500001372378672B0FD8652B6AD2582B00D165 -:10CF6000D1E004D81A1C453A022A62D9DBE0632BCF -:10CF700012D0642B42D0D6E0732B07D8722B00D38B -:10CF800092E0692B3AD06F2B63D0CCE0752B35D073 -:10CF9000782B00D1B7E0C6E03F4B2B40062B05D0E5 -:10CFA000AB0714D13D4B2A689A4210D11CA9281C0A -:10CFB000FFF7F2FB1C9A011C012A02D034483849C1 -:10CFC00045E720230093129B14A801930FE0281C2F -:10CFD000FEF732FE00280ED0281CF4F75BFE20235B -:10CFE00001221CA908700093129B14A80193331C02 -:10CFF00001F020FAA0E026482A4928E703222B1C4A -:10D00000291C1340022B0AD1234B2B40062B06D0A0 -:10D01000FF23DB05E8189043F7F736FF011C079B59 -:10D0200000960193129B14A80293139B0A22039368 -:10D030001FE0281CF4F792FE079B22780093129BB6 -:10D04000011C0193139B14A80293331C19F062FD79 -:10D0500072E0099B002B02D084239B001E43291CF5 -:10D060000822079B00960193129B14A80293139B1E -:10D070000393612354E0C046BCDC020064CE02008E -:10D0800048EF020010F80200198C03002B8C0300FB -:10D0900000FD0200418C0300070080FF80CA0200EF -:10D0A000688C0300818C030016AA1CA81021F3F7DA -:10D0B00025FA23780122722B0BD000220C9B93427D -:10D0C00007D0AB0705D12B68644A9A1A51425141E7 -:10D0D0008A0016A8291CF4F70DFD139A1D9B002A3F -:10D0E00000DA1393139A9A4200D91A1C2023009352 -:10D0F000129B14A801931E99331C01F09BF91CA8E4 -:10D1000015F037FD18E0099A291C1643079A173BBA -:10D110000192129A00960292139A14A80392102276 -:10D1200001F0E6F908E00B9A4D49A41A00941A1C84 -:10D130004C4804F029F98CE601345FE6089B9F42D5 -:10D1400002D04948494982E60C9B4448002B00D153 -:10D15000474818A96EE0081CF4F7B2FC16A9061C93 -:10D16000281CFEF79FFE071C0D98072C1DD118A93F -:10D17000F4F7CEFD0025A8426DD01899A94205DC30 -:10D180003B4B0E359E4266D03A4D64E0169B1CA880 -:10D19000594315F0DBFC1E9B381C059300930121BD -:10D1A000169A189B18F03AF942E0F4F789FC864287 -:10D1B00006D10D981CA9FEF775FE1C9D05900DE08B -:10D1C000264B00259E4246D10D981CA9012216F03F -:10D1D00018F9A8423FD01C9B1D9D05931D2C06D815 -:10D1E000192C2BD2052C0DD0122C0BD032E01F2C79 -:10D1F00030D10123381C00931699059A2B1C18F086 -:10D20000F9FA22E0169B1CA8E91815F09FFC1E9B5A -:10D21000391C181C169A06931DF0EEFF169A1E9BD9 -:10D22000944606936344181C05992A1C1DF0E4FFDC -:10D23000301C1CA9FEF7C2FD051C0CE00095201C4B -:10D24000391C169A059B18F01DF90B4D002802D1C8 -:10D250000A4D00E00025281C21B0F0BD48EF020077 -:10D26000928C030010F8020000FD0200C78C03003E -:10D2700080CA020054ED020034CD020078CD0200D5 -:10D2800070B58AB0061C0C1C086804A9151CFEF7B2 -:10D2900009FE00230593049B011CC218009606A8F2 -:10D2A00005AB01940295FFF791FA06A90248FEF733 -:10D2B00085FD0AB070BDC04680CA0200F0B5071CEB -:10D2C00087B008680D1CF4F7FBFB0190012F07D90C -:10D2D0006C68022F05D0A868F4F7DCFC071C02E09C -:10D2E000444C01277F420020011C15F008FE04A9D0 -:10D2F00000902868FEF7D6FD049B051CC6183D4B20 -:10D300009C4238D1B54229D22878F8F77BFC002816 -:10D3100024D00135F6E7002F23D02C1C2078F8F715 -:10D3200071FC002802D10134B442F7D1291C621BE0 -:10D33000019818F07EFA011C0098F3F79BFCB442A8 -:10D3400055D2251C2878F8F75DFC002802D001355D -:10D35000B542F7D1FB17DB1BDB0FFF1AB542DAD35F -:10D3600045E0291C721B019818F063FA011C009813 -:10D37000F3F780FC3BE0201CF4F7A2FB019A02903B -:10D38000031C201C934201D0FEF78CFC05A9FFF77B -:10D3900003FA059B0390002B25D1174917481AF073 -:10D3A000AEFDF2F738FF019BE3189E4209D3201C23 -:10D3B0000399019A1DF011FF002803D00134002FBA -:10D3C000F1D1341C291C621B029818F032FA011C9E -:10D3D0000098F3F74FFCB44209D2059BE518FB1700 -:10D3E000DB1BDB0FFF1A059B2C1C0193E7E7009862 -:10D3F00007B0F0BD74E002004F89030010F802008E -:10D40000F0B50C1C8BB0022802D8FFF757FF7EE066 -:10D410000868F4F755FB08A9049020686668FEF7D1 -:10D4200041FD0090A068F4F735FC431C051C002169 -:10D43000181C059315F063FD364B041C9E4202D167 -:10D440003548FBF743FC301C09A9FFF7A5F9099BF8 -:10D450000690002B05D1314931481AF050FDF2F702 -:10D46000DAFE089A2F1C9446009B63440293AB009B -:10D470000393099B0193019A029B9E1A002D0BD0E6 -:10D48000009B9E4208D3301C0699019A1DF0A5FE10 -:10D49000002822D0013EF1E7E368BD005E19009A42 -:10D4A000029B04989A1A009918F0C3F93060002F73 -:10D4B00011D0059BDF1BE368BE005919181C321CF4 -:10D4C0001DF0A3FE63680021DA1BE368920098193F -:10D4D0001DF0AFFEA760201C19E0039AE368944694 -:10D4E00063440793019B0498F118029B013F9A1B28 -:10D4F000019BD21A18F09DF9079B02961860EB1752 -:10D500005B1BDB0FED1A039B043B0393B1E70BB0EE -:10D51000F0BDC04674E00200FC8C03004F8903009C -:10D5200010F8020008B50368186B00280ED0CB076E -:10D5300002D50368002B09D08B0702D54368002B66 -:10D5400004D04B0708D58368002B05D10349044854 -:10D550001AF0D5FCF2F75FFE08BDC046128D03003D -:10D56000C0F90200F0B5012189B00190FFF7DAFFA0 -:10D570008021061C490004A815F0D1FA802400235C -:10D58000069D6400009303AB0198291C221C376898 -:10D59000B847431C0ED103990B2904D1009B1848AE -:10D5A000002B21D12AE001234900194315481AF024 -:10D5B0009FFC14E0002817D0009B1B180093A0428A -:10D5C00002D2241A2D18DEE7802104A8490015F0A4 -:10D5D000F5FA051E05D10B480B4903F0D5FEF2F70D -:10D5E0001AFE80246400CEE7009B08480593337B35 -:10D5F000DB0700D4064804A9FEF7E0FB09B0F0BD44 -:10D6000074E00200C0F90200318D030080CA0200FC -:10D6100048EF0200F0B589B00091041C08680121B0 -:10D62000FFF780FF071C012C04D1009B1868FFF74F -:10D6300099FF98E0009B5868F4F72CFB051C431CED -:10D64000F3D001243B7B23426DD0041C291C04A889 -:10D6500015F065FA00230193002C62D0211C04A868 -:10D6600015F0C5FA011E04D14049414803F08CFE73 -:10D670001FE0009B3E681868221C03ABB047031CE8 -:10D68000061C013317D1211C04A815F01DFB0399BA -:10D690000B2908D1059B0093002B42D104A815F05B -:10D6A00068FA34485FE001234900194332481AF010 -:10D6B0001FFCF2F7B0FDA04202D30699059C14E0CE -:10D6C000211A04A815F000FB002EF6D129E0101C49 -:10D6D0001E3398431D3BC0280ED1019A9B18A342CC -:10D6E0001BD8013DA34216D20193019BCA5C0123C2 -:10D6F00050B20028F1DAEAE7101C0D3398430C3BD6 -:10D70000E028EAD004339A43131CF03B5A425A41B2 -:10D7100005239B1AE1E72C1C9DE7013B5B191C1BB1 -:10D720009AE716481CE0291C04A815F00FFA009B84 -:10D730002A1C1868069903AB3D68A847431C09D109 -:10D7400004A815F016FA03990A480B290BD04900D2 -:10D750002143ABE73B7B05900848234200D10848B2 -:10D7600004A9FEF72BFB09B0F0BDC0463F8D0300B6 -:10D7700090F8020074E00200C0F9020080CA0200C2 -:10D7800048EF02007FB50C1C061C08680121FFF75A -:10D79000C9FE0222051C01A96068F4F73BFC029A4D -:10D7A000022E07D9A068F4F775FA029B021E9A426E -:10D7B00000D91A1C6B462D6820680199A847431CA4 -:10D7C0000BD1009907480B290AD0012349001943BE -:10D7D00005481AF08DFBF2F71EFD012340001843A7 -:10D7E00004B070BD74E00200C0F90200F0B589B069 -:10D7F0000191041C08680121FFF794FE061C04A88F -:10D80000012C08D9019B5B685C10631C03D0211CB0 -:10D8100015F085F913E00124102115F080F9644218 -:10D820000DE0019B391C1868012203AB3568A8473D -:10D83000431C11D0002823D03B780A2B2AD0631C2C -:10D8400023D104A8012115F0D2F9071EE9D1164908 -:10D85000164803F099FD11E003990B2908D1059BA7 -:10D860000193012B0CD104A815F083F9104819E09D -:10D870000123490019430F481AF03AFBF2F7CBFC99 -:10D8800004A8012115F020FA04E0631E002C01D049 -:10D890001C1CD6E7337B0848DB0700D4074804A9E3 -:10D8A000FEF78CFA09B0F0BD3F8D030090F802003E -:10D8B00074E00200C0F9020080CA020048EF0200D2 -:10D8C000F7B50F1C0221041C161CFFF72BFE01AB41 -:10D8D0004568391C201C321CA847431C0BD10199F8 -:10D8E00007480B290AD001234900194305481AF0BB -:10D8F000FFFAF2F790FC012340001843FEBDC0463A -:10D9000074E00200C0F9020070B5051C00290CDBB0 -:10D91000032905D8081C00240CF080F80808050528 -:10D9200001238C1E9C43FE2601E00024F226B52133 -:10D9300009023143281C18F033F9002C04D00449A3 -:10D94000281C214318F02CF9EE612C6270BDC046F2 -:10D9500080B0000008B50B1C02495A6819F029F97B -:10D9600008BDC0465B830300F0B50E1C496885B056 -:10D97000041C151C002901D0002A04D1201C311CD4 -:10D9800018F0FFFA58E00F3213095918009318F0F5 -:10D9900068FA0F22A368B16870682A4000D110327B -:10D9A000009D264F2D18EF197F00DB190393234BA1 -:10D9B0000190C3185B00CB189C46039B0293002385 -:10D9C00001991027002913D061460988BF1A0B431B -:10D9D000191CF9400F1C02991B040F800199013991 -:10D9E0000191029902390291022149428C44E7E7F0 -:10D9F000BF1AFB4003994000081A104903808C4667 -:10DA0000009B01995F00C71B023763445A00381C12 -:10DA10001DF00FFC002D06D06B00023BFB5A002BC3 -:10DA200001D1013DF6E70121656033780B401A1CF6 -:10DA300023788B431343237005B0F0BDFFFFFF7FB6 -:10DA4000F0B54B68151C526887B0061C0C1C93423D -:10DA500001D22C1C0D1C0123227861681A4201D1CD -:10DA60002A7813405918301C18F0FBF9B36829784C -:10DA70009C46A3680F1C0193636820780093AB68F1 -:10DA8000474002936B68059301231A1C1F408B4388 -:10DA90000493009B8243591E6346101C03934B1C46 -:10DAA00027D0019B1F4A1B889B181818009A059BBA -:10DAB0009B1A5B188B4207D8029B1A4A1B889B183B -:10DAC000029A0232029200E0164B049A0139D318EE -:10DAD0001A1C424092B2D719039A1B0C0493131CD0 -:10DAE00002330393019B17800233000C3F0C019318 -:10DAF000D5E7009B59006144002F02D001230B8021 -:10DB00000231604618F098F90121706022782B7874 -:10DB100053400B401A1C33788B431343337007B0C8 -:10DB2000F0BDC046FFFF0000F0B55C6891B0002C6E -:10DB300002D144604C6049E1051C0B9353680E1CF4 -:10DB4000591C0692019318F08CF9069B00215B6822 -:10DB5000A8685A1C520001931DF06BFB00236B60F8 -:10DB6000069B301C5B68591C019318F07AF9301C35 -:10DB7000069918F006FAB368776802930B9B9B68C6 -:10DB800003930B9B5B680593AB680893059B9F42CF -:10DB90000ED310D80298391C039A18F0A8F900285F -:10DBA00004D10123089A7060138002E0002802DA91 -:10DBB00000236B60FFE00021059B854A9A18039BB8 -:10DBC00052009B1804931B88019119B2002905DBB0 -:10DBD00001995B0001319BB289B2F5E7931C0C936C -:10DBE0000C9A039B9B1800229C46039B63450BD217 -:10DBF000198801980C1C844022431A801022121AA2 -:10DC0000114102338AB2F1E700227C00029BA01C82 -:10DC10001A531B1801370993029B77600792099AE0 -:10DC200093420FD21988019A081C9040021C079851 -:10DC300010431022188001980233121A11418AB23F -:10DC40000792ECE7049B1B880F93029B1C19059B12 -:10DC5000FF1A5F4B6F60FF18089B7F00DB19099369 -:10DC60007368059A0A93934260D9A31E20880E9385 -:10DC70001B88000418430F990BF0EEFE0C9B00224A -:10DC8000E31A191C039F07900D93A1421AD207981B -:10DC90003B88434308888446834202D2C01A90429C -:10DCA0000AD860461B1A9A1853420B80130C92B282 -:10DCB000501E8241D21802E0821A0A8000220231EC -:10DCC0000237E2E723889A4208D3D31A5A42190C42 -:10DCD0009BB222805A1E93415A180BE09A1A228056 -:10DCE000002207E02388C018079B2080013B000C1E -:10DCF000121A0793002A0ED00020039F0D99A1420B -:10DD0000F0D20B889C463B88023763441818088081 -:10DD1000000C0231F3E76A46099B928B023B5A8062 -:10DD200009930A9B0E9C013B736099E70023049AB8 -:10DD300003998A420FD3049A01981288111C014159 -:10DD40000B4304990B8010231B1A9A4093B2049A38 -:10DD5000023A0492EBE71E4A0A9B9446029A6344F5 -:10DD60005B00D318002202998B4214D31988019CBE -:10DD7000081C204102431A801022121B9140023BD2 -:10DD80008AB2F0E7124A08999A185200525A002AA9 -:10DD90000ED1013B6B606B68002BF3D108E00C4A9D -:10DDA00002999A185200525A002A04D1013B73601A -:10DDB0007368002BF3D101210B9B1A78069B1B780B -:10DDC0005A400A4202D02B780B432B7011B0F0BDA1 -:10DDD000FFFFFF7F436830B55A0000238468A21814 -:10DDE000944207D2084D023AAB420AD815881B0468 -:10DDF0002B43F5E70278D20700D55B420B60012088 -:10DE000000E0002030BDC046FF7F0000F8B58D1E49 -:10DE100000241E2D16D81F1C40680B4B0001595CB6 -:10DE2000151C0BF019FE061CA74204D0013003217B -:10DE30000BF012FE041C281E01D01DF0FFFA033661 -:10DE400034192418201CF8BD4D8D0300064B0139F0 -:10DE5000C9B21970411880310B78044A1370044A12 -:10DE6000D25C044B1A707047FD2D0020FE2D00205F -:10DE70009C8D0300FF2D0020064B0131C9B21970A3 -:10DE8000411880310B78044A1370044AD25C044B69 -:10DE90001A707047FD2D0020FE2D00209C8D030080 -:10DEA000FF2D0020074B984204D9074B1818411842 -:10DEB000064B03E0064B1818064B4118C9180878A2 -:10DEC0007047C046A4920000228E03005B6DFFFFE6 -:10DED000E18F03000083FFFF031C20228033F0B595 -:10DEE0001A70CB4B1F3A1A70041C002389B0591CBE -:10DEF000E05C7F23CAB203406F2B01D95F2302E0AD -:10DF00005F2B01D94F230340A21880321370CBB28C -:10DF10007F2BECD1BF4A1370231C1B22FF331A70D6 -:10DF2000E432171C531CDBB203936B46B8491B7BCE -:10DF3000B94D0B70039B2E1CE31880331B782B709C -:10DF40005B2B06D19B227B1CDBB20B702A70E25448 -:10DF50002DE02E2B11D10232D2B20A70A2188032DB -:10DF60001278AC480270AD48825CD20705D47A1CA6 -:10DF7000D7B22B70E355039AD4E7A64A1370A74A89 -:10DF8000D05C820727D4002813D120220B782A7076 -:10DF9000E31880331A707B1CDFB20F70782F01D822 -:10DFA000E255E8E79B23E3556B461B7B337001206A -:10DFB00035E27F229043984A107003D1984A994BDA -:10DFC0001A602CE2413B984ADBB29849D25CCB5CA8 -:10DFD0001202134300E0964B0593059B0093009BB0 -:10DFE000002101339BB2181C0093FFF75BFF03066F -:10DFF000F5D5009B05930123029300980299FFF742 -:10E0000051FF029B0133DBB22828F5D1029D013577 -:10E01000EBB20098191C0193FFF744FF019D2928DA -:10E02000F5D10135EBB2191C00980693FFF73AFFC2 -:10E030007F23069D18403D28F3D16A46764B127B1C -:10E040001870734B039E1A70029B04965D1C714BF3 -:10E05000EDB21D70A31980331B780098291C07931B -:10E06000FFF720FF079B9842B7D10135019A731C37 -:10E07000EDB2DBB2954202D01E1C0493EAE7644B7A -:10E08000039D1E706A46029B0098013BDBB202931F -:10E09000127A604B02991A70FFF704FF5E4E030676 -:10E0A00000D590E07F225A4B18705C4B1B5C934369 -:10E0B000337009D0564B013DEDB21D7063198033AA -:10E0C0001B788342DED088E73070202812D02328C6 -:10E0D00019D02E281FD0262825D0402841D05E28D0 -:10E0E00049D02B2852D03A285FD0524A4D4B0020BD -:10E0F0001A6094E1201C291CFFF7A8FE7F223378C8 -:10E10000934340D069E7201C291CFFF79FFE33781A -:10E110005B0638D461E7201C291CFFF797FE337893 -:10E120001B0730D459E7201C291CFFF78FFE102253 -:10E1300033781340337026D1354B1B78E11880318A -:10E1400009783170482900D047E7013B3049DBB2FC -:10E150000B70E31880331B789343432B00D03CE7CC -:10E1600011E0201C291CFFF771FE042332781340B4 -:10E17000337008D131E7201C291CFFF767FE337884 -:10E180009B0600D429E7224B1D787BE7204B013DFD -:10E19000EDB21D70651980352B78452BF3D0102218 -:10E1A0009343492B00D018E7EDE7291C201CFFF70B -:10E1B0004DFE2023184A11780B40137000D161E7FF -:10E1C000134B1D78F1E7049D019B124E0133DBB226 -:10E1D00001936B461B79069A3370019B934200D1E1 -:10E1E00005E1191C0098FFF75DFE7F22084B0A4EDF -:10E1F00018700A4B1B5C934333701DD0044B0135E0 -:10E20000EDB21D70631980331B788342DCD0E4E6E5 -:10E21000FD2D0020FE2D0020FF2D00209C8D0300F1 -:10E22000888D0300040000206E8D0300088E03001B -:10E23000A5920000928D0300307020286ED0232814 -:10E2400075D02E287BD0262800D180E0402800D130 -:10E250009BE05E2800D1A2E02B2800D1AAE03A285A -:10E2600000D1B6E0252800D03FE76B1C6D4ADBB239 -:10E270001370E31880331B786B490B70452B37D133 -:10E28000A81CC0B2231880331B78684E3370684EC8 -:10E29000F65CF60900D18AE010700B70522B00D1A9 -:10E2A00085E0532B00D182E0442B00D17FE04C2B42 -:10E2B00008D10335EDB21570651980352B78592BCF -:10E2C00075D08AE6462B00D087E6EB1CDBB21370D4 -:10E2D000E31880331B780B70552B00D07DE6043596 -:10E2E000EDB21570651980352B784C2B5FD074E634 -:10E2F000492B00D071E6AB1CDBB21370E3188033FE -:10E300001B780B704E2B00D067E60335EDB215700D -:10E31000651980352B78472B49D05EE6201C291CD7 -:10E32000FFF7AAFD7F223378934340D055E6201CA7 -:10E33000291CFFF7A1FD33785B0638D44DE6201C7D -:10E34000291CFFF799FD33781B0730D445E6201CC4 -:10E35000291CFFF791FD102233781340337026D12A -:10E36000304B1B78E118803109783170482900D092 -:10E3700033E601332B49DBB20B70E31880331B7893 -:10E380009343432B00D028E611E0201C291CFFF703 -:10E3900073FD042332781340337008D11DE6201C2E -:10E3A000291CFFF769FD33789B0600D415E61D4B49 -:10E3B0001D7809E71B4B0135EDB21D7065198035DD -:10E3C0002B78452BF3D010229343492B00D004E641 -:10E3D000EDE7291C201CFFF74FFD2023124A11787E -:10E3E0000B40137000D1EFE60E4B1D78F1E7019D55 -:10E3F0000098291CFFF756FD7F2303403D2B02D0D8 -:10E400007A1CD7B2E3556A1CD2B2010605D5064A7A -:10E4100035701370049B0393ADE5151CE8E709B054 -:10E42000F0BDC046FD2D0020FF2D0020FE2D002058 -:10E430009C8D0300F0B587B0039205910D9A039966 -:10E44000051C541A0CAA12782021101C884305D0F0 -:10E45000302A05D00CAA0292012204E0224A00E0F0 -:10E46000224A02921022019280221A4005D0E30F24 -:10E470001B195B10E71A1C1C03E001210B4012D191 -:10E480001F1C002C12DD261C019B04969E4200DD01 -:10E4900004936B6828680299049A9847049BF61ABB -:10E4A000002EF1DC03E0271C141C00E00024039B79 -:10E4B000002B06D01A1C28686B6805999847039BA7 -:10E4C000E418002F0DDDE419019B3E1E9E4200DD85 -:10E4D0001E1C28680299321C6B689847BF1B002FCE -:10E4E000F2DC201C07B0F0BDF09F0300DF9F0300AB -:10E4F000F0B593B01F1C18AB10CB05901B780D1C0A -:10E50000161C0793CB070BD48B0703D1814B0A68EA -:10E510009A4205D0281CF3F7BDFB012540000543B6 -:10E5200081231C4209D1079B302B06D11A9B1B9AD1 -:10E53000934200DA1A9200231B93281C15F0B7FBB4 -:10E540000AAA131C00280DDDA30703D52B23137083 -:10E55000123B05E0131C620704D520221A70192310 -:10E5600004AA9B18E20618D5022E03D130221A7095 -:10E570007A1C10E0082E08D130221A70A20501D4AE -:10E5800001330AE03A1C0E3205E0102E05D130228C -:10E590001A703A1C17325A70023300220AA91A70F4 -:10E5A0005B1A0693A30600D52C320EAB0B931023F7 -:10E5B0000C9300231B990D93012901DD40210C438D -:10E5C00004A9CB75FBB20096610614D50021029315 -:10E5D000019103922B1C0BA80CA90DAAF7F7AAFD19 -:10E5E0000378061C2D2B15D104AAD3750D9B01367B -:10E5F000013B0D930EE00AA90191029303922B1C9B -:10E600000BA80CA90DAAF7F795FD1B9B061C012B67 -:10E610004BDC02E01B9B012B6ADC00273D1C6306E0 -:10E6200021D5172104ABC9180B78002B0AD0002381 -:10E630000122009301920598FFF7FCFE1A9B2D180A -:10E64000013B1A93069B002B0DD00023012200935F -:10E6500001920598069A0AA9FFF7ECFE1A9B069A02 -:10E660002D189B1A1A931B9B012B00DD1A93079BF5 -:10E67000059800931A9B311C01930D9A231CFFF7F8 -:10E68000D9FE2D18002F09D02023002200930197D6 -:10E6900005982149131CFFF7CDFE2D180B980EABE2 -:10E6A000984234D014F0FBFF31E00D9A1B9B93424B -:10E6B0001CDB1A9A934206DA0127D51A274004D0A8 -:10E6C0002F1C002501E000273D1C01239C43002D49 -:10E6D00009D000221F330093019505980E49131CA1 -:10E6E000FFF7A8FE051C3023079398E7131CE0E70B -:10E6F0000D9A1B9B934200DA131C172204A952188F -:10E700001278511E8A419B18069A9B18D1E7281C43 -:10E7100013B0F0BD30D30200BF740300F0B5071C86 -:10E7200000248DB005920D1C2B78002B09D18D4251 -:10E730000BD96E1A3868321C7B689847A419291CBB -:10E7400003E0252BF3D00135EEE70B78002B00D149 -:10E7500034E120230026013109930B78002B12D0DD -:10E760002D2B01D12C3B02E02B2B02D1293B1E4348 -:10E770000FE0202B01D11C3BF9E7212B01D1193BE4 -:10E78000F5E7302B02D00023069304E040220993E2 -:10E7900016430131E1E70B781A1C303A092A07D8F1 -:10E7A0000A22069801314243D318303B0693F2E720 -:10E7B00008912E2B27D14B782A2B05D00B1C013327 -:10E7C0000893002307930CE0089B02330893059BF2 -:10E7D0001D1D1B680793DB43079ADB171A4007923E -:10E7E00015E0089B1B781A1C303A092A09D80A221E -:10E7F00007994A43D318303B0793089B013308938A -:10E80000EFE7059D03E00123059D5B420793089B0D -:10E810001B786C3B59425941089B5B1808931B7845 -:10E820000493002B00D1C9E0642B00D187E013D8FA -:10E83000502B00D191E004D8453B022B00D89CE03E -:10E84000B2E0049B622B1AD032D8582B00D0ABE038 -:10E850002B1D0593412383E0049B712B34D005D8F5 -:10E86000672B00D889E0702B77D09DE0049B752B37 -:10E8700058D0782B71D0732B00D095E036E02B1D4B -:10E8800005932B68002B07D0099B381C0093069B2F -:10E890004C490193042206E0381C0522099B4A4991 -:10E8A0000093069B0193331CFFF7C4FD241882E0FC -:10E8B0002B1D05932B680BA90B70099B381C00932B -:10E8C000069B01220193EEE72B1D0BA928680593F7 -:10E8D00014F0DAF8079B011C013301D10B9B07935D -:10E8E000099B381C0093069B019311E02B1D2D689A -:10E8F0000593002D0ED0079B013303D1281C1CF07B -:10E900009DFD0790381C291C099B0093069B0193D1 -:10E91000079AC8E7099B381C0093069B2B49019373 -:10E920000622C0E72B1D059361230093099B0196E6 -:10E930000293069B381C0393296800220BE02B1DD1 -:10E9400005936123381C01220093099B01960293D1 -:10E95000069B039329680A230CE02B1D0593612372 -:10E960000093099B381C0293069B002203931023FB -:10E970000196296818F05FF898E7072307359D434B -:10E980002B1C28686968083305930EF023F8099B4F -:10E99000011C0093069B381C0193079B049A029369 -:10E9A000331C18F0B7F881E73868089901227B68B2 -:10E9B00098470134059508990131B4E6201C0DB043 -:10E9C000F0BDC046CD9F0300D29F0300D89F030037 -:10E9D00008B50B1C4179021C012904D1C06A191C1D -:10E9E00016F04FFA04E0006B0249D26A16F085FA7D -:10E9F00008BDC04628D7020008B50B1C4179021C8F -:10EA0000012904D1C06A191C16F05BFA04E0006BFE -:10EA10000249D26A16F071FA08BDC04618D7020042 -:10EA200008B50B1C4179021C012904D1C06A191CCC -:10EA300016F047FA04E0006B0249D26A16F05DFA5C -:10EA400008BDC04638D7020008B53F22014B18F078 -:10EA50003FF908BDE176020008B59122014B18F09C -:10EA600037F908BD05FC0000F7B5041CC579868A96 -:10EA70000F1CC18A00200191E071A082E082111C6C -:10EA8000201C1A1C0F4B18F023F9A368002B18D177 -:10EA9000E18A002908D0A38A002B05D1206B15F04C -:10EAA000EAFD206B15F079FCA38AE28A201C391C50 -:10EAB00018F0BEF86B1E9D416B469B88E571A682DF -:10EAC000E382F7BD09F8000038B58368002B0BD14D -:10EAD000041C0D1C0548111C19F011FAA060201C23 -:10EAE000291C0C3018F059F938BDC04678FD0200D9 -:10EAF000F0B58DB06B4601921B79041C4371012364 -:10EB0000E16203610B780D1C012B02D000219B4AAE -:10EB100046E0019B012B07D9836B01991E68231CDA -:10EB2000406B2A1C0833B047AB68181C049314F0E0 -:10EB3000C6FB63790490032B0FD109900C2109A81F -:10EB400014F0D6FBA36B021C9B68606B0999984775 -:10EB5000A3686883002B00D009E1049814F0AFFB90 -:10EB600004900378011C002B23D00A3B0F2B1CD8E8 -:10EB700009A918F031F8099B772B14D004D8032287 -:10EB80000292312B17D008E0812B04D0022202928E -:10EB9000992B10D001E001230CE0201C0499784A45 -:10EBA000FFF792FFE8E0002304E0201C754AFFF71E -:10EBB0008BFF02230293049814F081FB5A210490E6 -:10EBC00004A814F095FB049D0390039B9D4200D183 -:10EBD000C2E004952B78432B00D1B8E0392B03D049 -:10EBE000201C0499684ADBE7281C05A914F071FB76 -:10EBF0000378061C912BF3D114F061FB059B98421E -:10EC0000EED1301C05A914F064FB0378071C0A3B05 -:10EC10000F2BE5D814F053FB059B061E9E42DFD058 -:10EC20000378A02BDCD114F04AFB059B9842D7D186 -:10EC300006A9381C17F0D0FF301C14F045FB9C21AE -:10EC4000079007A814F054FB011C079814F02BFB45 -:10EC5000069B061C2E2B1FD1012804D10798037890 -:10EC60000A3B0F2B03D9201C0499484A98E72669D0 -:10EC7000731C2361019B012B66D909A917F0ACFF16 -:10EC8000A36B606BDB68311C099A984700285BD145 -:10EC9000201C04993E4A83E72F2B15D1012803D16C -:10ECA00007980378032B03D0201C0499394A77E78F -:10ECB000019B012B48D9A36B676B1E6914F0DFFA27 -:10ECC000011C381CB0473FE0302B27D1012803D965 -:10ECD00007980378032B03D0201C04992E4A5FE782 -:10ECE000019B012B30D908A914F0BAFA012707902B -:10ECF00007980378032B03D0201C0499274A4FE779 -:10ED000009A914F0ADFAA36B07905B69606B0899D1 -:10ED1000099A01379847B742EAD115E0019B012BC8 -:10ED200012D9032800D95BE7079B181C099314F03C -:10ED3000C6FA0A9014F0C3FAA36B0B909F69606B3C -:10ED40000699321C09ABB847A368002B0FD1281CC9 -:10ED500014F0B5FA051C38E76379012B04D9A36BCD -:10ED6000606B5B6802999847A368002B04D0201C55 -:10ED700004990C3018F011F80DB0F0BD0CA0030090 -:10ED800030A003003DA0030065A0030088A003009D -:10ED9000A4A00300B4A00300D0A00300F5A00300CA -:10EDA00008B5024AFFF790FE08BDC04617A1030050 -:10EDB00030B50B7885B04C1C002B7AD00C1C051C90 -:10EDC000032B09D1081C03A914F04AFA0399041C67 -:10EDD000286B15F07BFA6CE0012B07D149780234DF -:10EDE000052966D0006BF7F73BFE62E0042B07D1E4 -:10EDF0008978637809021943006B15F0ADFA16E0C3 -:10EE0000052B19D14379042B02D0006B2A490CE061 -:10EE100088784B780002184303A913F035FE039954 -:10EE20002D6BFDF719F8011C281C15F0A1FA201C08 -:10EE300014F045FA041C3CE01A1C0A3A081C0F2A7C -:10EE400008D803A917F0C8FE0399041C281CFFF773 -:10EE5000BFFD2EE0082B0BD103A914F0F7F9039B9B -:10EE60002A6A9B00041C9958286B15F081FA20E04F -:10EE700002AA03AB01A914F053FA041C0299286BEF -:10EE8000F7F7A4FD019B0D4A9B009B58281C211CF1 -:10EE9000002B03D10A4AFFF717FE09E0039A9847AF -:10EEA000AB68002B04D0EB68002B01D1029BEB6018 -:10EEB000039C201C05B030BD74E0020018F0020075 -:10EEC00034A10300F0B587B005930B1C141C5A1E27 -:10EED00093410091DBB2061C0599201C019300258B -:10EEE00014F0E1F9019B0290AB4209D0009B1B7822 -:10EEF000842B05D1291C306B029A15F03AFC009D39 -:10EF0000271C029B013B0493019B0393059B9F429B -:10EF10001CD03B78842B0ED1002D06D1306B039989 -:10EF2000049A15F026FC3D1C05E0301C391C214AD2 -:10EF3000FFF7CAFD3BE0381C14F0C1F9039B071C26 -:10EF400001330393049B013B0493DFE7002D07D1BA -:10EF5000019A029B94466344191C306B15F0FDFB2B -:10EF6000019B002B1CD0009BAB4205D1281C14F048 -:10EF7000ABF9011C301C01E0301C0099002200F0AC -:10EF80001BF80DE0AC420FD1201C14F09DF9011CC0 -:10EF9000301C002200F010F8201C14F090F9041C22 -:10EFA000059B9C42EED102E0301C211CF1E707B02A -:10EFB000F0BDC0464CA10300F0B50B78171C1A1C1D -:10EFC0000A3A85B0041C0D1C0F2A0FD8081C03A98F -:10EFD00017F002FE201C0399002F01D0022F02D14E -:10EFE000FFF70AFDE1E0FFF7F3FCDEE0192B01D8A3 -:10EFF0006F4AD8E01A3B7C2B00D183E004D8252B44 -:10F0000076D0772B06D0CBE07E2B00D188E0912BF9 -:10F010006ED0C5E0081C02A914F05BF9061C022F93 -:10F0200003D0201C311CFFF7C3FE301C14F047F93D -:10F030000299061C17F0C8FD002800D0B0E0337814 -:10F04000922B14D1301C03A914F043F9061C301C78 -:10F0500014F035F9039A0190904208D2022F01D1A1 -:10F06000019EF4E7201C311CFFF7A2FEF8E733787D -:10F07000A12B19D1022F04D1206B15F013FA206BAC -:10F080000FE0301C14F020F9011C201CFFF790FE4B -:10F09000206B012F05D115F0D9F9206B15F0A9F9D6 -:10F0A0001DE015F0BEF91AE0A22B79D1301C14F046 -:10F0B0000BF903A917F090FD012F07D1206B15F074 -:10F0C000BBF9206B039915F072F908E0022F02D109 -:10F0D000206B15F0D0F9206B039915F095F9301CD1 -:10F0E00014F0EDF8029917F06FFD00285DD157E09C -:10F0F000002F51D103A9281C14F0EBF8391C021C75 -:10F10000201C3CE0081C03A914F0E3F80399061C3A -:10F1100017F05AFD002843D1002F3DD1351C17E0D0 -:10F12000002F39D1081C03A914F0D3F80399051C4A -:10F1300017F04AFD031E04D0201C391C3A1C3B1C4E -:10F1400027E02A789A2A03D0201C291C1A1C20E0C8 -:10F1500003A9281C14F0BDF8061C14F0B0F80378BD -:10F160009D2B04D10022201C311C131C11E09E2B6E -:10F1700007D103A914F0ADF8311C021C201C039B1D -:10F1800007E0BE2B0CD014F09AF80021031C321CAF -:10F19000201CFFF797FE08E0201C291C054A02E00E -:10F1A000201C291C044AFFF78FFC05B0F0BDC046A7 -:10F1B00066A1030099A103007EA10300F0B50B78BE -:10F1C00091B00A3B041C019105920F2B00D9ECE091 -:10F1D000081C14F074F80378912B00D0E5E0019836 -:10F1E00014F06DF80DA914F074F8037842780A3B16 -:10F1F0001B021343AD2B00D0D7E014F060F8037866 -:10F20000051CA02B00D0D0E014F09EF8002800D000 -:10F21000CBE0281C14F053F80D9B984200D0C4E0BA -:10F22000281C14F051F89C210E900EA814F060F8E0 -:10F230000E9B051C0293012302980F9314F03FF8D4 -:10F24000061E0E90AE4210D014F039F80E90A8426F -:10F250000ED00378032B00D0A7E00FA914F000F81C -:10F260000E90A84200D0A0E002E07A4B029E0293EA -:10F27000029B1B784833DBB2022B00D895E0337831 -:10F280004833DBB2022B00D88FE00D9B181C04938F -:10F2900014F015F8059A2769831A5A1E9341021C27 -:10F2A0005B421A400F9B03920593238B278309939C -:10F2B000638B0A93E38B0B937B1C0693BB1C079316 -:10F2C0006B461B8B6383A38BE383FB1C08933B1D63 -:10F2D00023613578033D6B1E9D41EDB2002D03D0B7 -:10F2E000201C311CFFF764FD0299201CFFF760FD14 -:10F2F000206B089915F0EBF80799206B14F0B2FF1A -:10F30000206B15F099F80022201C0199FFF754FE9C -:10F310000499201CFFF74CFD206B069914F0A2FF06 -:10F32000206B059914F0D2FF206B122115F080F9A3 -:10F33000206B089914F096FF206B002D05D015F076 -:10F3400085F8206B15F097F805E015F075F8201C8E -:10F35000311CFFF72DFD059B206B1921002B00DAD6 -:10F360001A2115F065F9206B0121079A15F0BBF8F9 -:10F370006B469B8C23836B461B8D63836B469B8DF7 -:10F38000E383039B002B03D0201C191CFFF710FD07 -:10F39000206B391C14F066FF206B15F061F8002D0E -:10F3A00056D0206B15F05CF852E0238B256903934F -:10F3B000638B6E1C0493E38B66830693AB1C0293F2 -:10F3C000A38B0198E383244B2B432383EB1C236102 -:10F3D00013F075FF011C201CFFF7EAFC071C206BD3 -:10F3E00015F0D2F8206B311C14F03CFF206B029911 -:10F3F00015F0D4F8201C01990022FFF7DDFD391C1F -:10F40000201CFFF7D5FC071C206B14F022FF0028FE -:10F4100003D1206B311C15F05AF8206B029914F0BF -:10F4200021FF206B15F0C6F86B469B8923836B4642 -:10F430001B8A63836B461B8BE383059B9F4203D030 -:10F44000201C391CFFF7B4FC206B291C14F00AFFA8 -:10F4500011B0F0BDE04003000080FFFFF0B5171CC5 -:10F4600085B0041C081C0D1C13F029FF391C061C58 -:10F4700017F0AAFB019000281CD02379201C002B38 -:10F4800011D0E36A1E78002E0DD11321FFF7A0FAE8 -:10F49000291C201CFFF78CFC206B0121321C331C23 -:10F4A00015F0A6F902E0291CFFF782FC206B14F08E -:10F4B000D7FF58E033783B2B1BD1291C201C01229D -:10F4C000FFF77AFD301C13F0FFFE4378811C4E3BA2 -:10F4D000DBB218260A2B01D8244AD65C201CFFF781 -:10F4E00067FC206B311C15F0A3F8201C291C02229C -:10F4F00037E03C2B2ED1301C03A913F0EAFE061C8A -:10F50000071C039B9F4205D0381C13F0D8FE0197BF -:10F51000071CF6E70199201CFFF74AFC206B14F04A -:10F520008BFF201C291C0022FFF746FD019B9E42F9 -:10F5300019D0301C13F0C3FE019B051E9D4202D062 -:10F54000206B14F079FF311C201C0022FFF734FDE2 -:10F550002E1CEBE7311C201CFFF72AFC201C291C69 -:10F56000019AFFF729FD05B0F0BDC04601A00300D8 -:10F57000F0B589B0041C0D1C059104921F1C0029D4 -:10F5800024D18379002B27D0C36A02911B78012BE9 -:10F5900023D10521FFF71CFAE26A108D854211DAAA -:10F5A000D16AEB00CB1801215E780E4208D05A8850 -:10F5B000206B14F0CEFD0022206B0221131C97E07B -:10F5C0000135EBE7201C00214B4A22E005A89C21D5 -:10F5D00013F08EFE029000E0029300231E1C059D96 -:10F5E00000930393019308E0281C1E4313F06CFE64 -:10F5F0000390281C13F063FE051C029B9D4254D00F -:10F600002B78B82B08D1B73B1E42EDD0201C291C0B -:10F610003A4AFFF759FA6DE0B92B0CD1B73B1E42BD -:10F6200003D0201C291C364AF3E7281C1E4313F084 -:10F630004BFE0090DDE7BA2B2BD1281C13F044FEC3 -:10F64000051C13F03CFE0378BE2B09D1201C291C9D -:10F65000062217F0DFFB281C013713F030FEC9E744 -:10F660002B780A3B0F2B03D9201C291C254AD0E7F5 -:10F67000281C07A917F0B0FA051C0799206B14F095 -:10F680006BFE291C201CFFF793FB019B051C01331B -:10F69000A8E7019B201C291C002B01D01A4AB8E7BF -:10F6A000FFF786FB0137051CA7E7002E15D0039B4B -:10F6B000002B03D1206B14F070FE03E0201C039993 -:10F6C000FFF776FB009B002B03D1206B14F065FE47 -:10F6D00003E0201C0099FFF76BFB049B206B391C97 -:10F6E000019A002B03D0331C15F08CF802E0331C78 -:10F6F00015F07EF809B0F0BDC5A10300E3A1030039 -:10F70000FAA1030012A2030033A20300F0B589B0EE -:10F71000041C039103A8072113F0EAFD0027E36A04 -:10F7200001905E7E0398019B98424AD005A913F090 -:10F73000D0FD4021039003A813F0DAFD06A9051CB3 -:10F74000039817F049FA069B02902A2B19D1A84278 -:10F750000DD2029813F0B3FDA84208D1029807A970 -:10F7600017F03AFA079B2B2B07D02D2B07D0201C24 -:10F770000021244AFFF7A8F920E001261EE0042614 -:10F780001CE0201C0399FFF713FB0137039003983B -:10F79000A84208D007A917F01FFA07990390206B19 -:10F7A00014F005FEF3E7281C059917F00DFA002860 -:10F7B00004D1A071291C201CFFF7FAFA059B0393C2 -:10F7C000B0E7181C13F080FD019B03901B78011C0F -:10F7D000321C201C242B02D117F0B3FA01E017F0E1 -:10F7E0002FFD051C013F06D30022206B0121131CB5 -:10F7F00014F0FEFFF6E7201C291CFFF7FDF809B006 -:10F80000F0BDC04655A20300F7B50A780824131CC2 -:10F81000293BA343DBB2002B02D10133C37168E063 -:10F82000131C2A3BA343DBB2002B62D0131C0A3B00 -:10F830000E1C041C0F2B1DD9081C282A13D101A94A -:10F8400013F047FD071C13F03AFD019B0025984279 -:10F8500012D013F034FD019B051CC31A5A1E9341AC -:10F860005B421D4008E013F02FFD071C13F027FD3D -:10F87000051C01E00F1C0025381C01A917F0ACF98C -:10F88000E379002D02D02A78002A0AD1002B30D14A -:10F89000E38A002B2DD0201C311C164AFFF714F9E7 -:10F8A00027E0002B1ED0A38A01339BB2A382012B39 -:10F8B0000CD1E18A206B002902D014F0DCFE01E0BB -:10F8C00014F06BFD206B002114F0FCFE291C201CA1 -:10F8D000FFF76EFA206B019914F03EFD206B14F0D7 -:10F8E000FDFE06E0E38A201C0133E382291CFFF7BA -:10F8F0005FFAF7BD73A20300F0B5041C0E1C056986 -:10F9000087B003936B1C0293AB1C0361291C006B33 -:10F91000171C14F016FE201C17F066F9311C201C71 -:10F92000FFF746FA206B14F04BFE206B029914F09F -:10F93000CEFD206B291C14F095FC206B14F0A7FF62 -:10F940002669731C2361039B9F4200D191E0381C00 -:10F9500013F0BAFC002305932369051C01930133BE -:10F9600023610378002B0FD113F0A9FC13F0A7FC3F -:10F97000039B984223D0201C291C4B4AFFF7A4F874 -:10F98000A38B013BA3838CE0071C6A2B07D113F0E8 -:10F990009BFC071C13F093FC05A917F01DF9206BC5 -:10F9A00014F04AFD391C201CFFF702FA206B2121BC -:10F9B00014F03EFE206B0021019A14F094FD281CE7 -:10F9C00013F07DFC071C206B14F04AFD05990029FB -:10F9D00003D1206B14F044FD02E0201CFFF70CF86B -:10F9E0000025206B14F03CFD059BAB4209D0256936 -:10F9F000206B6B1C2361291C14F0AFFD201C17F039 -:10FA0000F3F8391C201CFFF7D3F9059B071C002BCA -:10FA100002D0206B14F0D4FD206B14F0F2FD059B96 -:10FA2000002B19D0206B0F21F7F71AF8206B291C37 -:10FA300014F018FC206B0F21F7F712F8201C059921 -:10FA4000FEF7DAFF201C0599FEF7EAFFA38B206B77 -:10FA5000013BA38314F08DFD206B311C14F037FDA6 -:10FA6000206B019914F0FEFB206B032114F0F6FBD0 -:10FA700069E7A38B206B013BA38314F07AFD206B15 -:10FA800014F009FF206B029914F0ECFB0C9B002B87 -:10FA900003D0201C191CFFF78BF9206B311C14F0CC -:10FAA000E1FB07B0F0BDC046A1A20300F0B587B0EE -:10FAB00003914379012B42D1C36A041C1B78002BAC -:10FAC00003D1204AFFF700F839E0039B03A8432144 -:10FAD000019313F00DFC02900398029B98422ED0E4 -:10FAE00005A90B2717F078F802AB059DFF180390C6 -:10FAF000291CE06A3A1C15F02CFB3B78061C002BF5 -:10FB000006D10378042B03D0201C01990E4A0CE087 -:10FB1000E06A291C15F04AFB002803D00378023B59 -:10FB2000022B05D9201C0199084AFEF7CDFFD3E727 -:10FB300004233370E06A291C15F04AFBCCE707B0B8 -:10FB4000F0BDC046C0A20300E5A2030006A3030067 -:10FB5000F0B585B001914379012B2BD10091041CA4 -:10FB6000432101A813F0C4FB071C0198B84221D01F -:10FB700003A90B2517F030F8039E6D440190311C4A -:10FB8000E06A2A1C15F0E5FA2B78002B08D10378DF -:10FB9000012B05D0201C0099074AFEF795FFE4E7EA -:10FBA00001250570E06A311C15F0F7FA0028DCD059 -:10FBB0000570DAE705B0F0BD24A3030010B5438B50 -:10FBC000041C002B02D1054AFEF77EFFA38BE28BBB -:10FBD000618B9A1A206BF6F769FF10BD43A30300EF -:10FBE00010B5038B041C002B02D1054AFEF76CFFF5 -:10FBF000A38BE28B218B9A1A206BF6F757FF10BD6F -:10FC00005BA30300F7B50B78041C1A1C0A3A0E1C00 -:10FC10000F2A08D8081C01A916F0DEFF201C019944 -:10FC2000FEF7FEFE76E0912B3FD1081C694613F0EB -:10FC300050FB011C201CFFF7BBF80378051C922B1E -:10FC400010D101A913F045FB051C281C13F037FB4C -:10FC5000019B071E9F4205D0291C201CFFF7A8F816 -:10FC60003D1CF2E72B78A12B0BD1281C13F02CFBA9 -:10FC7000011C201CFFF79CF8051C206B14F01CFCD9 -:10FC80000CE0A22B41D1281C13F01EFB01A916F099 -:10FC9000A3FF0199051C206B14F0F7FB281C0099A9 -:10FCA00016F092FF002830D034E0962B2DD1081C9E -:10FCB00013F04AFB002828D1301C13F005FB061C6A -:10FCC00013F002FB051C201C291CFFF79BFF281CBE -:10FCD00013F0F5FA0378011C9D2B1BD09E2B0ED13F -:10FCE00001A913F0F6FA019B051E9D4212D0201CBB -:10FCF000291CFFF787FF281C13F0E1FAF3E7BE2B5E -:10FD000003D0201CFFF77EFF04E0201C311C024AB8 -:10FD1000FEF7DAFEF7BDC04670A30300F7B5022672 -:10FD20000D1CC16A041C097E314003D0201C291C13 -:10FD3000334A5EE001912978081C0A380F2801D85F -:10FD4000281C05E01A32914212D1281C13F0BCFA8B -:10FD500001A916F041FFE279E36A002A04D15A8B27 -:10FD600001325A83012635E09A8B01329A83F9E7F2 -:10FD70001A33994223D1E379002BD7D10127281CCC -:10FD8000E77113F0E1FA0326002823D1281C13F0B1 -:10FD90009BFA0278E36A0A3A0F2A04D81A7E281CD2 -:10FDA00017431F7605E01A7E281C17431F7613F0B1 -:10FDB0008BFA13F089FA01A916F00EFF0AE0281C4D -:10FDC00013F082FA01A916F007FFE26A137E1E43C0 -:10FDD000167605260199002911D06B46DF1CE06AD2 -:10FDE0003A1C15F0B6F93B78002B05D1201C291CD4 -:10FDF000044AFEF769FE02E0022346700370F7BD75 -:10FE00007E41030088A3030038B5C36A041C1B7835 -:10FE10000D1C012B04D000210B4AFEF755FE11E00A -:10FE2000081C111C16F0D0FE002804D0206B0F21F6 -:10FE3000F6F716FE03E0201C291CFEF7B9FF206B25 -:10FE400014F0EBFC38BDC046A1A3030038B5C36A6B -:10FE5000041C1B780D1C013B012B04D90021164A00 -:10FE6000FEF732FE26E0081C111C16F0ADFE00283D -:10FE700004D0206B0F21F6F7F3FD18E02B78C22B8E -:10FE800011D1281C13F020FA011C201CFEF790FF52 -:10FE9000206B14F079FB206B0F21F6F7E1FD206B4E -:10FEA00014F0E5FC06E0201C291CFEF781FF206B06 -:10FEB00014F0CEFC38BDC046BBA30300F0B5041C53 -:10FEC00085B00D1C081C111C16F07EFE002804D005 -:10FED000206B002114F0F6FB80E02B78AF2B0BD1C8 -:10FEE000206B012114F0EEFB201C291CFEF760FFA3 -:10FEF000206B14F0F3FB71E0AE2B67D1281C13F0DC -:10FF0000E3F9051C13F0DBF902900378B22B53D10F -:10FF100003A913F0DEF9039B0290984203D002A8D4 -:10FF2000992113F0E5F92B78AF2B11D103990298A1 -:10FF3000266B13F0B8F9411C301C14F0C3FB291CCC -:10FF4000201CFEF735FF206B14F0C8FB012304E0F2 -:10FF5000201C291CFEF72CFF0023029F0193039B0A -:10FF60009F421ED03E78391CAF3E201C73425E413A -:10FF7000FEF71EFF019BF6B2071C002B09D0002ED6 -:10FF800003D1201C291C164A08E0206B14F0A6FBA4 -:10FF9000E5E7002EE3D0201C291C124AFEF794FD51 -:10FFA0001CE0019B002B19D1391C0298246B13F023 -:10FFB0007AF9411C201C0FE02B78201C291C0422FC -:10FFC000AF2B00D0052216F025FF07E0291C201CCE -:10FFD000FEF7EEFE0121206B14F098FB05B0F0BD9A -:10FFE000D4A30300F7A30300F0B50123041C0D1CE8 -:10FFF000427187B0E1620361111C006B2A1CF6F7A5 -:020000040001F9 -:100000001DFC6379012B02D100236B84AB84AE68A5 -:1000100033781E2B07D1301C13F056F9011C201C1D -:10002000FEF7C6FEB9E02B78002B04D1201C311C52 -:10003000FEF7BEFEA7E0012B1ED1301C13F03FF9E6 -:100040006379051C012B07D10023201CE371291CB7 -:100050000C22564B16F03CFE281C13F030F913F01E -:100060002EF9011C201CFEF7A3FE206B14F0F1F802 -:10007000002800D094E086E0022B18D16379012B90 -:1000800007D10023201CE371311C1422484B16F0C9 -:100090001FFE301C13F013F9011C201CFEF788FE14 -:1000A0002B7E5B0779D5206B14F0DAF96BE0033B0C -:1000B000032B3AD8301C13F002F905A913F009F903 -:1000C00013F0FDF867790390012F09D10B2202ABE1 -:1000D000D218E06A391C15F03CF8022303706F83D4 -:1000E0002B78032B04D1206B002114F0D1FA0CE003 -:1000F000042B04D1206B002114F0E4FA05E0052B59 -:1001000003D1206B002114F001FB201C0121FEF71C -:100110005FFC0023201C00930399331C059A17F001 -:100120008DFB2B78062B38D12DE06379012B06D17E -:10013000281C052105AA15F00CF80223037005A957 -:10014000A86816F049FD201C0D21FEF741FC201C7B -:100150000C21FEF751FC206B296914F0FDF81121E8 -:10016000201CFEF749FCA86813F0A9F813F0A7F8C3 -:10017000011C201CFEF71CFE281C052114F0D9FFD1 -:100180000378022B04D1206B0F21F6F769FC04E001 -:1001900042880521206B13F0DCFF206B14F03DFB3F -:1001A000206BF6F7D9FB07B0F0BDC04665740200BE -:1001B00059740200F0B51E1C0F1C99B009AC002147 -:1001C0000590151C201C3C221BF033F8059B099759 -:1001D0005B6826712362059B186813F070F813F0B2 -:1001E0004EF86062800013F045FA0021059BA06282 -:1001F00000951B68201C0A1C16F000FD14F013F873 -:1002000000230290206303930026331C626A964207 -:1002100002D3002BF8D12CE0A268002AF9D1A16A00 -:10022000B2005558002D16D06A69002A13D113F078 -:100230008BF96B7E6861291C201C0122042B02D1E2 -:10024000FEF756FC01E0FFF7CFFE2369039A9A42BE -:1002500000D2039301230136D8E70B9A002A00D07D -:10026000AEE00499139B8900CB58002B09D1049B65 -:1002700001330493129B0693069A049B9342ECD39A -:100280009EE0197EC90723D51C8D601EC000002C7E -:100290001ED0D96A09184D78AE0711D5002A17D09B -:1002A00050880F1C8446506816780690557811CFF8 -:1002B00011C262464A80069A0E704D704A6007E08D -:1002C000002A02D1012D00D10A1C013C0838DEE7CA -:1002D000002119841A8D944691421CDAD86ACA000A -:1002E00082181878072802D15468052C11D00138DB -:1002F000052804D81078002801D10130107010783A -:10030000022802D05078C00703D5188C441C1C84E6 -:1003100050800131DEE7002161450ED0D86ACA0065 -:1003200082181078032806D15078C00703D4188C9F -:100330005080013018840131EEE75E68002E96D0BF -:100340000024328D0792221C07998C421CDAF16A34 -:10035000E00009180691097800250339012911D810 -:1003600065450FD0DF6AE90079180F78042F07D1AF -:1003700006984768381E4F68B84201D14A8001325A -:100380000135EDE70134DFE70020824200D16EE75E -:1003900060450DD0DC6AC10061180C78042C02D1D4 -:1003A0004C78E40702D54C8814194C800130EFE7F3 -:1003B000598B92B251185983198C52181A8456E7E6 -:1003C00000260298039913F033FF351C129B049307 -:1003D0009E4210D30B9B0393002B4FD0149B0CA871 -:1003E000996816F0DAFC149B0B9809990C9A1B6912 -:1003F00001F038F842E00B9B0493002BEAD1139BE9 -:100400000493049AB3009C58002C35D0637E042BCF -:1004100019D1002D03D1039813F078F8051C00239F -:1004200015932D4B09A8211C032217931695FEF74F -:100430005FFB0B9B0493002B1ED109A8211C0422F7 -:10044000FEF756FB18E0029B09A8211C0222159317 -:10045000FFF7CAFD0B9B0493002B04D109A8211CB4 -:100460000322FFF7C1FD0B9B0493002B04D109A8C5 -:10047000211C0422FFF7B8FD0136A7E7029813F00C -:10048000DFFE002D02D0281C13F051F8002405983F -:1004900012F064FF139B1B685D69129B02939C42E0 -:1004A0000AD2139B0293029AA3009858002801D005 -:1004B00014F036FE0134F0E7139813F0F0F80B9ABD -:1004C000002A02D0101CEFF7A6FE281C111C13F006 -:1004D00046F819B0F0BDC046ECCB0200F0B5051CE3 -:1004E0008BB008680C1CFCF741F9049004A817F0C5 -:1004F0000EFC0027049B03900693069B19780029A5 -:1005000012D0081CF5F796FB0126002807D006A894 -:1005100017F00FFC069B1B78732B00D0061C069B64 -:10052000BF1901330693E8E7381CF9F7CBFB01222A -:10053000009007A96068F1F76DFD079B089A059385 -:100540009B1801920293022D0AD9A068F1F7A2FB31 -:10055000002802DA089BC01826D4059B18180590BD -:1005600000240DE0291CFBF777FC059B009A5D1920 -:10057000A31C9B00059501349850049B0133049300 -:10058000BC4230D2049B187800282CD0F5F752FBDF -:100590000125002803D004A817F0CBFB051C059803 -:1005A000029A43199A4205D21049114817F0A7FC44 -:1005B000EFF731FE049B1B78732BD3D0009BA60072 -:1005C0009E190195019B0436002B0AD0049B0398C9 -:1005D000197805AAF9F7F8F9019B7060013B0193BE -:1005E000F0E76419C9E700980BB0F0BD16A403004A -:1005F00010F80200F0B589B0039101921E1CFCF7BF -:10060000B5F8049004A817F082FB00250290B542CB -:100610004ED2049B187800284AD0F5F70BFB012432 -:10062000002803D004A817F084FB041C039B019A44 -:100630001B199A4205D21F491F4817F060FCEFF7BB -:10064000EAFD049B1B78732B04D02D190E9BAF0081 -:10065000DF191CE00E9B6F1CAD00E85805A90122B4 -:10066000F1F7D8FC069B251E9D4200D91D1C2A1CB3 -:10067000059903981AF0C0FD039B621B58190021CD -:100680001AF0D7FD039B3D1C1C1903940CE0002CB1 -:100690000AD0049B02981978A3005B42FA5803AB76 -:1006A000F9F7FAF9013CF2E7049B01330493AEE752 -:1006B00009B0F0BD16A4030010F80200F0B50E1C3E -:1006C00089B0039001CE0F1C17F049FB4410211C88 -:1006D00004A812F03BFA069D221C281C00211AF0E7 -:1006E000A8FD039B00962A19013B3868291CFFF7D7 -:1006F00081FF04A90248FBF761FB09B0F0BDC046C9 -:1007000048EF020030B50C1C89B0051C0222486875 -:1007100005A9F1F77FFCA068F1F7BCFA002809DA17 -:10072000069B0393C01805D509490A4817F0E7FB53 -:10073000EFF771FD059B069A1918201C0C309A18CA -:100740000090EB1E2068FFF755FF034809B030BD4D -:1007500016A4030010F8020074E00200F0B50024B3 -:100760000E1C85B0071C0393081C0D4B111C009434 -:10077000221CEFF739FFB01C800012F069FF051C46 -:1007800007604660B44208D0039BA700D859F7F72A -:10079000EFFCEF19B8600134F4E7281C05B0F0BD98 -:1007A000FFFF0000014B58687047C046882E0020AC -:1007B000014B18687047C046882E0020F0B5194ECE -:1007C00087B03368051C00200C1C019313F049F816 -:1007D00030600090206814F0CEF8019B071C336055 -:1007E000114E022D03D0A068F1F76AF9061C211CF6 -:1007F00063680831A81E0393F9F764FA009B04901C -:100800000593301C03AB03210022F7F7B7FB074B1E -:10081000041C9F4203D0381C211C13F0D5FB201C64 -:1008200007B0F0BD882E00206CEB020074E00200DF -:10083000F8B50326051C071C3540022D15D10E4BBB -:100840000340062B11D0FF23DB05C418B443201C42 -:10085000002109F0D3FA00280BD080231B06E018F2 -:10086000B043064B2843C01804E0381CF4F7E4FA00 -:1008700000E0381CF8BDC046070080FF0000808003 -:1008800010B5F7F775FC041C201CF7F7BFFC002817 -:1008900005D0F1F73FFB0028F6D1024800E00248FE -:1008A00010BDC04678CD020034CD020010B5F7F778 -:1008B0005FFC041C201CF7F7A9FC002805D0F1F709 -:1008C00029FB0028F6D0024800E0024810BDC046CF -:1008D00034CD020078CD020007B5044B0190694683 -:1008E000022000220093FCF7CBFC0EBD06040000A2 -:1008F00008B5F1F76BF9034B002800D1024B181C27 -:1009000008BDC04634CD020078CD020037B5F1F7FE -:10091000C1F901AB7F2802D8187001213CE02149C0 -:10092000820988420AD8402149420A431A703F226C -:100930001040BF3A1043587042312DE01A49040B61 -:1009400088420ED8202149420C431C7080245F311C -:100950000A4064420840224320435A7098703C3950 -:100960001AE01249884211D81025810C6D422943A2 -:1009700019703F21703D0C400A4008402C432A4327 -:1009800028435C709A70D8703B3905E008490948E3 -:1009900017F0B5FAEFF73FFC181C0122FBF744FAF9 -:1009A0003EBDC046FF070000FFFF0000FFFF100034 -:1009B00027A4030010F8020008B5021C02490A200F -:1009C000F7F764FC08BDC046BE04000008B5021C71 -:1009D00002490A20F7F75AFC08BDC0463E05000050 -:1009E000F0B585B002900192101C0C1C0022324917 -:1009F0000393F4F755F80090002801D04368009362 -:100A0000029B012B03D000252E1C01953CE02068A1 -:100A10000024F7F7ADFB271C02900298F7F7F6FBCE -:100A2000051E17D0009B2E1C002B04D0181C291C5F -:100A300013F0A8FF061C002C09D00398311C3A1CA7 -:100A4000F7F724FC1D4B984201D0251C3E1C2C1CA2 -:100A5000371CE2E7221E2BD101981949F4F720F840 -:100A6000002801D0426823E01649174817F047FADA -:100A7000EFF7D1FB009B002B0AD12768002E0DD188 -:100A80002668019701350434029B9D42F2D10EE0A5 -:100A90000098216813F076FF071CEFE70398391CD4 -:100AA000019AF7F7F3FB054B9842EBD1E8E7321CCC -:100AB000101C05B0F0BDC046D606000034CD0200C3 -:100AC0001E05000048A4030010F8020037B501A974 -:100AD000051CFBF761FE1E4B041C2B40062B05D0AA -:100AE000AB072AD12A681B4B9A4226D1201C0199B8 -:100AF00013F0A6F90190012822D1207843B2002BEF -:100B000004DB012320784000184320E07F230134D8 -:100B100018403F3B184202D098435B10FAE7227816 -:100B20003F23111C9943802904D1800113400134D3 -:100B30001843F4E713F0DEF809E0019B012BE0D045 -:100B40000549019A054800F01FFCEFF764FB3EBD24 -:100B5000070080FF80CA020061A4030000FD0200BC -:100B6000F0B587B0141C02900391101C2349002299 -:100B7000F3F796FF2249051C0022201CF3F790FF93 -:100B80000123041C049305931E4F002D07D06868B1 -:100B90001D4B984203D004A9FBF7FEFD071C1B4D1B -:100BA000002C07D06068184B984203D005A9FBF7CA -:100BB000F3FD051C0024029B154E9C4212D0002C14 -:100BC00007D00023301C00930193391C049AFDF7D1 -:100BD00031FC039AA300D158301C0022F0F78AFFA1 -:100BE0000134E8E70023301C00930193291C059A87 -:100BF000FDF720FC044807B0F0BDC046EE0500003C -:100C0000F6050000CDA7030074E002003F4B03008F -:100C100010F002007FB50D4DA84214D0041C0C4EFC -:100C20000122301C211CF0F765FF0A49301C15F029 -:100C3000F4FE04230293084B0394DB690748032165 -:100C400002AA01939847281C04B070BD74E002000A -:100C500010F002003F4B030028D9020078F3020095 -:100C600010B5041C86B002A86A461021EFF746FCB6 -:100C70006846211C0122F0F73DFF02A90248FBF75C -:100C80009DF806B010BDC04680CA020070B50C6861 -:100C9000031C201CE2074AD4A20703D1244A25687A -:100CA000954244D0012B1FD94868F0F7F3FF061C8A -:100CB000201CF1F753F8051C301C09F0BBFF011C88 -:100CC0001C480CF0BBFE041C211C281C09F0E2FC93 -:100CD0000CF066FB211C09F0EBFA03239843013B5F -:100CE0001843154BC01822E0201CF1F737F8061CFA -:100CF0000CF056FB051C09F07DFF291C041C301C60 -:100D000009F0FAFDFC218905051C09F071F800289D -:100D100001D0013406E0BF21281C090609F068F85B -:100D2000002801D001239C43201C12F0E3FF70BD7A -:100D300030D30200000020410000808013B5041C65 -:100D4000081CFBF793F86A46011C201CF7F794F97E -:100D5000009B0248002B00D1014816BD34CD020093 -:100D600078CD020037B50024022800D98C68486885 -:100D70000D68FBF77BF8094B011C002C00D0084BD9 -:100D8000281C6A4698470098002805D00199002938 -:100D900003D0F2F77DFF00E0201C3EBDD9800000AB -:100DA0007980000038B5051C081C141CFBF75EF8A0 -:100DB000221C011C281CF7F7B7F9014838BDC046B2 -:100DC00074E0020008B5F7F7FBF9002804D10348E6 -:100DD00017F088F8EFF71FFA08BDC046BCFA02000A -:100DE00030B50B1C85B0141C012805D90A490B48E5 -:100DF00017F085F8EFF70FFA09480121C268019250 -:100E0000019D0022A84703A90390221C0120EFF7AF -:100E100095FF039805B030BD9BA4030000FD0200C0 -:100E20009CC60200F8B50E1C002803D12A4B041CF6 -:100E30001D6823E0086883070AD10368274A9342A4 -:100E400003D113F09AFE051C0EE0254A934201D00F -:100E5000F0F736FE856B002D06D02A68214BD31A99 -:100E6000594259414B421D403068F0F729FE1E4B54 -:100E7000C26800249A4201D1346804340020011C65 -:100E800012F03DF80027061CBD4209D10025AC42F6 -:100E900016D11FE0EA68FB009958002904D10137F8 -:100EA000AB689F42F6D3F1E70429F8D0301CEFF786 -:100EB000E1FEF4E7A268EB009958002904D101355E -:100EC00063689D42F6D305E00429F8D0301CEFF7A3 -:100ED000D1FEF4E7301CF8BD882E002028D902008E -:100EE0006CEB020064CE020075B70000F8B5041C7C -:100EF00003780020834200D19AE0402B01D10125E4 -:100F000028E0201C4B4916F0CAFF0028F7D1201C0E -:100F1000494916F0C4FF0028F1D1201C474916F0BA -:100F2000BEFF0028EBD1201C454916F0B8FF002871 -:100F3000E5D1201C434916F0B2FF0028DFD1201C68 -:100F4000414916F0ACFF0028D9D1201C3F4916F0CA -:100F5000A6FF051C0023191C1E1C1F1C2278002A3A -:100F600051D0272A10D1002B01D0032B08D1627851 -:100F7000272A05D1A278272A02D10234243A16E082 -:100F80000122012B3DD812E0222A12D1181C1E3A50 -:100F9000904309D16078222804D1A078222801D179 -:100FA000023404E0002B01D0022B2AD10222D31AF2 -:100FB00027E05C2A09D16078272801D0222804D1B3 -:100FC0001A1C501E8241A4181BE0002B19D15B2A69 -:100FD00012D006D8282A0DD0293A50424241BF1AD1 -:100FE0000FE07B2A0AD07D2A0AD05D3A5042424166 -:100FF000B61A06E0013704E0013602E0013100E0F4 -:1010000001390134AAE70120002F11DC002E0FDC8A -:1010100000290DDC033B83420AD9013C23785C2B79 -:1010200006D0101C002D03D00A3B581E8341D8B2B5 -:10103000F8BDC046598603008A8603007086030007 -:1010400086860300F22C030056B00300B28803002A -:10105000F0B5051C8BB04618049207930296029BCC -:101060005C1EAC4210D32078F4F7D8FD002809D1DB -:101070002078F4F7DFFD002804D123785F2B01D01E -:101080002E2B02D10294EAE70295724B1D68029C56 -:10109000B44209D3029BE31A0193B44209D300245A -:1010A000261C271C039448E023782E2BF2D0013411 -:1010B000EEE70027AB689F421CD2FB000393039A24 -:1010C000EB689858002817D0042815D009A9FBF719 -:1010D00063FB019B099A011C93420DD102981A1CD3 -:1010E0001AF0B3F9002807D1EB68039A9B185868E7 -:1010F000002803D10020AAE00137DBE783070AD1EB -:101100000368554A934203D113F037FD051C0BE0E9 -:10111000524A934201D0F0F7D3FC856B002DE9D001 -:101120004F4B2A689A42E5D1631C0293AFE7EA6805 -:10113000E3009858002804D10134AB689C42F6D3F0 -:1011400029E00428F8D009A9FBF726FB099B0590A4 -:101150000693069A019B9342EED8029805991A1CB1 -:101160001AF073F90028E7D1019B002F0BD0B3428E -:101170000DD8069A93420AD8059AF95CD25C91423E -:1011800004D10133F3E7069E059F00E01E1C039B7C -:1011900001330393D0E7039B002BABD0012B02D08C -:1011A000019B9E4206D9019B079AFB181360019B85 -:1011B000F01A4CE0002340260393039BAA68934255 -:1011C0003FD2039BEA68DB009858002835D00428FA -:1011D00033D009A9FBF7E0FA099F019B0590BB42B8 -:1011E0002BD8029805991A1C1AF02FF9002824D13F -:1011F000331C0F33DC17240FE41824112401A41B23 -:10120000012C00DC10343319DB190027402B0ED8D9 -:101210000498A74204DA134915F0FFFB0137F7E7FA -:10122000059915F0FAFB099BF618361905E00498A4 -:101230000D49059A15F0BDFC099E039B01330393EC -:10124000BBE70498094915F0E8FB012040420BB0C8 -:10125000F0BDC046882E002028D902006CEB0200A9 -:1012600064CE0200CDA70300C6A403003F4B0300D9 -:10127000F7B51F1C0023061C0093081C0D1C111C35 -:101280001A1C0B4BEFF7B0F9102012F0EEF9041E08 -:1012900004D1084A084B094CDA6104E0281C391CC7 -:1012A000F8F710FDE06000232660201CA360FEBD5F -:1012B000FFFF0000F8DC0200882E0020982E00209E -:1012C00010B5013810C9F8F7FDFCE060004810BD0A -:1012D00074E00200F8B57F23171C151C041C0E1CBB -:1012E0001F409A430AD17B1E012B07D80B68586810 -:1012F00011F0C5FB011C201C15F08FFB022F04D13F -:10130000201C0F4915F089FB01E0002F12D1F36872 -:10131000002B02D05A68002A04D1201C094915F07C -:101320007CFB0CE0012A05D1201C99680022F0F713 -:10133000E1FB04E0201CF1682A1CF8F757FCF8BD1B -:10134000A1870300BF740300C36803485A68002ADA -:1013500000D098687047C04674E00200136810B56A -:10136000002B0ED17D2902D1C368136009E0054B23 -:1013700004689C4205D1BA2903D1141CFFF7E4FF8D -:10138000206010BDBCFA02000EB470B5051C87B019 -:10139000102012F06AF9041E06D11B4B1B4A1D6176 -:1013A0009861DA611A4C29E0002105608160012012 -:1013B000F8F788FC0B9B051CE060002B1ED0181C66 -:1013C00025211AF023F8061E08D10B981AF036F8DA -:1013D000321C011C0B98FAF727FD0EE002A8102121 -:1013E00011F09DFB0CAA02A80B990192EFF7E6F809 -:1013F000084802A9E568FAF7E1FCA860201C07B0DC -:1014000070BC08BC03B01847882E0020F8DC02002E -:10141000982E002080CA020008B5031C820708D15C -:10142000064A0168914204D1054AD96801209142D7 -:1014300003D0181C0349FAF75DFB08BD6CEB0200F2 -:10144000711201007CFB020010B5041CF0F738FBA0 -:10145000034BC2689A4200D024690023A36010BDE8 -:1014600071120100F7B5161C0193041C0F1CF0F754 -:1014700027FB174BC2689A4200D02469A568002D4B -:1014800009D10C2012F0F1F8A06000281ED003232F -:10149000E580A38010E0E388A18802338B420BDB58 -:1014A00003318900281C012212F0F5F800280DD024 -:1014B000A388A0600333A380E288A168930003326D -:1014C000E280019ACB181F605E609A60F7BDC0464B -:1014D0007112010070B5151C041C0E1CF0F7F0FA17 -:1014E000064BC2689A4200D02469A368002B01D140 -:1014F000336001E0E28832602B6070BD7112010040 -:10150000F0B5836999B05A1E04925A1D9200821850 -:101510000432079102920F21012206339B00C31867 -:10152000043303930369019006A81A4009180A704E -:10153000032293430A930CA8EEF752FE031E01D038 -:1015400000F08CFD019A5568D468079A002A26D0CD -:101550002A785E2A23D00798079300F0BEFCAB7868 -:101560006A781B021343B84AEB189B186360EB7848 -:101570000834236023685A0600D1B1E20A9A013B7D -:101580005268920700D49FE2221C08C205236360C0 -:10159000141C0A9B1F680A9B0C3B0A933D1C019B71 -:1015A0006F1C5D602B78181C10385A2801D900F088 -:1015B00005FD08F03DFA5B005D0062000305640074 -:1015C0000305730081008700030589009E00AF00BA -:1015D000BE00CD00DB00EA00EF00F70005011901B5 -:1015E0002901380155015E01710189019601030548 -:1015F000030503050305A301A5011A05AC01B2010A -:10160000BC01C401D101DE01E901030503050305A5 -:10161000F90126029C029C02B902CF02D302E60223 -:10162000E602D4FF030503050305030503050305CF -:10163000030503050305F20204031503260334031F -:101640003D03520363037B039703A90354048004FF -:10165000A70495040305C003CC03D703E003F003FC -:101660000B0420043C04DE04EE04FE04774B00E08F -:10167000774B6360043400F0E5FC764BF9E76B7858 -:101680005B06DB177F213A78DB01114052B20B4336 -:101690000137002AF6DB5B0001220BE000237F21EB -:1016A0003A78DB01114052B2CB180137002AF6DB41 -:1016B0000622DB001343DCE70323FD1C9D432F1CA4 -:1016C00008CFD6E70023D4E700237F213A78DB0157 -:1016D000114052B2CB180137002AF6DB9B005B4267 -:1016E000029A9858002800D049E25B485B4900F014 -:1016F0005CFD00237F213A78DB01114052B2CB1808 -:101700000137002AF6DB029A9B005B42985812F0E0 -:1017100059FCE7E700207F223B78C0011A405BB20A -:1017200010180137002BF6DB251DF6F761FB00F0E2 -:101730003EFC00207F223B78C0011A405BB21018AB -:101740000137002BF6DB251DF6F720FB00F02FFC00 -:1017500000217F223B78C9011A405BB25118013742 -:10176000002BF6DB206813F023F926E200217F220C -:101770003B78C9011A405BB251180137002BF6DBE8 -:101780002068221CF6F7A8FC74E7251DF6F748FB35 -:1017900000F00DFC251F286821680422F0F706FCE4 -:1017A00000F036FC00237F213A78DB01114052B271 -:1017B000CB180137002AF6DB9B005B4200F012FCDD -:1017C00000237F213A78DB01114052B2CB18013758 -:1017D000002AF6DB029A9B005B4298582168251F7D -:1017E00012F0F2FB00F015FC00207F223B78C001D4 -:1017F0001A405BB210180137002BF6DB2168251F59 -:10180000F6F722FB00F005FC00207F223B78C001A8 -:101810001A405BB210180137002BF6DB2168251F38 -:10182000F6F72AFBF5E300217F223B78C9011A4035 -:101830005BB251180137002BF6DB231F20681A68B2 -:10184000F6F772FC07E2C0460380FFFF78CD020086 -:1018500074E0020034CD0200FCF90200CAA40300C7 -:10186000231C221F083B106821681A68F0F79EFBB2 -:101870003BE100237F213A78DB01114052B2CB18C3 -:101880000137002AF6DB029A9B00D31A1A68002A55 -:1018900000D12AE700223EE000257F223B78ED01BF -:1018A0001A405BB255190137002BF6DB029BAD00E5 -:1018B0005D1B286812F086FB002800D115E7286818 -:1018C000002112F081FBBDE300207F223B78C001A4 -:1018D0001A405BB210180137002BF6DBF6F7C0FA9E -:1018E000B0E300207F223B78C0011A405BB21018A1 -:1018F0000137002BF6DBF6F7CBFAA3E32368B8E653 -:101900002368A360231F1B68636008349AE3231FC6 -:101910001968226821601A6094E3221F1368216805 -:101920002360231C083B1868106019608AE3AB78B9 -:101930006A781B021343ED18D94BEF1882E3AB789A -:1019400020686E780593F0F7E5FAEF1C251F2C1C34 -:10195000002800D176E321E0AB7820686E7805930B -:10196000F0F7D8FAEF1C251F2C1C002800D069E3E3 -:1019700014E0AB7820686E780593EF1CF0F7CAFA94 -:10198000002800D131E309E0AB7820686E78059338 -:10199000EF1CF0F7BFFA002800D026E3059B1B02DE -:1019A0001E43C04BF618E8E0261C27681721381C98 -:1019B000221C0836F6F790FB381C1621321CF6F76D -:1019C0008BFB0020321C011C12F0E4FFAB786A781C -:1019D0001B0213430A9A0F210C320A920A9AEF1C37 -:1019E000FB181360022206ABC9180A9D0B7813433B -:1019F000221D13436B6000230A9A0B709360A06052 -:101A00000DE0261C2568A84B083E9D4209D1656063 -:101A1000A56003200021321C12F0BCFF3560341C8D -:101A200010E3012129402CD06D10231F012D10D16E -:101A3000251C1A680C3D05929B4A03201A60002160 -:101A4000226062602A1C12F0A5FF059B2B60032315 -:101A500015E0251C3268103D05921A680320069295 -:101A6000914A002132601A6022602A1C12F092FF13 -:101A7000059B069A2B60231C0C3B1A6005233360E0 -:101A8000E9E033683560251C103D23602A1C0320E3 -:101A900012F080FFF0F73EFA00280DD00122824BB1 -:101AA00006A92B600A9B5B6813400E325218137014 -:101AB0000A9B0C3B0A93ACE223682B60231C043C7A -:101AC00022680C3B1A60AAE70A9A06A8516801220C -:101AD0000A400F2109180A700A9A0C3A0A924AE53C -:101AE000221F1768002B00D1B5E00C3CAAE2AB78AE -:101AF0006A781B0213430A9AEF1C0C320A920A9A64 -:101B0000FB1813602B780A9A403B584258410F212A -:101B1000430006A8091808780343234353600023B1 -:101B20000A9A0B7093608DE22068FFF775FC251F01 -:101B3000002803D0EEF76AFB2B6817E223685A4AA5 -:101B40002C1C934200D17DE25B10DBB2012B00D054 -:101B500010E592E12068F6F70BFB2EE0AB786E788B -:101B60000593019BEF1CDC602068F6F729FB002839 -:101B700005D1059B043C1B021E43BF1962E2606055 -:101B800078E50A9B06A95A68012313400F225218D0 -:101B900013700A9B0C3B0A9354E200207F223B788F -:101BA000C0011A405BB210180137002BF6DB83002E -:101BB000E41A0434211CF8F785F8206042E2002082 -:101BC0007F223B78C0011A405BB210180137002B0E -:101BD000F6DB8300E41A0434211C11F090F9ECE7E1 -:101BE00000237F213A78DB01114052B2CB18013734 -:101BF000002AF6DB9B005B4218592168EFF73AF8A0 -:101C0000F3E100207F223B78C0011A405BB210183C -:101C10000137002BF6DB251D11F023FEC7E1251C43 -:101C2000231F083D286821681A6811F053FEF0E16F -:101C300000237F213A78DB01114052B2CB180137E3 -:101C4000002AF6DB01339B005B42221F18592168F2 -:101C5000126811F03FFE083CF4E100207F223B783F -:101C6000C0011A405BB210180137002BF6DB83006D -:101C7000E41A0434211CF7F719FD9EE700237F21A5 -:101C80003A78DB01114052B2CB180137002AF6DB5B -:101C90009B005B421859216813F035F8A5E1C04656 -:101CA0000380FFFF0080FFFF74E0020000237F211C -:101CB0003A78DB01114052B2CB180137002AF6DB2B -:101CC000251F022B05D128682168D34AF9F776F938 -:101CD0009EE1261C083E306829682268F9F76EF9F3 -:101CE00030609CE600257F223B78ED011A405BB214 -:101CF00055190137002BF6DB291C2068221CF6F74A -:101D0000A9FDC64BED1813E000257F223B78ED01BD -:101D10001A405BB255190137002BF6DB291C221C37 -:101D20002068F6F7EFFDFF232A0A1A401D405519D7 -:101D3000AD00641986E103230021FD1C9D43286842 -:101D40000A1C11F00CFC2F1D261D606067E60323A2 -:101D5000FD1C9D43261F2868316822682F1D11F045 -:101D6000FEFBBDE70323FD1C9D4329796F1D8B00FE -:101D7000E41A04340AE00323FD1C9D4329796F1DF6 -:101D8000CB439B00E41880235B0019432868221C86 -:101D900011F000FC11E700237F203978DB010840B7 -:101DA00049B2C31801370029F6DBFF20FF22191CB6 -:101DB000DD0940001140284040188000241A1B0A09 -:101DC0001A402068231DF6F7D9F8F6E600217F2295 -:101DD0003B78C9011A405BB251180137002BF6DB82 -:101DE000FF23CA095B001340CAB29B189B00E41A88 -:101DF000083C00202FE000237F203A78DB011040D0 -:101E000052B2C3180137002AF6DBFF25181CFF2247 -:101E1000DE09284052003240411C891889001B0A03 -:101E2000641A2B40191C221C12F0B4FDC5E60021D7 -:101E30007F223B78C9011A405BB251180137002B51 -:101E4000F6DBFF230120CA095B001340CAB29B18CE -:101E50009B00E41A0C3C221CF6F7D4FBADE60F22E3 -:101E600006ABD2181378002B07D00A9B59680123C0 -:101E70000B4013700A9B0C3B0A930A9B039A9342F4 -:101E800013D30A9B5B689B07F4D503220A9B216846 -:101E90005B6893431C1C59609A600A9B08341F6856 -:101EA0000A9B0C3B0A93FFF779FBEEF7AFF9019B16 -:101EB0000020DC607DE16B78022B01D1043C0BE05B -:101EC000002B09D10A9B039A934200D26BE19868D8 -:101ED000002802D10C3BF6E72068F6F711FE66E118 -:101EE000079E2168231F002E02D00021079E079124 -:101EF0001868321C0BABF6F795FD012811D12F1C89 -:101F00000B9B2360EEF782F9019B06A95F60DC6002 -:101F10000F235B180A9A1B7801201343019A13615F -:101F200047E1002806D10B9B043C002B00D13A4B23 -:101F300023600CE002281BD10B98394915F0E9FF0A -:101F4000002810D00B98FFF7FFF9043C2060002E0A -:101F500078D0301C334915F0DCFF002872D0EEF742 -:101F600055F90D967AE0EEF751F90B9B0D9375E05C -:101F7000043C00207F223B78C0011A405BB210185D -:101F80000137002BF6DB251F21682A68F6F7D6FDFE -:101F90003EE000217F223B78C9011A405BB2511814 -:101FA0000137002BF6DB251C01CDF6F7D9FD60606B -:101FB0002FE02068251F12F006FD2AE0AF2B05D880 -:101FC0000120803B5B000343FFF753FBBF2B04D88A -:101FD000B020C31A9B00FFF783FBCF2B07D8C0208C -:101FE000C31A9B00029A21689950043C2AE0D62B20 -:101FF00005D8D03B181C2168F5F756FFDDE5FA2B14 -:1020000012D8251FD73B181C29682268F6F73EF91D -:1020100028602C1C16E0C04674E00200FFFFFF3F62 -:10202000BCFA0200B4FD02006349644815F067FF82 -:10203000041CEEF7EBF8049B019A06339B00D318BF -:102040005C60AEE05E4B1A6B002A01D1FFF7A6FA86 -:1020500000221C6B1A63EEF7D9F80D940D9B5949B9 -:102060001868F9F747FD002825D0019B5A68002A17 -:1020700021D01378432B0BD19378D11C52781B02BB -:102080001343019ACB185360D3680593043B7EE059 -:102090005E2B10D1019B019ADC680D98231DD36043 -:1020A000FFF752F9019B60605B68019A0593013369 -:1020B0005360FFF740FA0D9B434A93423CD0434A9A -:1020C000934239D0019B0BA81B6805930B9313F027 -:1020D00085F9051C0BA813F081F9041C0BA813F05B -:1020E0007DF9019B011C5B680593019B1B680693AE -:1020F000069A059B981A0122401B0B9D2B78002BFA -:1021000012D0DE0904D11F361E4001355B0908E0FC -:102110000F26E0271E40FF001B011F406B78023591 -:102120003B430B95B04204D20D98231CFFF79AF95C -:1021300002E0801BD218E0E70F2306AA9B181A784A -:10214000002A08D00A9A516801220A401A700A9B94 -:102150000C3B0A93F0E70A9A03998A421AD30122A8 -:102160001A700A9B0D991B680593059A019B0591AE -:102170005A6003220A9B5B6893430A9A9160144A4F -:102180005A600D9A9A6012680C331A60019AD360F3 -:10219000FFF7D1F9049B019A06339B00D3180D9ADF -:1021A0005A60022005E00B480B4915F0A8FE041CFC -:1021B00051E719B0F0BDC046F6A40300A8FC020028 -:1021C000882E0020BCFA0200CCF802002CFE02008F -:1021D00074E002004CF8020010A5030010B5041CC6 -:1021E000F1F72AFB074B021C9C3307491B68074881 -:1021F00014F0DFFCF4F7F4FF012C01D1F5F710F82F -:10220000034810BD882E00202FA5030010F0020007 -:1022100074E0020008B5F4F70DFD014808BDC046A2 -:1022200074E0020008B5F4F7FDFC014808BDC046A3 -:1022300074E0020010B586B0041C03A902A804AA29 -:1022400005ABEEF7FDF8049B07480093059B074993 -:102250000193029A039B14F0ACFC012C01D1EEF720 -:102260002BF9034806B010BD10F0020044A503008E -:1022700074E00200F7B501911149041C171C0025F8 -:1022800014F0CBFB7B689D4214D2002D03D0201CA0 -:102290000C4914F0C2FB019BAE009A590A49201C5C -:1022A000BE1914F086FC201CB1680122EFF722FC55 -:1022B0000135E7E7201C054914F0AFFBF7BDC04628 -:1022C000638703008B4003008CA503001B430300BE -:1022D000F0B5214B8DB005AC013800930431019469 -:1022E0000723EEF7B3F9A0681C4D0027A84202D0DF -:1022F000EFF7D0FCC7B260691826A84202D015F0EB -:1023000001FF061CA0691922A84202D015F0FAFEAE -:10231000021C2069A8420DD003AA0221EFF77EFD1E -:10232000039B186815F0EEFE039B061C586815F019 -:10233000E9FE021C71B252B203A803F0DDFC03A84F -:10234000059903F035FD03A861683A1CE36803F0C2 -:102350003FFD281C0DB0F0BD2002030074E0020018 -:1023600008B501F08DFD034B002800D1024B181C6D -:1023700008BDC04634CD020078CD0200012183683B -:10238000034A0B4200D1034A8B438360101C704701 -:1023900034CD020078CD020008B5406816F013FF76 -:1023A000024B002800D1024B181C08BD34CD02009E -:1023B00078CD020082B0000C012804D1034A936852 -:1023C00002331843906002B07047C04624000020DA -:1023D00082B0000C012804D1034A936802331843E9 -:1023E000906002B07047C0463000002037B5C0256D -:1023F0000121074C00950A1C201C064B04F098FD97 -:102400000095201C02210122034B04F091FD37BDF1 -:10241000B4290020B5230100D123010073B5009039 -:10242000000C431E01910A2B1BD801231C1C844065 -:102430000C490A88224392B20A800B4A11780F296C -:102440000FD816781178094CD94033409B0098403A -:10245000031C655C2B43DBB2635413780133DBB29E -:10246000137073BDE02D0020002E0020012E0020EF -:10247000094A38B51378002B0CD1084D2C78E4B2FA -:10248000002C07D10068013313702B7003685B6860 -:1024900098472C7038BDC0460A2E0020092E002017 -:1024A00010B5041C0430FFF7E3FF606817F0BAFFB3 -:1024B000034B8000C0580623C000184310BDC0461F -:1024C0003804030038B50430FFF7D2FF124C13482C -:1024D0002378002B1FD020780021C0B2F7F7F2FB41 -:1024E00000232278934214D20D495A088D5C0122B0 -:1024F0001A40920015412A1C0F252A40094D9200CE -:10250000525906259900D20041182A438A600133A6 -:10251000E7E70023237038BD002E0020F8DC02001E -:10252000012E00203804030008B5F9F79FFC0023B2 -:10253000074A99008A58904208D001330C2BF7D1F2 -:102540000449054815F0DBFCEDF765FED8B208BD7F -:102550003804030090A5030010F8020038B5041CED -:10256000081CFFF7E1FF051C201DFFF781FF6068D5 -:1025700017F058FF024BA84200D0024B181C38BD80 -:1025800034CD020078CD020038B5041C081CFFF7DA -:10259000CBFF051C201DFFF76BFF0122AA40064B55 -:1025A00006481988114200D1054819889143002234 -:1025B0001980044B1A7038BDE02D002034CD020084 -:1025C00078CD0200002E0020C02307B503480093F9 -:1025D0001B210022024B04F0ABFC07BDB4290020F4 -:1025E0001D240100F0B52B4D87B003902B78002BF4 -:1025F0001CD05AB2002A10DA80246E1C6D785C4020 -:10260000002D13D0631EDCB2FF2C0DD004AB981D3F -:102610000121057001F066FCF4E704AAD01D012138 -:1026200003702E1C01F05EFC751CDFE70526039885 -:1026300001F09AFC0124B44226DA0025164F291C29 -:10264000381C221C02F0A4FC6B4601901B79002B65 -:1026500014D0631E1A1C381C291C029302F098FC2B -:10266000031E0BD1381C291C221C02F057FC6B46A0 -:10267000381C1B79291C029A02F050FC0135052DEB -:10268000DCD10134E4B2D6E7013E002ECFD107B051 -:10269000F0BDC046A0A503005000002008B5C8202A -:1026A000FFF7A0FF004808BD74E0020008B54068CD -:1026B00006F0E6F8024B002800D1024B181C08BDBA -:1026C00034CD020078CD020010B5041C081CEFF7D1 -:1026D000E1FA011C431005D00549064815F00FFC2E -:1026E000EDF799FD606806F023F8034810BDC04679 -:1026F0003EA6030010F8020074E00200032310B5A8 -:102700000B40041C081C022B03D1114B0B40062B61 -:1027100002D1EFF7BFFA09E0EFF720FB0AF006F964 -:1027200000220C4B08F016FB0AF08EF80A4B011E33 -:10273000994205D909490A4815F0E1FBEDF76BFD0F -:102740000D2063681856F2F7A7FD064810BDC04675 -:10275000070080FF0000E03FFF03000053A60300D6 -:1027600010F8020074E0020008B5081CEFF792FAB6 -:10277000FA239B005843F2F757FD002805D004497F -:10278000044815F0BCFBEDF746FD034808BDC04604 -:1027900074A6030010F8020074E0020008B5081CDB -:1027A000EFF778FAF2F740FD002805D00349044816 -:1027B00015F0A5FBEDF72FFD024808BD74A6030038 -:1027C00010F8020074E0020010B5041CEFF778F96D -:1027D000084B98420BD0084B984208D0074B9842C0 -:1027E00005D00749074815F08AFBEDF714FD60682E -:1027F00010BDC0464006030094050300DC0503003D -:1028000083A6030000FD020001220020074B0849B7 -:102810005A600860A821DA60064AC9005A50064981 -:102820005A5004315A5005495A50704700900040A0 -:102830000C9C0040FCFF0000440500004C0500001B -:10284000034B04481B78002B00D103487047C04657 -:102850000C2E002034CD020078CD0200F7B5A82759 -:10286000A9253248324B01681A6884468A185118E3 -:102870001960304B00911C780193121109112E4BF5 -:10288000FF000420ED002D4E002C15D0002A03DAA5 -:10289000821AD8515A5102E004325851DA51812239 -:1028A0009200002904DA2648511A1A5099510CE076 -:1028B0009A518122920005E00432D8519A51812226 -:1028C00092005A5189181E4A995001221D4CDA6013 -:1028D0002378002B23D03F201B4A1C4B1168019DFD -:1028E00004330131DB6F2D7808401B5C002D01D0D3 -:1028F000803B5B0010600820009A801A1C22534322 -:102900006246C3189B1013601F23194007D1104B58 -:102910001A78002A03D00F481970F8F789FC0122B1 -:102920002378042053402370FEBDC0467827002042 -:102930007C27002008010020009000404405000092 -:102940004C0500000B2E002074270020882E00204C -:10295000070100207581020038B5051C081C0C1CFD -:10296000EFF7AEF8094A0023904205D0084909481C -:1029700015F0C5FAEDF74FFCE2181179EA180133AA -:102980001171202BF8D1044838BDC0463C07030024 -:1029900093A6030000FD020074E0020038B5041C99 -:1029A000081C151CEFF776F91F2802D90E480F49AD -:1029B00003E0002D05D10E480E4915F0A0FAEDF701 -:1029C0002AFC2418042D04D1012320794000184347 -:1029D00009E0281CEFF75EF9FF2802D902480649F2 -:1029E000EBE72071054838BD10F80200AAA60300E5 -:1029F00000FD0200BEA60300E3A6030074E002008F -:102A0000A02270B51E25A321104BD2009C58C900EE -:102A1000AC439C500E4C0F4E5C500F490F4C800045 -:102A2000195104341E510E4C1951A5210D4CC900E9 -:102A30005C5009490C4C40180C49585004315C500A -:102A40000B49585099582943995070BD00F00140E6 -:102A50004091004044910040006000401C0500008F -:102A600024050000489100404C9100402C050000D6 -:102A700034050000074B8000C018A223DB00C158BA -:102A8000054A0A40C250C25804490A43C2500022B3 -:102A9000C250704700600040FFE0ECFF001F0300E1 -:102AA0000123A022834010B5134CD2051351031CFF -:102AB000C133124CFF339B009C50114B8900C91845 -:102AC000A223DB00CC580F4A00022240C024CA5087 -:102AD000CA58A4021443F822520110402043C8509F -:102AE0000320CA58084C10432243CA50C046C0466F -:102AF000C046C85010BDC0460C05000003030000CE -:102B000000600040FFE0ECFF031F0000F8B50E1C62 -:102B100015F0F8FA194B041C194D1A4F9E420FD1AB -:102B20000123A0228340D20528700021D351FFF752 -:102B3000B7FF0020FFF764FF0023134A13701CE067 -:102B4000301C15F0DFFA2C7001252A1C0F4BA24017 -:102B50001870A023DB05DA512A1C8240061CDA51CA -:102B6000201C0021FFF79CFF301C291CFFF798FF59 -:102B7000281CFFF745FF044B1D70F8BD74E00200F0 -:102B8000090100200C050000080100200A010020B6 -:102B900070B50024FFF738FE164B201C0833DC67A5 -:102BA000F8F714FBA0221E20134B14491C70144B81 -:102BB000D2001C60134BA0261C608B58124D83431F -:102BC0008B50201C0134FFF755FF221C0F4BF605DC -:102BD0001B785BB29A400E4B72511B78002B07D0CA -:102BE000201CFFF747FF0B4B1B785BB29C407451D6 -:102BF00070BDC046882E00200C2E002000F0014041 -:102C00007C270020782700200C0500000901002007 -:102C1000080100200A010020F0B53E4E8DB0331CA3 -:102C20000833DB6F041C002B02D1FFF7B1FF6EE00D -:102C3000002801D0F3F7F6FF6846EDF7D1FA002837 -:102C40000CD1331C0833D86FF5F7BAFA051CEDF731 -:102C5000DDFA002C25D0F3F7EDFF22E0002C01D0A7 -:102C6000F3F7E8FF019B2C491868F8F743FF0025AC -:102C7000041EAC4215D1019F381CEEF721FF274BF3 -:102C800098420BD1211C0120F7F71CF81F21051CCD -:102C9000F860221C2248F9F7C7F8A8600025019BBC -:102CA000336301271F4B1C68331D641101343C4002 -:102CB000DB6F64011C19002D07D10836201C291C6C -:102CC0002022F56718F0B5FA1FE0281CEEF7F8FE91 -:102CD000154B984209D0331C00220833134814497D -:102CE000DA6715F00CF9306311E06B682360AB68AC -:102CF0006360EB68A3602B69E3606B692361AB6978 -:102D00006361EB69A3612B6AE3610A4B1F700DB02D -:102D1000F0BDC046882E0020BCFA020090F80200E8 -:102D2000F6A60300742700203C07030000FD020004 -:102D300016A703000701002008B5FFF729FF014887 -:102D400008BDC04674E00200F0B587B00493574B4D -:102D500003901B780D1C161C002B01D0FFF718FFE9 -:102D6000534B1A78002A0AD1524C4020211C0831BA -:102D7000CA6701321A7010F06BFC0434E0678027D8 -:102D800001224D4BBF004D4CDF674D4BE250FFF72A -:102D90003BFD00234B4AF021A3500432A3500832DC -:102DA000A350C22209039200A150474AE35105945F -:102DB00095423BD1AE4233D11C1C444BA200D758A4 -:102DC000381C15F09FF9031CA0220321C133FF33E7 -:102DD0009B00D2059950631C019301238340019C01 -:102DE00002930426394BA200D558A123A0220299B0 -:102DF000DB00D205D150281C15F09AF9012848D1E2 -:102E0000A022334B0299D205D150281C15F090F91D -:102E100000283ED1013E002EE7D1381C291C07E0D6 -:102E20002C492D4815F06BF8EDF7F5F9281C311CED -:102E3000FFF76CFE0398F5F79BF91E4C0026231C48 -:102E400001253F220833D867244B80211E70244B74 -:102E50001D70244B1A60231DD86F521918F0E9F920 -:102E6000301CFFF7D9FE204B104F1D60059B301C16 -:102E70001D601E4950223D70F8F774F9049BB3425F -:102E800012D03B78002B0FD0236B002B0CD120BF2E -:102E9000F7E7012C01D10224A3E7019B0124022BB7 -:102EA0008BD113480849C3E707B0F0BD0C2E0020B2 -:102EB0000D2E0020882E002004E100E0009000404C -:102EC000FC0F00000405000074E00200140703007A -:102ED0000C05000028A7030000FD02000B2E0020B7 -:102EE00007010020742700200C9C00405D28010091 -:102EF0000805030010B5084B86B002AC009301949E -:102F00000423EDF7A3FB02982379A168E268FFF799 -:102F10001BFF024806B010BD8C07030074E00200DE -:102F2000014B1878C0B270470C2E002010B5242039 -:102F300010F08EFB041C044B802108C0202218F0E6 -:102F400078F9201C10BDC0463C070300F8B5051CED -:102F5000081C0C1C161CEEF7B3FD314FB8425CD1B7 -:102F6000681F0F2859D806F059FD080833585858DB -:102F70005858585858585813133EFFF7D7FF002396 -:102F8000E2181179C21801331171202BF8D1041CF9 -:102F9000301CEEF795FDB8423FD10120052D04D03D -:102FA000123D6B1E9D416D422843002173181B7911 -:102FB0006518803B43432A799B18FF2B03D9FF22D6 -:102FC000DB179A43131C01312B712029EED122E02B -:102FD000FFF7ACFF0023E2181179C2180133117119 -:102FE000202BF8D1041C301CEEF7B8FE0F2115F091 -:102FF000C6F8211C221D24311378803B4343DB1388 -:103000008033FF2B03D9FF25DB179D432B1C137047 -:1030100001328A42F0D1201C00E00020F8BDC046F9 -:103020003C07030008B5024816F076F8014808BDD1 -:10303000C828002074E0020008B5C30708D483073D -:1030400009D10368094A934202D0094A934202D146 -:10305000EEF720FE03E0EEF781FE07F0CBFD00283F -:1030600001DD00F081FF034808BDC04630D30200F7 -:103070003CCD020074E0020008B5034803F03EFDB9 -:1030800001234000184308BDC828002008B50348A4 -:1030900004F06EFE10F02EFE08BDC0461C2B002072 -:1030A00010B5031E064C02D1201C191C04E0086850 -:1030B000EEF7F0FD011C201C03F026FD014810BDB9 -:1030C000C828002074E00200031C203B5E2B00D9BE -:1030D0003F2005235843024BA0381B68181870473F -:1030E0008C00002038B5051C081C684301304010D6 -:1030F00008300C1C10F0ACFA0122044B85710360FF -:10310000037944719343037138BDC046140A030028 -:1031100010B5041C102010F09BFA044B0360636888 -:103120004360A368C3600023836010BDAC09030043 -:1031300038B5051C202010F08BFA0C4B041C0360E2 -:103140000520011CFFF7CEFF6B68EA68A0602361D1 -:1031500062602A7C201CA276AA689B1863616B7C43 -:10316000E37615F05DF8201C38BDC04670090300F9 -:1031700070B5061C081C141CEEF78CFD051C201CE9 -:10318000EEF788FD041C002D01DB002802DA0E4852 -:103190000E490BE0301C15F0ACF8854204DA301C07 -:1031A00015F0B5F8844205DB0748094914F0A7FE7D -:1031B000EDF731F8301C291C221C15F08DF8012385 -:1031C0004000184370BDC04610F802004AA7030033 -:1031D00063A70300F8B50C680D1C2379DB0702D543 -:1031E00019481A490DE04868EEF754FD071CA86815 -:1031F000EEF750FD061C002F01DB002805DA14480D -:10320000144914F07CFEEDF706F8E868EEF742FD8D -:10321000051E092D02D90E480F49F2E7201C15F0B2 -:1032200068F8874204DA201C15F071F8864202DB48 -:1032300007480A49E5E7201C391C321C2B1C15F0F5 -:103240002DF80748F8BDC04600FD020073A7030033 -:1032500010F802004AA70300A8A7030063A7030011 -:1032600074E00200F7B50E1C2749041C009213F00D -:10327000A0FC009B002B03D1201C244913F099FCD7 -:103280000025234F201C391C13F093FC0197301CA0 -:1032900015F03DF8854221DA0027301C15F029F899 -:1032A00087420CDA391C2A1C301C15F015F8194B12 -:1032B00019491A5C201C13F07CFC0137EDE7201C37 -:1032C000164913F076FC009B002B05D1301C15F03D -:1032D0001EF80138854211DB0135D8E7201C019921 -:1032E00013F067FC009B002B03D1201C0C4913F04A -:1032F00060FC201C0B4913F05CFCF7BD201C0A4944 -:1033000013F057FCE8E7C046C2A70300C9A70300B3 -:10331000D5A70300D7A703009341030070740300EF -:103320003F4B03001B430300CFA70300F0B51E1C57 -:1033300000238BB00F1C0093081C111C1A1C0333B4 -:10334000EDF752F9032F55D8381C06F067FB5602EB -:1033500010103068684B0340062B50D0830700D014 -:10336000C4E0664B02689A4200D0BFE047E0306894 -:10337000EEF790FC051C7068EEF78CFC0290029949 -:10338000281CFFF7AFFE0390022F02D114F099FF23 -:103390002EE0B06807A90122EEF73CFE002D08DB05 -:1033A000029B002B05DB00266B43089A371C9342D7 -:1033B00017D05348534914F0A2FDECF72CFF079B9C -:1033C0001A5D131C092A00D90923DBB20398321CA9 -:1033D00014F064FF0134049BE11B9C42EFD17F1980 -:1033E0000136029B9E4203D07B1904933C1CF2E7FA -:1033F00003987EE044484549DDE7454879E007A960 -:10340000F9F7CAF9079B041C0593012B03D1207817 -:1034100015F0F3F96DE00023221C181C1D1C059EFD -:10342000111BB14214DA11780A2901D03A2905D1C9 -:103430009D4200DA1D1C0130002307E001332029E2 -:1034400004D0392902D92E483249B4E70132E6E7DF -:1034500003900295002B05D0021C013203929D427D -:1034600000DA029302980399FFF73CFE0026071C3E -:10347000351C0494049B059A1B1B934227DA049B7A -:103480001B780A2B01D03A2B0DD1029B9D4207DA03 -:10349000291C381C321C002314F000FF0135F4E70E -:1034A000013600250FE0202B04D1381C291C321CCA -:1034B000002305E0392B06D8381C291C321C303B70 -:1034C00014F0ECFE0135049B01330493D2E7039B17 -:1034D000381C9E420DDA029B381C9D4209DA291CD9 -:1034E000321C002314F0DAFE0135F4E706480A49DD -:1034F00061E70BB0F0BDC046070080FF80CA020044 -:1035000010F802000CA8030000FD020029A8030027 -:10351000000A0300E2A7030048A80300F0B585B045 -:103520000191051C081C002106F068FC041E05D052 -:103530002349244814F0E3FCECF76DFE281C14F03A -:10354000D8FE061C281C14F0E2FE011C301CFFF7FC -:10355000C9FD071C281C14F0CCFE84422CDA00267E -:10356000281C14F0C6FE864224DA321C211C281CBA -:1035700014F0B2FE07F05EFB019907F08BF809F03A -:10358000D5F90022104B07F0E5FB104B002202900A -:10359000039106F0F9FB0923002804D0029803994F -:1035A00009F052F9031C321C381C211C14F076FE61 -:1035B0000136D5E70134CDE7381C05B0F0BDC04673 -:1035C00061A8030010F802000000E03F0000224064 -:1035D000F0B587B003910592061C14F098FE041C08 -:1035E000301C14F086FE0190039814F090FE071E24 -:1035F000A74205D01B491C4814F081FCECF70BFED8 -:103600000198391CFFF76EFD00240290019B9C423B -:1036100024DA0025BD421FDA211C2A1C301C14F0BC -:103620005BFE211C04902A1C039814F055FE059B98 -:10363000002B05D0049BC318092B06DD092304E0E9 -:10364000049B1B1ADA43D21713402A1C0298211C30 -:1036500014F024FE0135DDE70134D7E7029807B006 -:10366000F0BDC0468DA8030010F80200F8B5041C98 -:10367000081C0E1C151CEEF723FA164FB84226D173 -:10368000053C042C23D8201C06F0C8F9141403218F -:103690000700281CEEF762FB07E0281CEEF75EFB34 -:1036A000011CFE20800506F003FE011C301CFFF704 -:1036B00035FF0DE0281CEEF703FAB84207D162424D -:1036C0006241301CD2B2291CFFF782FF00E00020CB -:1036D000F8BDC046140A0300F7B5071C0193142077 -:1036E00008AB0E1C151C1C780FF0B2FF044B476092 -:1036F00003606B461B798660C56003744474FEBD2D -:10370000E40C030038B5051C0C200FF0A1FF054B9D -:10371000041C456003600520011CFFF7E3FCA0606A -:10372000201C38BD500D030030B5124B8BB003ACDC -:1037300020C90138009301940323ECF787FF06A802 -:1037400061680FF003FA039B089A5900237A0093EB -:103750006868079B02F0C4FD021E05D006490748B1 -:10376000FDF712FEECF757FD06A90548F8F726FB12 -:103770000BB030BD980D0300ABA80300C0F90200E8 -:1037800048EF020030B5114B89B002AC20C90138B6 -:10379000009301940323ECF759FF606805A9012207 -:1037A000EEF738FC029B059A5900237A009368686B -:1037B000069B02F0DFFD021E05D005490548FDF716 -:1037C000E3FDECF728FD044809B030BDD00D03003F -:1037D000CEA80300C0F9020074E00200802108B501 -:1037E000C905064803F01CF9FE23FE2140029B0593 -:1037F000400A1843890507F07FF808BDC828002053 -:1038000038B50D1CEEF7AAFA041C281CEEF7A6FA30 -:10381000211C07F071F8051CFFF7E0FF011C281CB4 -:1038200006F038FF011C201C06F0C6FB032398435A -:10383000013B1843014BC01838BDC04600008080D2 -:1038400008B5FFF7CBFF03239843013B1843014B17 -:10385000C01808BD00008080F7B5019008680E1CF4 -:10386000EEF718FA019B041C1B4D012B06D1002812 -:1038700024DD281C211C03F0D3F829E07068EEF742 -:1038800009FA019B071C022B06D1844216DA011BA0 -:10389000281C03F0C5F81AE0B068EEF7FBF9061E25 -:1038A00002DDE043C01903E0002807D0381B0130D7 -:1038B000311C801906F060F9011E04DC074814F081 -:1038C00011FBECF7A8FC281C03F0AAF870430019C0 -:1038D00010F010FAFEBDC046C828002010F8020003 -:1038E00038B5094C094D002802D00868A04203D120 -:1038F000281C03F0BBF805E0EEF7F8F9011C281CC2 -:1039000015F00DFC201C38BD74E00200C828002012 -:1039100010B5041CEEF734FBEEF7BCF9011E04DC15 -:10392000074814F0DFFAECF776FC064803F078F865 -:1039300010F0E0F90422011C201CEEF737FB10BD4B -:103940006CF90200C828002038B50D1CEEF7A2F96A -:10395000041C281CEEF79EF9844204DD064814F08E -:10396000C1FAECF758FC0130011B044803F058F889 -:10397000001910F0BFF938BD10F80200C828002067 -:1039800010B5EEF787F9041E1E2C01DC002804D1C7 -:10399000094814F0A7FAECF73EFC80210748C90556 -:1039A00003F03EF8202301221B1B5242DA40104054 -:1039B00010F0BBF910BDC04610F80200C828002066 -:1039C00008B5406815F036FD024B002800D1024BC7 -:1039D000181C08BD34CD020078CD020070B5061C5D -:1039E000F7F70CFB0E4B0F4A0F4C9A620022DA627B -:1039F0000E4A5B629A630E49201C15F02EF80D4D9D -:103A0000281C04F097FD706803F018FC281C04F0D3 -:103A10009BFD201C15F010F8F7F7E0FA064870BD82 -:103A2000C828002019640100D4280020138802004F -:103A300070170000CC29002074E0020008B540682F -:103A400015F000FD004808BD74E00200F8B5094E0D -:103A50003378002B0CD1084D2C78E4B2002C07D120 -:103A6000012700682F7003685B6898472C703770D7 -:103A7000F8BDC0460E2E00200F2E002008B50348CA -:103A80000349044A13F095F8034808BD10F00200FA -:103A9000C7A40300F2A8030074E0020008B50348BD -:103AA0000349044A13F085F8034808BD10F00200EA -:103AB000C7A4030036AA030074E00200F0B51D4B52 -:103AC0008BB004AC20C90138009301940623ECF7B5 -:103AD000BDFD1723E068184E0393B04202D014F0E6 -:103AE00011FB039020691527B04202D014F00AFBA5 -:103AF000071C60691622B04202D014F003FB021CBE -:103B00006B4601201B7B0435404279B2009052B2D3 -:103B1000281C5BB201F008FD281C6168A268002324 -:103B200001F088FC281C049901F0BCFC301C0BB08F -:103B3000F0BDC0464C10030074E0020070B586B0C2 -:103B4000061C0122081C03A9EEF764FA039D2C1C35 -:103B5000049A631B0192934205D22178301D01F033 -:103B6000CDFD0134F4E7014806B070BD74E00200F9 -:103B7000F0B5141C89B00122071C081C02A9EEF73D -:103B800049FA201C002405A90222029DEEF742FA00 -:103B9000059E039B01939C4206D2295D381D01F0CE -:103BA000ADFD30550134F4E7014809B0F0BDC04621 -:103BB00074E00200F0B5051C87B048680C1C0F6863 -:103BC000EEF768F8011C02A80EF0C0FF0026032DD6 -:103BD00003D1A068EEF75EF8061C0024039B019356 -:103BE0009C4209D2049B381D311C1D19019301F020 -:103BF00085FD01342870F1E702A90248F8F7DEF8E4 -:103C000007B0F0BD48EF0200F0B5051C00248BB0F2 -:103C10001A4B1B48E158FFF781FC03AB18510434E1 -:103C20001C2CF5D1142300266B4300930024154F60 -:103C300003AB1959381C14F053FE0434281C00F04F -:103C400093F901971C2CF2D109AC02AF21680198BD -:103C500014F046FE043C281C00F086F9BC42F5D165 -:103C60000136082E05D0F307E0D4009800F07CF967 -:103C7000DCE701F033F90BB0F0BDC0463C110300A6 -:103C8000FCFF02005000002008B51920FFF7BCFF20 -:103C9000004808BD74E0020008B50430F2F734F8BB -:103CA000004808BD74E0020008B5043010F0F3F8D5 -:103CB000004808BD74E002000B1CF0B5061CC1886A -:103CC00087B0151C00681A1C0023EEF7BBF8041C13 -:103CD000002D40D0042D14D103204443B1680C19A9 -:103CE0000121627852000A43039222788A400A43F3 -:103CF0000492A3788B400B4303A90593F5F7E2FFE9 -:103D00002AE0281C032103AAEEF788F8039B186811 -:103D1000EDF7C0FF039B071C5868EDF7BBFF039B43 -:103D2000051C9868EDF7B6FFFF2F03D8FF2D01D8CB -:103D3000FF2805D909490A4814F0E1F8ECF76BFAB5 -:103D4000C0B204360090A1B2FAB2EBB2301C10F04F -:103D5000B7F8044800E0281C07B0F0BD0EAB030024 -:103D600010F8020074E0020073B51C1C081C00234C -:103D7000111C02220093131CECF736FC206814F08F -:103D8000C1F9051C6068EDF785FF041E05DC0949D3 -:103D9000094814F0B4F8ECF73EFA0C200FF058FC88 -:103DA000061C064BE9B208C0A2B2F1F783FF301C33 -:103DB00076BDC0461DAB030010F80200D41103000D -:103DC00010B50F4814F0D4FE002817D00D4814F099 -:103DD0008DFE0D4B1B68984203D10C4B9A6E1A63F3 -:103DE0000CE03F220A490B8801331340094A12882C -:103DF000934203D00A88084C0B80A05410BDC046E3 -:103E00001C2900205C29002080270020882E00200B -:103E1000E42D0020E22D0020102E0020002208B505 -:103E2000084B09481A80094B09491A8014F0A5FE6D -:103E30000122084B524208481A6014F053F8074B0D -:103E4000986608BDE42D00201C290020E22D0020EA -:103E5000C13D010080270020C8F70200882E002005 -:103E600010B5041C431C03D0034B986EFDF7ECFA0D -:103E7000024B1C6010BDC046882E00208027002009 -:103E8000034B044A1B881088181A431E9841704738 -:103E9000E22D0020E42D0020084B094A19881288E1 -:103EA000914201D130BFF7E71A880649885C3F216B -:103EB0001A8801320A401A807047C046E22D00205D -:103EC000E42D0020102E002038B5041C4518AC420B -:103ED00005D02178024814F0FEFD0134F7E738BD23 -:103EE0005C29002070B5041C4518AC420DD0237825 -:103EF000064E0A2B03D1301C0D2114F0ECFD217865 -:103F0000301C14F0E8FD0134EFE770BD5C2900209F -:103F100010B5041C002C08D0211E082900D9082146 -:103F20000248641AFFF7D0FFF4E710BD36AB030078 -:103F300038B5051C041C002C08D0211E082900D906 -:103F400008210448641AFFF7BFFFF4E7281CFFF7B5 -:103F5000DFFF38BD3FAB030008B5011C014814F07A -:103F60001DFD08BD5000002070B5002814D00B4D79 -:103F7000041C281C02F0C2FD0419061C844205D250 -:103F800030BF281C02F0BAFDB042F9D830BF281C5F -:103F900002F0B4FDA042F9D370BDC046C82800208D -:103FA0002022074B07491A701D3A5A7004329A7042 -:103FB00000220548DA7059601A725A727047C0467A -:103FC000882700207469627574E0020008B503490F -:103FD000034813F094FFECF71EF9C04654AB0300FE -:103FE00010F8020002220A4B10B5DA670022012104 -:103FF000084B5A61084A11615A69002AFCD0074CE3 -:10400000A06F002803D00FF04AFB0023A36710BD68 -:1040100004E100E0FC10004000100040882E002069 -:1040200008B5FFF7DFFF014808BDC04674E0020095 -:10403000F8B5FFF7D7FF334C2678657801360135A0 -:104040007543281C0FF004FB00222F4B451998677D -:104050002E4B80191D602E4B012118602D4B5A608C -:104060008022D20511605A68002AFCD003212A4B15 -:1040700061562A4A00259950A178043A9950617AEC -:10408000083299506168264A08269950217A254AB3 -:10409000254F99500121254A9D5004329950244AB8 -:1040A0009E5022788124A4042243A324E4001A51C0 -:1040B0000222204C1A51204C1F51204F043C1F510A -:1040C00018271F4C1F511F4C1851C120C0248000BD -:1040D0001E501D48640002510260802080001A5862 -:1040E000713CFF3C22431A50184A5560596053688E -:1040F000002BFCD00022154B1A61074B01329A604D -:10410000F8BDC04688270020882E00208427002084 -:1041100094270020FC000040001000400C05000027 -:104120001C05000024050000FFFF00002C05000016 -:1041300014050000340500003C05000021100100BA -:10414000540500000405000000E100E0FC10004000 -:1041500008B5FFF76DFF014808BDC04674E00200D6 -:10416000F0B5161C8DB0002804D07149714813F0C9 -:10417000C6FE3CE0704B09AA191CB0C9B0C21A783F -:104180009F7805925A78DD7806925A6804900192D9 -:104190001A7A5B7A0392029308E0631EFA2B00D925 -:1041A000C0E0E3B20593049B01330493049B72685F -:1041B00093421ED2049BDB000793079AB3689B18B7 -:1041C0001A68002AEFD0042AEDD05868EDF78EFD6A -:1041D000B368079A041C9858F7F748FE574B021C1F -:1041E000C01806287AD956485649FDF7CDF8ECF79D -:1041F00012F8554B09AC9B6F002B13D16B461B7DFE -:10420000A77023706B461B7EE5706370019B0A9359 -:104210006B461B7B23726B461B7A6372464B07CC43 -:1042200007C382E06B461B7D434E23706B461B7EAB -:104230006370228833889A4210D0FFF7D3FE019B27 -:10424000A7700A936B461B7BE57023726B461B7A43 -:1042500063720ECC0EC6FFF7EBFE66E002223B4B0C -:104260003B49DA6700238C464B613A4B013A1A61AD -:1042700063465B69374A002BFAD06946019809AB5F -:104280000A90087BDD701872087A9F7058722A486D -:104290006DB252CB52C0304B0298D550043BD75030 -:1042A0000833D05001982D4BD05003982C4BD05050 -:1042B0000020274B58600123536063465B68002B46 -:1042C000FBD00022C021224B49001A61214B013250 -:1042D0009A60244B01325A501A6026E005F0A8FB80 -:1042E0005DFF07000D00110016001B001D00631E7E -:1042F000FD2B17D8E3B2069355E7642C12D8E7B22A -:1043000051E7072C0ED8184B1D5D4CE7022C09D83D -:10431000E3B2029347E7019445E7FF2C02D8E3B2EA -:10432000039340E7064811495FE711480DB0F0BD1F -:1043300069AB030000FD02008827002039FDFFFF64 -:1043400010F802008DAB0300882E002004E100E08D -:10435000FC100040001000400C0500001C0500008F -:104360002405000000E100E04CAB0300A3AB030018 -:1043700074E00200F0B52B4B85B09D6F002D01D18C -:10438000FFF724FE0222A3242749E400CA67274935 -:10439000274E0C59274BE4B201342C1935681F1CE9 -:1043A0000391A54202D11A60234838E025780028FD -:1043B00004D1601C291CF7F74FFD0EE0022D26D911 -:1043C0006378012B23D1A278002A20D1E378012B36 -:1043D0001DD1201DE91EF7F727FD691CED43336849 -:1043E00061185A1A0190201C029316F00EFF029BCE -:1043F000039A5D19114B3560D5500022104B01987E -:104400001A610123039A9360DB183B6007E00223E3 -:104410000C493B600C4813F072FDEBF7FCFE05B055 -:10442000F0BDC046882E002004E100E000100040EE -:104430009427002000E100E074E002000405000081 -:10444000FC100040C8AB030010F80200184B30B558 -:104450005A681849002A03D000225A6001328A6043 -:104460001B69002B22D00022114B13481A61A32391 -:10447000104ADB000468D3582278DBB29A4201D993 -:104480001A1C23708025ED004D59012D0CD10B4DC8 -:1044900002339B182D68E3189D4205D30132A21800 -:1044A0000260074B0348C25001238B6030BDC046F9 -:1044B000FC100040001000409427002084270020BA -:1044C00004050000F7B5364D0C1CA96F8446019217 -:1044D0001E1C002901D1FFF779FDA3233148DB0021 -:1044E000C258A319D2B2071C934204D9161B944296 -:1044F00001D9141C002633190B70AB6F6146581C90 -:10450000221C16F079FE002E06D0AB6F013418196C -:104510000199321C16F070FE0222234BDA6700224A -:10452000224B5A6101323A615A691E49002AFBD076 -:104530000024A86F1E4A88501C484460012008606F -:10454000111C5A68002AFCD00120164A90600020F5 -:10455000164A10611869134A0028FBD015480068F4 -:104560005050002011494861012111615A69002A07 -:10457000FCD000210D4A51600A4A013151605A684D -:10458000002AFCD00022C021084B49001A61054BCB -:1045900001329A60084B01325A501A60F7BDC0468A -:1045A000882E00200010004004E100E0FC100040D4 -:1045B000040500009427002000E100E007B501A9F0 -:1045C000F8F7EAF80321021C019B0248FFF77AFF83 -:1045D00001480EBD48AB030074E002001FB5012284 -:1045E00001A9EDF717FD002201980299131CFFF7AE -:1045F00069FF014805B000BD74E002007822044B59 -:1046000004481A80743A5A801A715A717047C04629 -:10461000F800002074E0020013B5074C20880FF06A -:1046200069FB009060880FF065FB694601900220ED -:10463000F5F748FB16BDC046F800002008B5031E7C -:10464000064802D00868FEF7BFF8002104F0D2F84F -:104650000022034B03481A7008BDC046302B0020CF -:10466000502E002074E002001FB50A4B02AC0093EC -:1046700001940223EBF7EAFF029B002B01D0064ACC -:1046800053806368002B01D0034A1380034804B0B1 -:1046900010BDC04604140300F800002074E00200BE -:1046A00008B5074B1A78002A09D0064A126B002A6F -:1046B000F7D000211970044B186804F09BF808BD6E -:1046C000502E0020882E002098270020F0B51B4B8C -:1046D00087B002AE009301960423EBF7B7FFB068F2 -:1046E0007568029FFEF770F88021041C367B04F089 -:1046F00081F8391C124805F0AFF9011C201C04F0A8 -:10470000E1F8002D17DB00230E4A0F4912680B70E9 -:10471000AD180E4A15600E4A13700E4A13800E4AE9 -:1047200013800E4A53670E4B1C6002230B70002E41 -:1047300001D0FFF7B5FF0B4807B0F0BDA014030090 -:1047400040420F00FC2C0020502E00209C2700200F -:10475000512E0020E82D0020E62D0020882E00207C -:104760009827002074E0020030B5224B89B004ACD9 -:10477000009301940423EBF769FF04221E4B049875 -:104780001A715A711D4B0340062B06D0830729D19D -:1047900003689A691A4B9A4224D101230394029325 -:1047A0006068FEF711F800221649174B0D6817498B -:1047B0001A700D60257B16490D701649029D0D80FB -:1047C00015490A800399154A012D00D109685167DE -:1047D000134A106001221A70237A002B07D0FFF7CA -:1047E0005FFF04E002A903AAEDF7F6FAD8E70D4847 -:1047F00009B030BD40140300F8000020070080FF1E -:1048000079CD0000FC2C0020502E00209C27002099 -:10481000512E0020E82D0020E62D0020882E0020BB -:104820009827002074E00200F0B5724C87B023781E -:10483000002B00D1DBE0704D704E2A6833682F1CCE -:10484000934200D2D3E02378022B0AD16C4B002193 -:10485000186803F0CFFF33680A332B6001232370FD -:10486000C5E0644B1B78012B00D0C0E0654B198874 -:10487000654B1A888A4208D3644A1278002A02D00B -:1048800000221A8001E02270B1E0614A012901D1C1 -:10489000506F03E01B88526F9B0098585D4B584C3B -:1048A0005D4D98420CD10021206803F0A3FF2988B8 -:1048B0005A4805F061F901234E4A3860137096E0BA -:1048C00005A9F7F769FF2768059B061C8021381C9E -:1048D000009303F08FFF1F23347829884F481C4032 -:1048E00005F04AF9698805F047F9009B013CE4B2FC -:1048F0000290012B10D97378232B09D0622B0BD196 -:10490000002C04D0013CE4B2012C09D000E00624C4 -:1049100002230120002206E000200123019003E091 -:104920000223201CFF220192009A934207D2F25CDC -:104930003A2A04D00F2101330A402A71DBB2364AE9 -:10494000944612790392009A934217D2F15C3A2965 -:1049500014D1591CC9B2914210D2755C0F21624624 -:104960000D4055710233009ADBB2934206D20A22FF -:10497000F35C5543194063466D185D71092C1DD8D1 -:104980000399019B0439CA1852B2640000280CD064 -:10499000234B002A01DB195B0BE01B5B51428B4070 -:1049A000191C381C03F08EFF0CE01E4B195B002A0B -:1049B00001DB1141F5E752429140F2E7381C00213A -:1049C00003F018FF6B461A7A134B5B7953430A3B8B -:1049D000092B00DC0A23094A12689B18064A136057 -:1049E000094A1388013313800222024B1A7007B060 -:1049F000F0BDC046502E00209C270020FC2C00203B -:104A000098270020E82D0020E62D0020512E0020C0 -:104A1000882E002074E00200F800002060EA000008 -:104A20004C2403003E2403000023FA21084A890095 -:104A30001360084A1370084A1360084A1160084A54 -:104A40001370084AD36613670122074B1A70704728 -:104A5000A0270020522E0020A42700204C00002078 -:104A6000542E0020882E0020532E002008B5084B1D -:104A70001A78002A08D1074B1B6B002B02D0FFF7D6 -:104A8000D3FF03E030BFF2E700221A7008BDC04632 -:104A9000532E0020882E0020012383770048704782 -:104AA00074E002000023E021A0228377024B090278 -:104AB000D2050248D15070470C05000074E0020096 -:104AC000837F0248002B00D10148704734CD02009B -:104AD00078CD020010B5A0241049E4054B7F081CD6 -:104AE0005A1C002B05D1498C0D4B8B430D4963504B -:104AF0000EE010335B00CB185988A123DB00E15096 -:104B0000092A05D10120F6F761FB0120404203E0AC -:104B1000054B42775200D05A10BDC04650000020CD -:104B2000F01F00000C0500005A24030073B51B4D54 -:104B3000041EEE6E09D11A4D2B78002B2BD019488C -:104B4000194913F0CDFE2C7027E0ECF7B9FF174B95 -:104B5000984202D1301C211C15E0154B2340062B36 -:104B600005D0A30712D1134B22689A420ED1201C04 -:104B700001A9F7F711FE019B012B0CD1007813F06E -:104B80003CFE011C301C13F0ABFE06E00A480B494A -:104B900013F0B5F92863FFF747FF73BD882E002097 -:104BA000542E002050000020000A0300140A0300C5 -:104BB000070080FF80CA020000FD0200E8AB03008E -:104BC000F7B5A123A021214AC905DB00CA50012263 -:104BD000C37F1F4D0D339A404A51C37F0195013366 -:104BE000DBB2032B00D10023C377011C031C363139 -:104BF000223300221A8002338B42FAD1C77F154933 -:104C00007B000133CB18591E0E7805217143012614 -:104C1000351C1C78063309190F4C6118141DA5406A -:104C20002C1C09799219490041184D8C2C434C8455 -:104C3000092AE8D10D37A023A122BE40DB05D2000E -:104C40009E50828E01995A50F7BDC046F01F000059 -:104C50000C0500000BAC03005000002070B5304C78 -:104C60008CB0A37F002B59D0201CFFF7A9FF2D4A41 -:104C70002D4913680968063313608B4241D3002520 -:104C80002A4B15601B78012B06D0022B39D1201C32 -:104C9000274913F025FE32E0264BDA6E1E1C002A4F -:104CA0002DD01B6F002B2AD0F1F7BCFF6846EBF725 -:104CB00097FA002809D1204B1868F3F781FA051CF0 -:104CC000EBF7A4FAF1F7B6FF15E0F1F7B3FF019B9C -:104CD0001A491868F6F70EFF00280CD10198ECF776 -:104CE000EFFE174B984203D11648174911F061FFA8 -:104CF0000025019B3363281CFFF718FF01E0FFF735 -:104D000093FE0023228C6377FF33FF331A4205D0D2 -:104D1000E12201200D49D200F6F724FA0CB070BD53 -:104D200050000020A42700204C000020522E00201C -:104D3000000A0300882E0020A0270020BCFA0200F1 -:104D400090F8020010F00200F6A60300D54A010018 -:104D5000F7B50024009308AB124D1B78061C081C05 -:104D6000171C0193EC662C67F3F702FA6A460E4BA8 -:104D7000127818600D4BEE661F600D4B28671A7095 -:104D80000C4B1C70F3F71CFAFFF7D0FE01220A4B04 -:104D90001C600A4B1A70019BA34201D0FFF766FE0C -:104DA000F7BDC046882E0020A02700204C00002020 -:104DB000542E0020532E0020A4270020522E002025 -:104DC000F0B500242C4B8DB0DC661C672B4B07AC78 -:104DD00040C90138009301940523EBF737FC07988D -:104DE000636805900293237B257A0393244B277CE9 -:104DF0000340062B05D0830718D1224B02689A4244 -:104E000014D106A9F7F7C8FC069B002B30D0012B64 -:104E100008D1002D06D1002F04D1007813F0EDFC4D -:104E2000059021E00598FEF76DFC0AE0ECF748FEDE -:104E3000154B984206D1002D14D0012005A9F4F796 -:104E400041FF0590237C002B03D00598EEF72EFF41 -:104E50000590039B301C00930599029A2B1CFFF7C9 -:104E600077FF05E0002FE8D1301C059913F038FDDD -:104E700006480DB0F0BDC046882E00201C1503006A -:104E8000070080FF80CA0200140A030074E00200D9 -:104E900030B5104B89B003AC20C9013800930194A0 -:104EA0000523EBF7D3FB02A90398F7F775FC227CE7 -:104EB000237B02990092039AFEF70EFC237A011CD1 -:104EC0000093281C62680023FFF742FF024809B0E4 -:104ED00030BDC046EC15030074E00200002208B5A6 -:104EE000064B1A70064B02321A70064B064A1B68B4 -:104EF000063B1360FFF7BAFD08BDC046532E0020E5 -:104F0000522E00204C000020A427002008B5FFF7F7 -:104F1000E5FF014808BDC04674E0020010B5042951 -:104F200001D8042A02D90B480B4903E0092B05D903 -:104F300008480A4912F0E3FFEBF76DF905246143D5 -:104F40008A188218137101229A40131C028C134391 -:104F5000038410BD10F80200F6AB0300A8A70300FD -:104F6000F8B548680C1C0F68ECF794FE061CA068A6 -:104F7000ECF790FE051CE068ECF78CFE311C031C7E -:104F80002A1C381CFFF7CAFF0048F8BD74E0020075 -:104F900008B5042901D8042A05D90649064812F0A3 -:104FA000AEFFEBF738F9052359438A1880180079CA -:104FB00008BDC046F6AB030010F8020008B5064B6A -:104FC0001A680823D16C0B43D364FDF70FFAFDF781 -:104FD000FBFAF4F71BF9FCE7EC2C002008B50948B4 -:104FE00003F0B2FA13F004FDEFF75CF9064813F092 -:104FF00023FD0648F6F714F8F5F7F0FFF0F704F98B -:1050000008BDC046CC290020D42800201150010042 -:1050100038B5114C201C14F011FA002803D00F4BA6 -:105020001B78002B14D000230D4A0E4C13700E4A2F -:105030000E4D13702068002802D003681B68984743 -:105040000434AC42F6D1FFF709FEFFF7EDFB38BDA3 -:10505000201C14F06FF9E6E7E02A00200F2E002054 -:105060000E2E0020742900200A2E00209C290020EA -:1050700010B5041C044B0833036013F0DDFC201C46 -:1050800000F04EF8201C10BD18B602001FB5041C1D -:1050900000F044FF0B4B01A81A1C3C336360002353 -:1050A0000832636122600849221C0CF0B5FE0749F2 -:1050B00001A80BF0E3FE606113F0BFFD201C04B0FB -:1050C00010BDC04630B6020041AC030045AC030041 -:1050D000074B10B51A1C041C08323C3302604360B5 -:1050E00040690BF05BFD201C00F02CFF201C10BD64 -:1050F00030B60200084B10B508330360002343604C -:105100008360C360041C00F065F90449206113F05A -:105110001EFE201C10BDC04678B60200FF8A0200A9 -:1051200010B5041C034B0833036013F0F5FC201C7E -:1051300010BDC04678B6020038B50C4B041C0360A5 -:10514000002343608360C3600362436283639623EA -:10515000051D9B01C363281C00F0CEFD281C0449DB -:10516000221C00F065FE201C38BDC04698B6020027 -:10517000278B020008B5054B1B68002B04D104489F -:105180001821192200F0B8FD08BDC046B82800203B -:10519000CC2F0020074B083303600023064A9958A0 -:1051A000814201D100219950802204335200934260 -:1051B000F4D17047A0B60200A8270020F0B50F1C5C -:1051C00085B02F49051C16F02FF9041E02D1FFF7F8 -:1051D000D1FF52E0281C2B4916F026F9002803D1F4 -:1051E000FFF7C8FF012448E0281C274916F01CF9E6 -:1051F0000024A04206D1FFF7BDFF02343DE0013498 -:10520000402C0FD0214BA600F2580193002AF6D172 -:105210000BE002A8291C13F0C8FE02A813F011FF2E -:1052200000280CD10124644227E02B783A2BF0D1DE -:10523000281C174902AA0CF011FE029818E002A8D7 -:1052400013F0E9FE002803D002A813F0EEFE0FE0F1 -:1052500002A813F0D7FE051EE4D0036802A89B68DD -:10526000009313F0C2FE3A1C011C009B281C9847B7 -:105270000028D7D0019B03349851201C05B0F0BD05 -:1052800048AC030057AC03004FAC0300A827002034 -:1052900041AC030008B5031C0020022B0DDD0749BB -:1052A000033B9B005A585850824204D01368101C8C -:1052B0005B68984701E00120404208BDA827002014 -:1052C00070B50C1C151C022810DC0F4B1B68002B42 -:1052D00001D1FFF74FFF6619B44205D021780B4882 -:1052E00000F0F6FD0134F7E7281C0BE00338084B0B -:1052F0008000C058002803D003681B68984701E06D -:105300000120404270BDC046B8280020CC2F0020AC -:10531000A827002010B50C1C02280BDC0C4B1B68C6 -:10532000002B01D1FFF726FF0A4813F017FE20706B -:1053300001200BE00338084B8000C058002803D040 -:1053400003689B68984701E00120404210BDC046B9 -:10535000B8280020CC2F0020A827002008B5031C67 -:105360000120022B0BDD033B054A9B0098580028C7 -:1053700003D00368DB68984701E00120404208BD84 -:10538000A827002008B5031C0020022B0BDD033BDF -:1053900005489B001858002803D003681B699847EC -:1053A00001E00120404208BDA8270020074A1368F9 -:1053B0001818EFF30881884205D30C220120044B12 -:1053C00040421A6001E01060181C704788000020FD -:1053D000D42F0020004870474816030008B5024843 -:1053E00013F0BEFC08BDC04648160300084802681A -:1053F00003210A4302600749074A084B9B1A03DD51 -:10540000043BC858D050FBDC05488047054800479E -:1054100024050040ACB1030000000020280100205A -:10542000695F010075010000FEE7FEE7FEE7FEE7A9 -:10543000FEE7FEE770B51D1CA023041C161CDB0054 -:10544000002D03D000224068C25001E00268D55010 -:10545000082902D0104813F02CFC032E0AD8301C67 -:1054600004F0DCFA0B020406022307E0042305E043 -:10547000062303E0094813F01CFC0023A02208487F -:10548000D200002D03D061680B50022302E0216896 -:105490000B5001238B5070BD5FAC030078AC030050 -:1054A00054050000036810B55A1C2ED0A02200201D -:1054B000164CD2009850101C154AA14202DC8021E3 -:1054C00089041FE0134CA14202DC8021C90419E0C9 -:1054D000114CA14202DC8021090513E00F4CA142CE -:1054E00002DC802149050DE00D4CA14202DC802147 -:1054F000890507E00B4CA14202DC8021C90501E0CF -:1055000080210906995001221A5010BD8FD0030046 -:10551000240500001FA107003F420F007F841E00EA -:10552000FF083D00FF117A00F7B5009308AB1B7828 -:10553000051C5BB20F1C161C0193013329D1624B71 -:105540001A78022A10D15978FAB291420CD199787E -:10555000F2B2914208D1DA786B461B789A4203D1B5 -:1055600001235A4C03723BE0594A1378DBB2022BF9 -:105570000FD15078F9B288420BD19078F1B28842BD -:1055800007D1D1786A461278914202D12B72514CE0 -:1055900026E04F4B1A78002A0BD10232F9B21A706A -:1055A0005970F1B29970694609782A72D970494CDC -:1055B00013E0454B1A78002A0CD102321A70FAB265 -:1055C0005A70F2B29A706A461278404CDA7001232F -:1055D0002B7202E0404813F06CFB019B01332ED18B -:1055E00001235B426B60012000233C4A391C2C6084 -:1055F000A350A050A022C131FF31D20589008850AC -:10560000374967500099C131FF3189008850A12185 -:105610000098C9006050311CC131FF3189008B50A6 -:10562000A222D200A650FC34281CE36008211A1CD8 -:10563000FFF700FF281C2B49FFF734FF42E001234E -:1056400000225B422B60254B6C60E2500123234912 -:10565000381C6350A021C130FF30C9058000425082 -:10566000301CC130FF30800042500098C130FF3004 -:10567000800042500198C130FF3080004250A2218A -:10568000C9006750164900986650043960501649A1 -:1056900001986050211CFC318A60CA62A721C900B0 -:1056A000635010316350114811496050114912483C -:1056B00060508021042089006050F939281CFF398E -:1056C000FFF7B8FEF7BDC046572E0020003000405F -:1056D0005B2E00200040004089AC0300FC0F00005E -:1056E0000C05000040420F0014050000562E00205B -:1056F0004405000034050000552E002003681A1CE4 -:10570000FC32D0680028FAD105481950D168012927 -:10571000FCD10021D160A322D20098587047C04626 -:105720001C050000084B0068C150084B021CFC32ED -:10573000116A002904D1013B002BF7D1012001E0BF -:10574000002010627047C0461C050000A1860100C1 -:1057500010B50368002A03D08022022092009850DE -:1057600001221A62084A1C1CFC34E068002804D19B -:10577000013A002AF7D1012005E00020A322E060D1 -:10578000D2009B580B7010BDA186010010B50B4CC8 -:1057900002680B4BA14204DC0A498160CC21490418 -:1057A0000AE0094CA14203DC08498160802102E043 -:1057B00007498160CD21C904D15010BD8FD00300AD -:1057C00024050000A08601007F1A060090D0030087 -:1057D000801A060070B5041C101CA025C026C1301C -:1057E000FF30F600ED0580004651081CC130FF3047 -:1057F00080004651A1252068ED004251054A8150A4 -:10580000191C201CFFF7C2FFA02305212268DB0022 -:10581000D15070BD0C050000F8B50E1C151C041C01 -:1058200000F0FEF82648F2B20378011CDBB2012B2F -:1058300006D14778974203D18778E8B2874211D0E2 -:105840002048EFB20378012B05D14378934202D16F -:105850008078B84211D00878002806D101230B7057 -:105860004A708F706373184B15E0164B1978002936 -:1058700007D1013119705A709F7002236373134B63 -:1058800009E0134813F015FA0023FC222360657128 -:1058900026719362FFDE191C0022FC3123606571C2 -:1058A00026718A62A021C9005A500A49201C5A5008 -:1058B00001325A50311C2A1C074BFFF78BFFF8BDF1 -:1058C000572E00205B2E002000300040004000409A -:1058D0009AAC0300FC0F0000A0860100026808B526 -:1058E000031C101C0021FC308162A020C00011505C -:1058F00006481150013111500421052259569A567B -:10590000181C9B68FFF766FF08BDC046FC0F00002F -:10591000036800211A1CFC3210B5916001315961F5 -:10592000074B9168002904D1013B002BF9D10120DC -:1059300004E000240473FFF7D1FF201C10BDC04613 -:10594000A1860100036810B5191CFC318A6A002089 -:10595000012A08D1044C1C5988625A610238A407F4 -:1059600001D40120404210BDC4040000A023F0B5C2 -:10597000284FDB00FA5885B001920022A024FA508B -:10598000E023254AE405DB00E658E2507833E1588D -:1059900001250291E250A1238022DB00D205E250D2 -:1059A0000420E55013F0B0FAA222D200A3580397C6 -:1059B0009B0F2B4205D0A35813242B4202D0012069 -:1059C00018E01324013C002C13D0A0250127134B11 -:1059D000ED05EF50042013F097FAA123DB00EF5000 -:1059E000042013F091FAA223DB00EB585B00E9D509 -:1059F000E5E7201CA023E0220299DB05D2009E509F -:105A000078329950A023039A0199DB00D15005B058 -:105A1000F0BDC046004000400D0600000C0500002F -:105A2000A023E021134ADB05C90010B55A50783194 -:105A30005A50114B0022191CFC31CA600A62A12184 -:105A40001E20C9005A500D4A0D4C9850CC200D4ACA -:105A500040049850A2200C4AC00014500B4C0C4833 -:105A6000145001205050A0220521D2009950FFF778 -:105A70007DFF10BD0C060000004000400C0500003A -:105A8000384100402405000000F001401C40004067 -:105A9000140500000A480B4982680B4B002A08D005 -:105AA0001A6801321A6000228260D222022092001B -:105AB0008850064A1B688858190A1B061843704705 -:105AC000FC10014000100140B42800200405000033 -:105AD000174B70B59A68002A0AD0164902200A6846 -:105AE00001320A6000229A60D22213499200885043 -:105AF0005B6C114C002B19D0104E3378002B15D055 -:105B00000F4B1D68FFF7C6FF2D1A002D0EDC00217C -:105B1000074BD2225964802392005B02A35031705C -:105B2000C22189006350A350FFF758FC70BDC046E6 -:105B3000FC100140B428002000100140602E00201D -:105B4000B028002038B5124C2378002B1ED1A1219B -:105B5000C420104AC9005350C1390233FF39535091 -:105B6000443953500C4980000D580C4B2B40C02534 -:105B70002D022B430B508023012591389B02FF38C7 -:105B80000B500B60156013F0D6F9257038BDC04678 -:105B90005F2E00200010014000E100E0FF00FFFF49 -:105BA00008B5084B1B78002B01D1FFF7CBFFFFF79F -:105BB00071FF054A002304F069F94904C00B08434A -:105BC00008BDC0465F2E002040420F00F8B5284BAC -:105BD000041C1B78002B01D1FFF7B4FFFFF75AFF1D -:105BE000244A002304F052F94B04C00BCF0B184396 -:105BF0000026221C0023802192197B41090688423D -:105C000005D9002C03DB0020012112184B41D903D8 -:105C10000023540CD003184A214380185941002313 -:105C2000144A04F013F9154D041C2B78144E002B64 -:105C300002D0336898421AD0FFF72CFF201A0228AE -:105C400002DCFFF727FF841CA82122020D4B120A59 -:105C5000C9005A502A783460002A08D101322A70CB -:105C60008022F9395202FF395A5044395A50F8BD4E -:105C70005F2E002040420F003F420F00602E0020A8 -:105C8000B028002000100140074B1A78002A09D0E4 -:105C90008021C220054A4902800011504030115035 -:105CA00000221A707047C046602E0020001001408C -:105CB0000022024B9A605A647047C046FC100140B3 -:105CC000012310B50A4ADC00A458A14207DA013BBF -:105CD000DB00D3185A680168064BCA5007E001334D -:105CE000112BEFD180210268024B4905D15010BD24 -:105CF0005016030024050000F8B50F1C0121254BA8 -:105D0000B9400360A023244CDB05161C1A59051C5E -:105D10000A4380211A511A5909060A430121B14048 -:105D20001A511A598A4396211A511A598901520057 -:105D300052081A51FFF7C4FF002204202B681749AC -:105D40005A506C395850012199601960191CFC3166 -:105D5000CA6013495A506A6014391F325A501149A7 -:105D60005F5009185A501E517B1C03D0381C032168 -:105D700013F06CF9731C03D0301C032113F066F987 -:105D80000122094B291C1A600848073215F034FA21 -:105D9000F8BDC04600200040140500006C0500005E -:105DA0001C0500000C050000B8280020CC2F0020A6 -:105DB00008B59623DB00994202DDFFF781FF04E07E -:105DC0009E210268014BC902D15008BD2405000084 -:105DD0000168034B002A00D00E22CA507047C0460B -:105DE0006C05000008B5C1230D4A9B00D158090677 -:105DF00003D50C49096A002908D1D3585B070DD592 -:105E0000084B0021DB68002B01D107E00121064B84 -:105E10001868002802D0054B1B68984708BDC0468B -:105E200000200040FC200040BC280020C0280020AA -:105E3000034B1960436803499B005A507047C046A2 -:105E4000C0280020BC28002000681E4B70B5C31875 -:105E50005C4263415B00002A1AD0002903D001296B -:105E600005D1802100E00421C12292008150FF254C -:105E7000C021C0245BB2DE00B540B1401248A4008E -:105E80000259AA430A43025101229A40026018E0D3 -:105E9000002908D0012914D1C22280249200845004 -:105EA0008258920806E0C222042192008150825852 -:105EB0000339D209914304D001229A40131C034AAA -:105EC000D36770BD00E0FFBF00E100E004E100E047 -:105ED00003681A1CFC32106A0128FAD100201062F3 -:105EE000014AC9B2995070471C05000001704B1C53 -:105EF0000AD001238B404360044BC360044B036111 -:105F0000044B4361044B83607047C0460805005052 -:105F10000C0500501005005014050050074B10B53B -:105F20000022041C08C000F091F8054B201C1A1C2C -:105F3000343308322260636010BDC046A8B6020048 -:105F4000D0B60200074B10B51A1C041C08323433BB -:105F500002604360043000F05FF8201CFFF71AF97C -:105F6000201C10BDD0B60200234A10B51378111CB6 -:105F7000012B19D1214B1B681B0715D1204BE024A5 -:105F80001A68F023101C184022420BD11D4A1268D7 -:105F90001A4209D11C4A1D4B1A6080221C4B120266 -:105FA0001A6001E03028F1D00B68DBB2012B0DD173 -:105FB000124A1268120709D1F021114A12680A40E8 -:105FC000402A03D10F4A12680A420DD08022A3232F -:105FD0000021D205DB00D1500E4B99600131916058 -:105FE0009A68002AFCD005E0C1228021D200C905B0 -:105FF0008B50EBE710BDC046E00F00F0E40F00F05F -:10600000E80F00F0EC0F00F0DFFF07C004050040D0 -:10601000186C0040FC0000400A4B083303608368A2 -:10602000002B0DD0084A1368834202D143681360E5 -:1060300006E05A68824201D0131CFAE742685A60AF -:106040007047C04610B70200C4280020064B81608C -:1060500008330360002302734360994203D0034B6B -:106060001A6818604260704710B70200C428002008 -:10607000F8B5071C0E1C0B4B1C68002C10D0A56833 -:10608000002D0BD0281C391C321C15F0DEF900281D -:1060900004D1281C15F0D2F9B04201D06468ECE7B5 -:1060A000201CF8BDC428002037B51C4C0321201C3F -:1060B00014F01BFF1A49201C14F01CFF02F05CFCBA -:1060C00001F042FA174D281C00F078FD6421281CCD -:1060D00000F070FA01A814F01FFD01A802F0D6FC30 -:1060E000114B0268041C9A4210D1436B002B05D15E -:1060F000836B002B02D1C36B002B07D086239B0040 -:10610000E818616BA26BE36B01F040F9201C02F010 -:106110006BFCFEF753FF01F087FBFEE7982C002095 -:1061200081690100C8280020FECAFECA10B5041CFF -:10613000054B0360054B40300360054B4360FEF7A1 -:10614000C7FF201C10BDC046C8B80200E0B802005E -:1061500014B9020008B4024B9C46403808BC6047A2 -:106160002D61010008B4024B9C46443808BC6047CE -:106170002D61010010B5041C044B0360044B036443 -:10618000044B4364FFF7D2FF201C10BD28B7020068 -:1061900040B7020074B7020008B4024B9C46403876 -:1061A00008BC60477561010008B4024B9C46443846 -:1061B00008BC60477561010010B5041CFFF7DAFFE9 -:1061C000201C02F011FC201C10BD08B4024B9C46A0 -:1061D000403808BC6047C046B961010008B4024BB2 -:1061E0009C46443808BC6047B961010010B5041CE6 -:1061F000FFF79CFF201C02F0F7FB201C10BD08B429 -:10620000024B9C46403808BC6047C046ED61010027 -:1062100008B4024B9C46443808BC6047ED6101005D -:1062200038B50A4D281C00F039F9094C281C221CED -:10623000084914F0D0FE084D1321281C03F056F82D -:10624000281C0649221C14F0C6FE38BDC8280020B0 -:106250000000002061620100982C0020D59201000E -:1062600038B5E6231C4A9B00C2501433041CC018E6 -:1062700013F062F9EA239B00E01813F05DF986231E -:106280009B00E01800F0DCFE201CDD30FF3001F048 -:106290003BFB201CA530FF3000F04CFD201C7D3066 -:1062A000FF3000F047FD601DFF3001F05FFF201C54 -:1062B000EC3000F081FD201C251C5430FFF75AFF04 -:1062C000064B0C35281CE36012F0B6FB281CFEF7C9 -:1062D00027FF201C38BDC04668B8020020B6020067 -:1062E000F0B51F1C85B00AAB1B78041C0393009308 -:1062F0003B1C0D1C161C14F046FE002832D0237DDA -:10630000082B2DD823680022191CFC318A62A02199 -:106310001648C9005A5084461A5005200138C04614 -:10632000C046C046C046C046C046C046C046C0463D -:10633000C046C046C046F1D101206246236898504D -:1063400005225A50FFF76CFB039B201C0093291C6D -:106350003B1C321C14F017FE237D01332375CCE760 -:10636000034800E0207505B0F0BDC046FC0F0000FA -:106370000EFCFFFFF0B51F1C85B00AAB1B78041C98 -:10638000039300933B1C0D1C161C14F0E4FD002825 -:1063900032D0237D082B2DD823680022191CFC3114 -:1063A0008A62A0211648C9005A5084461A50052016 -:1063B0000138C046C046C046C046C046C046C0467A -:1063C000C046C046C046C046C046F1D10120624624 -:1063D0002368985005225A50FFF722FB039B201C8C -:1063E0000093291C3B1C321C14F0B5FD237D0133A6 -:1063F0002375CCE7034800E0207505B0F0BDC0462A -:10640000FC0F00000EFCFFFF024B1B6803607E23A5 -:10641000436070478C000020F8B5144B051C9B6846 -:10642000DB0701D501F0CCF82E1C2F1CD436341C10 -:10643000EC372068002815D003689B68984700282F -:1064400010D001210A4A13780B4313702C1CAC3472 -:106450002068002802D003681B6898470434B442BF -:10646000F6D1F8BD0434BC42E3D1EFE7C8280020E0 -:10647000612E0020BFF34F8F024A034BDA60BFF357 -:106480004F8FFEE70400FA0500ED00E008B5011C9F -:10649000014802F063F808BDCC29002030B5002582 -:1064A000041C91B085600C30FEF724FE201C404B8C -:1064B0002A1CE3606562A5631E213C3012F0F3FDE7 -:1064C000201C18211922543002F008FA201CEC304C -:1064D00000F082FC0522601D131C0621FF3001F034 -:1064E0006DFE201C01217D300B1C00951122FF3018 -:1064F00000F030FC201CA530009502211A22012357 -:10650000FF3000F027FC201CCD3002231A2101228D -:10651000FF3002F075FC201CDD3004213A22FF30F0 -:1065200001F09AFA86239B00E0181D22052100F055 -:1065300053FE95239B00E0181C2101F0CBFB9A230E -:106540009B00E0180A230093013301930133029367 -:10655000013303930133049301330593013306930D -:1065600001330793013308930133099301330A93ED -:1065700001330B9301330C9301330D9301330E93CD -:10658000013308220F930721103B13F057FFE62336 -:106590009B00E01802F0E0FAEC239B00E0181D21BC -:1065A00002F0F4FAF323201C9B00E55011B030BD3B -:1065B00020B6020010B500290DDB012380681840C9 -:1065C000041C081C002C03D001F0D6F8002003E0C6 -:1065D00012F0B6FBFAE7014810BDC04617FCFFFFFA -:1065E000F0B5A7B00490069107920C2104220BA8E5 -:1065F00012F0DAFFDA49242219311DA814F0FCFD4B -:10660000052108A80A1C13F0C1FFD64909A801F00A -:1066100039FC049B6E245D1DFF35281C01F0E2FE51 -:10662000D1491AA801F046F91AA97822281C01F0CC -:106630005BFF1AA812F080FF04987D30FF3012F043 -:10664000C2FD002807D10498A530FF3012F0BBFD31 -:10665000002800D17AE1281C01F0C4FE281C14F0A7 -:1066600067F90024C14F0121381C13F05CFE0121A1 -:10667000061C381C13F065FE0022BD4B03929E429F -:1066800010DB01320392321CC8320BDB042203926E -:10669000C8229200964205DC03220392C82E01DC38 -:1066A000013A039200220292984210DB01230293E6 -:1066B000031CC8330BDB04230293C8239B009842BE -:1066C00005DC03230293C82801DC013B0293652704 -:1066D00008A813F052FF04ABFF183E1C7378002B80 -:1066E00006D0731E1978327808A8FF2301F060FBEA -:1066F000892304AA03369B189E42EFD16B460C21D6 -:10670000595E6B4608A808229A5EFF2301F050FBF1 -:1067100000239848009308A91A1C13F03EFF7B1E23 -:106720001B78039A93423AD13B78029A934236D12E -:106730007E78002E33D1862292009446049B311C31 -:106740006344181C059312F015FE04F073FA321C12 -:10675000031C211C0BA812F072FF311C059812F0CB -:1067600016FE04F067FA0122031C211C0BA812F08C -:1067700066FF311C059812F017FE04F05BFA211C2D -:10678000031C02220BA812F05AFFFE23211C9B05BA -:106790000BA8032212F053FF01237B70E418892316 -:1067A00004AA03379B189F42B9D173486421FFF7AD -:1067B00001FF0B2C00DC55E70BA812F02CFF012287 -:1067C000011C0EA812F0F0FE00240BA812F023FF0B -:1067D00084423EDA211C00220BA812F01EFF211C6D -:1067E000061C00220BA812F018FF011C301C03F03D -:1067F00051FF211C061C01220BA812F00EFF0122E2 -:10680000071C211C0BA812F008FF011C381C03F008 -:1068100041FF011C301C03F0CFFB211C061C02228F -:106820000BA812F0FAFE0222211C071C0BA812F082 -:10683000F4FE011C381C03F02DFF011C301C03F07A -:10684000BBFB211C031C00220EA812F0F8FE013431 -:10685000BBE70BA90A1C01231AA813F0BDFC1AA957 -:1068600011A812F006FF1AA812F0FAFE14A80BA93C -:106870000EAA012313F0B0FC002317A811A914AA33 -:1068800013F0AAFC002117A80A1C12F0C6FE012171 -:10689000061C002217A812F0C0FE0022041C0221D0 -:1068A00017A812F0BAFEFC21071C8905301C03F062 -:1068B000F1FE04F09FF9FC21061C1A908905201CAA -:1068C00003F0E8FE04F096F9FC21041C1B908905F6 -:1068D000381C03F0DFFE04F08DF9862189008C4618 -:1068E000049A031C6244311C1C90101C221C00F0F2 -:1068F0004DFD281C14F01CF809A90AA813F035FE58 -:1069000000231E4A00930AA90192281C1A1C01F0B8 -:10691000B9FD0AA813F01CFE281C14F009F817A8EA -:1069200012F09EFE14A812F09BFE11A812F098FE21 -:106930000EA812F095FE09A813F00AFE08A813F09D -:1069400007FE0BA812F08CFE27B0F0BD049864215E -:10695000013CFFF72FFE002C00D06DE67BE6C04621 -:1069600086AE0300C3AE030008AF0300A42A0020D4 -:10697000E0FCFFFF402A0020C8280020DC050000C2 -:10698000F0B5F324214DA40028598DB0002835D04E -:1069900002F048FB836D9B0730D52C5902AE0C22C8 -:1069A0000021301C14F045FC201C02F04BFB07AC0E -:1069B000231C174F0190029707CE07C3142001F044 -:1069C000EFFF031C079746CC46C3124BC36000235E -:1069D0000361019BA4331A68002A00D00261186089 -:1069E000F3239B00E85802F02DFB036813215B6A38 -:1069F0009847FA21281C8900FFF7DCFDBFF34F8F71 -:106A0000054A064BDA60BFF34F8FFEE7C828002027 -:106A100075640100BB9002000400FA0500ED00E07F -:106A2000F0B5051C00291CDD036801390E1C00228D -:106A3000DF0F9809784058401F095C0878409B0890 -:106A400043406340DB07234301241C405000221CC9 -:106A500076080243002EEBD18A42E7D82B60101C47 -:106A600000E00148F0BDC04617FCFFFF38B5002329 -:106A70000360F323124A9B00D358002B08D0042153 -:106A8000041C12F018FB002819D00E4B236016E0EE -:106A9000012204210C4B1A60036800240B4A546045 -:106AA0005568094C002DFBD0A122D200A2581B0230 -:106AB000013913430029F0D103600123636038BD1D -:106AC000C8280020ED5EBC0B00D00040FCD0004088 -:106AD00038B5051CEC30041CD4352868002802D0D9 -:106AE00003685B6898470435A542F6D10121024A44 -:106AF00013788B43137038BD612E0020014B18684A -:106B00007047C046FC2C002008B5024801F026FD65 -:106B100008BDC046CC290020F0B587B01F1C0EABC5 -:106B20001B88019003930D9B0D1C02920C9E0093F9 -:106B3000002F39D0002E01D1DB0735D5202001F000 -:106B40002FFF041C103000F057FC6B461B8925807A -:106B50006380182001F024FF0496061C051C009B8E -:106B600080C600211022301C059314F062FB04A99A -:106B70000822301C14F040FB0D4B00226B610223F5 -:106B80000399A5600B43E260A380E2610198211C98 -:106B900000F066F9002808D0201C13F04FFF201CDD -:106BA00001F022FF034800E0034807B0F0BDC046F3 -:106BB000F190020013FCFFFF17FCFFFFF0B5041C6F -:106BC00089B0214912F0ADFA201C204912F0CBFA0D -:106BD000201C1F4912F0C7FA1E49201C12F0C3FAEC -:106BE000201CFFF743FF00250627201C1A4B0C3002 -:106BF000A3621A4B1A49A36367606462E56211F0ED -:106C00002CFF184A059504926A46261C04AB03CB58 -:106C100003C2C023EC36029305213A1C231C301C0E -:106C2000FFF77AFF104A079506926A4606AB03CB38 -:106C300003C2C023301C02930C491A22231CFFF705 -:106C40006BFF09B0F0BDC046CC290020A42A00206B -:106C5000E02A0020B42900201964010013880200F2 -:106C600070170000E1650100C9900200FD030000FB -:106C700030B5C369C2681B6885B0041C451D1A4243 -:106C80004BD0EB7F002B01D0013BEB77EB7F082B48 -:106C90000DD90123A2791A4209D11A43A271A18800 -:106CA0001A1C02A800F0C6FB1F4B1B682362EB7F77 -:106CB000012B1DD80123A2791A4219D00022A188E4 -:106CC000A2716846023200F0B5FBA31DDB7F012BE9 -:106CD0000ED1154A216A12681448521AA1888242BC -:106CE00002D902A8042201E0032202A800F0A2FBBC -:106CF0000323A2791340012B14D10B49206A0968A0 -:106D0000091A0B4881420DD902210A43A271A188B8 -:106D100002A8052200F08EFB04E0EB7F0B2BB5D818 -:106D20000133B2E705B030BDFC2C0020E7030000C2 -:106D3000DB05000010B5041C044B211C0833036064 -:106D4000034812F0FFF9201C10BDC04680B70200B6 -:106D5000C8280020F0B5071C0025161C85B002933A -:106D60000AAB1B7808370393114B041C08330360EC -:106D7000019185808571291C381C182214F059FA5C -:106D8000381C311C039A11F0AFFF6B466A469B8892 -:106D9000127AA380A31DE671DA77631D2562211C98 -:106DA000DD77044812F0BDF9201C05B0F0BDC046E7 -:106DB00080B70200C828002010B5041C044B211C19 -:106DC00008330360034812F0DFF9201C10BDC046F1 -:106DD000A0B70200C82800200023054A838008329B -:106DE000837102608360C3600361C3827047C046E1 -:106DF000A0B70200F7B50D1C012684680192002C93 -:106E00002AD023882A889A4201D0002B22D1638875 -:106E10006A889A4201D0002B1CD1C023A28813405B -:106E2000C03B59424B4101998B4212D113B2002B06 -:106E30000FDB231C291C103381C981C3530603D5E2 -:106E4000201C12F0D1F905E0211C044800F0FCFCE4 -:106E500000E00026E469D2E7301CFEBDE9910200A3 -:106E6000F7B5002952D00D1C061C8468002C19D0DF -:106E7000AA880023920702D5A3889B07DB0F22680C -:106E800029688A420CD1002B06D0A068A96813F0AB -:106E900032FE00283CD103E0A368AA68934237D0B1 -:106EA000E469E3E7B0682A88071C031E22D019882A -:106EB000914205D2D9691F1C00290DD00B1CF6E7A1 -:106EC000191C3B1C08E00C88944207D14F886C8841 -:106ED000A74203D20B1CC9690029F4D183420BD10C -:106EE00019888A4205D3914206D158886988884218 -:106EF00002D9EB61B56002E0D969E961DD616846FC -:106F00000849012300F096FA002009E0064807E04E -:106F1000A3881AB2002A02DA5B045B0CA380034840 -:106F2000FEBDC046FD03000017FCFFFF16FCFFFF7F -:106F3000F0B585B01E1C0AAB1B88071C0D1C029205 -:106F40000393002E1AD0202001F02AFD6B46041C6A -:106F50001A89039BA9B20093331C13F058FD381C07 -:106F6000211CFFF77DFF00280BD0002C08D0201C2F -:106F700013F064FD201C01F037FD01E0024800E041 -:106F8000024805B0F0BDC04617FCFFFF13FCFFFF31 -:106F900070B5002926D00D1C00268468002C1ED058 -:106FA0000222A988A3884B40134216D1114203D173 -:106FB000AB889B0707D510E0A068A96813F09BFD7C -:106FC000002804D1F4E7A368AA68934205D12B886E -:106FD000002B09D022889A4206D0E469DEE7201C03 -:106FE000002E0DDC07480BE06B88002B02D0628876 -:106FF0009A42F2D1A388044A01361343A380ECE7F6 -:1070000070BDC04617FCFFFF0080FFFF10B5041CD9 -:107010008AB0002B0FD0102092B289B2009002A843 -:1070200013F0F5FC02A9201CFFF7B2FF02A813F031 -:1070300005FD002000E001480AB010BD17FCFFFF6D -:1070400010B5041C044B211C08330360034812F0E4 -:107050009BF8201C10BDC046C0B70200C828002005 -:107060001FB503AB5A7000221970018900920348C2 -:107070001A1C0223FFF77EF905B000BD0429002089 -:10708000F0B5151C0F2285B06A44071C1C1C11703A -:10709000002D16D0002B14DD01230B4E0189009327 -:1070A000301CFFF767F9002801D008480AE0398949 -:1070B0002A1C0090231C301CFFF712F9002801D075 -:1070C000F3E7034805B0F0BD042900200EFCFFFFE4 -:1070D00017FCFFFF7FB5002303AC104D2170018921 -:1070E000061C0093281C221C0133FFF743F90028DB -:1070F00001D00B480FE02070607031890090221C95 -:10710000281C0223FFF7ECF80028F2D120786378DE -:107110000002184300B204B070BDC046042900202C -:107120000EFCFFFF13B56B46DC1D0023221C2370F1 -:107130000133FFF7A5FF002801D1207800E00148C6 -:1071400016BDC0460EFCFFFFF8B510210022041C3E -:10715000FFF786FF1D4E002835D1201C0821FFF7C0 -:10716000E1FFB0422FD00325054027D1FA23184A6A -:1071700061899B005943131C50331E1C083A1F6839 -:10718000181C8F4203D3083B061C9342F7D1FA2107 -:107190003068890002F060FC11216081A022201C6F -:1071A000FFF75EFF00280ED101223379201C1A431D -:1071B0001021FFF755FF002806D004E064210548A0 -:1071C000FFF7F8F9C9E7014D281CF8BD0EFCFFFFD9 -:1071D000D8160300C8280020F8B5051C0F1C002194 -:1071E000144B24350833041C161C036018228180BC -:1071F0008171C160016141618161C1610162281CCD -:1072000014F017F8281C1D2111F069FD01256423D5 -:10721000A7802681A5716381201CFFF795FFA379C4 -:10722000054AAB43A37108239168201C0B4393606C -:10723000F8BDC046C0B70200C8280020F7B5837962 -:1072400002271D1C3D4013D10126041CB3433B43C0 -:10725000837181880622331C684600F0EBF8A3791D -:10726000281C1A1CBA43A271334202D1014800E023 -:107270000148FEBD14FCFFFF15FCFFFFF0B583794C -:1072800085B09A0775D4041CDB0701D4FFF7D6FF3D -:10729000394D281C13F0BDF8071C281C13F0B0F85A -:1072A000A369E268061C981A03F0C4FC226A6369A9 -:1072B000051C981A03F0BEFC0290381C06F0FCF87E -:1072C0000090381C05F04CFF0190301C06F0F4F8DB -:1072D000071C301C05F044FF00990390029803F04E -:1072E000D9F90199061C281C03F0D4F9011C301CA3 -:1072F00003F002FB2369061CE069181A03F09AFCEC -:10730000039903F0C7F9391C041C281C03F0C2F9C7 -:10731000009903F0BFF9011C201C02F04DFE391C3E -:10732000041C029803F0B6F9019903F0B3F9011CAB -:10733000201C02F041FE011C301C06F027FA0F4908 -:1073400003F0A8F905F0F2FA0D4A0E4B04F02AF802 -:1073500005F040FB0021041C02F050FD002804D081 -:10736000201C064902F028FE041C201C03F042FCED -:1073700000E0054805B0F0BDA42A00200000B44399 -:10738000EA2E4454FB21194015FCFFFFF0B587B0ED -:1073900001AD071C05A8161C6A60AB600093019143 -:1073A00013F0BAFB05A801F071FB019B426B041CB2 -:1073B0009A4213D1826BB24210D1C26B00998A42B9 -:1073C0000CD1201C01F010FB3B1C0C3307CD07C374 -:1073D0000122BB791343BB7107B0F0BD054A63635B -:1073E000009B2260A663E36305A8211C13F095FBB4 -:1073F000E7E7C046FECAFECA002303804380024B73 -:107400001B6843607047C046FC2C002008B5031C75 -:10741000012904D1064806CB11F05FFF06E00229DE -:1074200004D10348191C0022FFF7E4FC08BDC04644 -:10743000B429002010B54280054A041C126801805E -:107440004260002B02D0191CFFF7E0FF201C10BD8A -:10745000FC2C002008B5031C024806CB11F03DFFB0 -:1074600008BDC046B4290020F0B5061C0027204BFB -:1074700085B01C680290039185B2360C002C2AD08E -:10748000636D1C490193A36C9AB21B0C8D4211D100 -:1074900019498A420ED1002B01D0B34219D1002FD5 -:1074A00017D1201C11F0F4FF201C144911F0DDFF4E -:1074B00001370EE0002A01D0AA420AD1002B01D0E8 -:1074C000B34206D1201C11F0E3FF201C0B4911F040 -:1074D000CCFF019CD2E70A4BEB18012B05D90948D8 -:1074E000291C321C084BFFF791FD05B0F0BDC046CA -:1074F000002D0020FE030000FF030000E82C002008 -:1075000002FCFFFFB42900206974010010B572B6B7 -:107510000B4B1C68002C03D0201C11F0B9FF08E0B5 -:1075200062B65C2001F03CFA00215C22041C13F0DE -:1075300080FE0023E364034B201CE36310BDC046C0 -:10754000F42C00200040002073B5FFF7DFFF124B42 -:107550001249186011F089FFFFF7D8FFC026104BC1 -:10756000104D1860104B114C4363114B114983634C -:1075700000220096281C231CFFF7DAFC0096281C2A -:10758000231C0D490022FFF7D3FC01230B4A91680D -:107590000B43936073BDC046EC2C0020E82C002008 -:1075A000F02C0020B4290020FC3F00206974010069 -:1075B0002D950200FF030000FE030000C8280020F4 -:1075C0000D4B70B50D481C6811F0EFFD0C4B1D1CE8 -:1075D0001A6880181860002C0DD02B68A26C666D9C -:1075E000934206D3201C11F053FF201C054911F0D3 -:1075F0003CFF341CEFE770BDF82C0020C8280020A9 -:10760000FC2C0020E82C0020F7B5002801D1002038 -:1076100019E00029FBD00193171C0D1C061CFFF775 -:1076200075FF041EF3D0084B019A43630660456062 -:107630008760064B002A00D0054B201CA363054938 -:1076400011F013FF201CFEBDFC3F0020019502003D -:1076500017950200E82C0020024B1868434258415D -:107660007047C046E82C002010B5094C201CFFF7DD -:107670002FFA084B1B68002B08D1F3239B00E0581E -:10768000002802D001F0EEFC00E030BF10BDC04683 -:10769000C8280020E82C00200121F8B52F4E3468BE -:1076A000351CE36C0B4218D002252B43E364042302 -:1076B0002B4F3868C26C1343C364636BC36311F010 -:1076C00006FF3B68181C596C01F0F7FA3068C36C70 -:1076D0002B4241D001F02BFB3EE0224F224E3A6874 -:1076E000002A03D021480078084201D0326806E021 -:1076F000216DB94203D1616D002900D00A1C2A60B6 -:107700002A6831688A420CD11B070AD52C60FFF722 -:10771000ABFF3B68002BFAD0144A1278D207F6D49C -:107720002B602B68A34217D03268934204D1104AD1 -:107730005A63104A9A6305E0944203D10020191C51 -:10774000021C06E0201C11F0C2FE2B68201C191C34 -:10775000626C5B6C01F070FAF8BDC046EC2C002046 -:10776000042D0020E82C0020F02C0020612E0020A9 -:10777000FC3F00202D95020038B50D4B051C1C6800 -:10778000E36CDB0706D5FFF7C1FE0A4B1860002843 -:1077900000D0041C084B18682818A064201C11F0A5 -:1077A00077FE201C054911F060FEFFF775FF38BD1C -:1077B000EC2C0020042D0020FC2C0020F82C0020B4 -:1077C000134B73B51C68051CE36C0E1CDB0706D558 -:1077D000FFF79CFE0F4B1860002800D0041C3304F8 -:1077E0002B43A364201C11F053FE201C0A4911F006 -:1077F0003CFE0A4BEB18012B07D9C0230848009325 -:10780000291C321C074BFFF793FBFFF745FF73BDA5 -:10781000EC2C0020042D0020002D002002FCFFFF96 -:10782000B42900206974010010B5054C206811F0DE -:107830002FFE2068034911F018FEFFF72DFF10BD41 -:10784000EC2C0020F42C0020F7B5002829D00726C6 -:10785000154F041C38680D1CC36C1E4005D0201C3D -:10786000124A11F02CFE00261CE001F048FA022119 -:107870003A68D36C1940019103D003218B43D36440 -:1078800010E001263343D364281CA0473A68D36C28 -:10789000191CB143D164019E5B0703D5FFF7C4FFF8 -:1078A00000E0034E301CFEBDEC2C00200F950200C2 -:1078B00017FCFFFF10B5041C002902D00B78002B29 -:1078C00002D1034B236001E011F03DFE201C10BDEE -:1078D00030170300014B03607047C04630170300A8 -:1078E00010B50548054C206013F0E2F8201C04494F -:1078F000044A13F070FB10BD30170300082D002060 -:10790000399502000000002010B5041C044B211C16 -:1079100008330360034811F037FC201C10BDC0463B -:10792000E0B70200C82800201FB503AB5A70002240 -:1079300019700189009203481A1C0223FEF71AFDF0 -:1079400005B000BD04290020FA2370B52A4A4189F8 -:107950009B005943131C3833041C181C083A1D683B -:107960001E1C8D420CD2061C244B227B1D1D082A96 -:107970000BD8042A09D89D1C022A06D81D1C04E035 -:10798000083B301C9342EAD1EEE7FA2130688900C7 -:1079900002F062F860812B78201C23732A210022D8 -:1079A000FFF7C2FF002801D0154824E0201C2B213E -:1079B0001022FFF7B9FF0028F6D1201C2D2101224B -:1079C000FFF7B2FF0028EFD1201C2E210122FFF784 -:1079D000ABFF0028E8D16A78201C0E21FFF7A4FF36 -:1079E0000028E1D101223379201C1A432A21FFF714 -:1079F0009BFF0028D8D170BD381703001DAF0300CE -:107A00000EFCFFFFF0B5151C0F2285B06A44071C61 -:107A10001C1C1170002D16D0002B14DD01230B4E01 -:107A200001890093301CFEF7A5FC002801D008480E -:107A30000AE039892A1C0090231C301CFEF750FCF8 -:107A4000002801D0F3E7034805B0F0BD0429002069 -:107A50000EFCFFFF17FCFFFFF7B5061C00251A4BB5 -:107A600014360833041C03600F1C01928580182211 -:107A70008571C58105824582291C301C13F0D9FB14 -:107A8000301C1C2111F02BF96B469B8802262381A8 -:107A900014236381231C032134331A79A780B24352 -:107AA0000A40A5712673201C1D705D709D701A71AF -:107AB0005D71FFF749FFA84203D1044A936833433D -:107AC0009360201CFEBDC046E0B70200C82800201D -:107AD000F7B5041C12F0EFFB251C00900E23E25EAC -:107AE0005B4F52423835BA4205DA022329780B40FF -:107AF00000D083E008E0FA21002389008A4203DDF8 -:107B00002B789B077AD500231020215E4942B94289 -:107B100003DA2E7870077DD406E0FA26B600B1426B -:107B200002DD2E78700775D51220265EBE4203DA7C -:107B30002F7838077AD406E0FA27BF00BE4202DD6C -:107B40002F78380772D5002B13D0251C38352B78A9 -:107B50009C461B09032B0CDC0F2701333B4018010B -:107B6000019060463840071C019807432F70042B92 -:107B700066D0231C39331B7838340133DBB2092B30 -:107B800001D8637014E00023637023789C461B09BE -:107B90000ED00F2560460F3328402B40051C1F01D7 -:107BA0003D432570002B03D1EBB20125AB4323707D -:107BB000012724780B233C4047D1264D0098043BF5 -:107BC000A84242DD9025DB192D04A8423DDC224D60 -:107BD000053BAA4239DBC820DB198000824234DC35 -:107BE000023BA94231DB3B1C81422EDC0433AE4216 -:107BF0002BDBDB19864228DC231C26E00123181C22 -:107C000029784E08B043061C02209E408143314330 -:107C1000297079E701202E78B30898438300181C57 -:107C200004239E4306432E7001237DE701272B7812 -:107C3000D80887430820FF0083433B432B7084E729 -:107C400001272B783B432B7093E7181CFEBDC046E1 -:107C500018FCFFFFFF700200E0FCFFFF7FB5012171 -:107C60006A460623041CFFF7CDFE051E22D16B4693 -:107C700002216846012659561B79227B5BB2534389 -:107C80000078514340B242439BB2DB006382A37948 -:107C900089B2D200B343E281CA002282A371201CC0 -:107CA00012F015FBA18802A8321C331CFFF7C2FB9F -:107CB000281C00E0014804B070BDC0460EFCFFFF68 -:107CC000034B1A68836800209A4240417047C046BF -:107CD000FC2C0020084B10B508330360FA23041C69 -:107CE00000229B0082718180C3608260211C034856 -:107CF00011F039FA201C10BD00B80200C82800207D -:107D00001FB5F323154A9B00D358041C002B03D046 -:107D100001A812F08AFB0EE00122114B1A60114BF0 -:107D20005A68002AFBD000225A600F4B01321B68B0 -:107D300001930B4B5A60019BA188DA17920FD3185D -:107D40009B102382094BE2681B6802A8D31801220A -:107D5000A360131CFFF76EFB1FBDC046C8280020A0 -:107D600000C00040FCC0004008C50040FC2C0020C2 -:107D7000054B82681B6810B5041C934201D3FFF7C2 -:107D8000BFFF1023E05E10BDFC2C002008B5044BA3 -:107D900082681B68934201D3FFF7B2FF08BDC0465B -:107DA000FC2C0020014B03607047C046781703008D -:107DB00030B504686088814206DAA588AA4203DAF1 -:107DC000002901DB002A01DA034804E0504361186E -:107DD00008188371002030BD17FCFFFFF0B5071CA9 -:107DE00085B00D1C1E1C002921DD002B1FD004684E -:107DF00063880391994200DD0393A38802929A421B -:107E000000DD0293002306340193019B029A934202 -:107E10000BDA201C311C039A13F0EEF93B6876193B -:107E20005B88E418019B0133EEE7002000E0014885 -:107E300005B0F0BD17FCFFFFF8B5041C0E1C151CA7 -:107E40001F1C002901DB002A02DA0D4B236015E01C -:107E5000101C4843063000F0A3FD206012F025FE00 -:107E60002368201C5E809D80002F05D0311C2A1CB9 -:107E70003B1CFFF7B3FF01E012F07FFBF8BDC046EB -:107E800078170300F0B5061C87B00C1E05D0002043 -:107E90000F1C051C0190011C15E0224B03603EE005 -:107EA0003022524294469C446246092A14D90A2B35 -:107EB0000DD1019B2D1801330193A94200DA291C31 -:107EC0000020051C01373B78002BE9D106E0002893 -:107ED000F8D001350020F5E70120F3E76A469288E3 -:107EE00009B212B2301CFFF7A7FF33689D1D03AB28 -:107EF0001F1C2278002A12D0111C3039092902D8FF -:107F00001A70013309E000221A70BB4205D9381CEF -:107F100013F070F83B1C287001350134E9E7301C80 -:107F200007B0F0BD78170300F0B5041C87B00F1C34 -:107F300004A82249151C1E1C12F0FFFC23685A8855 -:107F4000954208DA9B889E4205DA1F2F03D9059BCC -:107F500000939F4201DD1A482DE0052300217B4359 -:107F60000193049B0293019B029ACB18A03BD35C24 -:107F7000002203938B199C46531927680093788835 -:107F8000834202DABB889C4507DB0132052AF3D124 -:107F900001310529E7D100200DE063465843009BDD -:107FA000FB18102717411818039B1F407B1E9F4189 -:107FB0007F428771E9E707B0F0BDC046CC290020B9 -:107FC00017FCFFFFF7B503689E1D5B885A1A0192E4 -:107FD00000291CDD0C1C051C0027994202DB12F055 -:107FE000CCFA12E02B689B889F420EDA3119301CC4 -:107FF000019A13F001F9019B211CF01812F0AFFA5D -:108000002B6801375B88F618ECE7002000E0014898 -:10801000FEBDC04617FCFFFF10B50548054C2060AB -:1080200012F046FD201C0449044A12F0D4FF10BD92 -:10803000781703000C2D002051A50200000000203D -:10804000054B1A78F0231343044A13701F22C37A96 -:108050001343034A13707047100500500405005085 -:1080600005050050F0B5041C85B000252A1C636F7F -:10807000A17A06330293E37949009C465B000093A2 -:10808000637A01310393A37B277B0193304B59180B -:108090004B1E1B780878012F05D16646013E361A23 -:1080A000181C331C0FE0022F06D16646013EF31A5E -:1080B000267A013E301A06E0032F04D1267A013ECB -:1080C000F61A031C301C009E7043C3180298C31894 -:1080D0001E780398864201D9231C09331B78019826 -:1080E000034202D00123AB401A4301350631092D6A -:1080F000CED1D2430F21174B10011B78D2050B4074 -:1081000003431549DBB20B70E37AD20E1A43134BCB -:108110001A70E37B072B18D8A27B581C5200A2735D -:108120000F499A00E073022B03D8885810F0FDFD28 -:108130009BE70C4B201C2363002363630A4B895885 -:10814000E4622364143010F088FC05B0F0BDC04632 -:1081500023AF030010050050040500500505005032 -:108160008017030065800100C1A6020010B5041C41 -:108170000F4B211C083303600E4810F0E3FF201C56 -:10818000743012F0E5F9201C643012F0E1F9201C83 -:108190005C3011F0D1F9201C543011F0CDF9201CC5 -:1081A000054B14306361FCF763FF201C10BDC04613 -:1081B00020B80200C828002028B90200F7B5002521 -:1081C000041C1F1C254B8580083303608571143007 -:1081D000161C0191FCF78EFF201C214BE5626361A8 -:1081E00025644430FEF710F9201C5430FFF772FB71 -:1081F000201C5C30FFF76EFB201C6430FFF7D2FDC3 -:10820000201C710074303AB212F0C0F904231A1C19 -:10821000A0210320C132FF329200C9050133505022 -:10822000112BF4D120226B46E2721F3A9B88A27375 -:10823000FE326272221CA38000234C32E671277248 -:10824000A3722373E373237463731370054AE366A5 -:10825000916804330B43201C9360FEBD20B80200DC -:1082600028B90200C8280020F7B5437A002B69D04E -:10827000436F077B06330193C3799C465B000093F1 -:10828000827A314B520001329A1800231E1C511E73 -:108290000C781178012F05D16546013D6D1A211C1E -:1082A0002C1C0FE0022F06D16546013D2C1B057AE0 -:1082B000013D691A06E0032F04D1057A013D2D1B0B -:1082C0000C1C291C009D6943019D2C19615C00292F -:1082D00002D00121B1400B4301360632092ED6D11E -:1082E000DB430F21041C194A18011278DB050A40F0 -:1082F00002431749D2B20A70E27ADB0E1343154AE1 -:108300001370667AB31EDBB2FC2B15D8124810F03E -:108310004CFF124B051C2363002311486363114B70 -:10832000FF21E4622364704301F026FC011C201C41 -:108330006943143010F091FB637A012B02D8201CA2 -:10834000FFF77EFEF7BDC04623AF030010050050C7 -:108350000405005005050050C82800204180010098 -:10836000B6030000C1A6020007B501228188131CD4 -:108370006846FFF75FF86846024902220123FFF7CB -:1083800059F807BDFE030000154B10B59B685B074D -:1083900025D5427B041C022A02D112F0AEFA1EE05F -:1083A000C37A5B00C372837A0133DBB2032B01D043 -:1083B000837203E0002383722033C372002A02D148 -:1083C000201CFFF751FF637B012B05D1A373002312 -:1083D000201CE373FFF746FE201C12F05BFA10BD71 -:1083E000C8280020031C13B54C331A78041C002A3B -:1083F0000DD000221A7001328188131C6846FFF7E5 -:1084000019F86846044902220123FFF713F8201CDB -:10841000743012F0B2F813BDFF03000008B54C3001 -:108420000378012B03D902480221FFF7C9F908BDDF -:10843000FF03000073B5079E041C002E1ADB051C09 -:108440004C352878012817D806981BB2C0B2009086 -:10845000201C12B2743012F0A0F80023301E984293 -:108460000BD0221C4E321680062250342380181C5A -:108470002A7002E0014800E0014876BD17FCFFFFCA -:1084800012FCFFFFF0B587B00D9D002D22DB041C10 -:10849000039302920E1CFFF7C1FF231C4C331F787D -:1084A000002F19D1311C05A812F05FF80C9B05A90B -:1084B0000093029A039B0195201CFFF7BBFF05A8C0 -:1084C00012F046F8281E08D006200121FFF778F99F -:1084D000381C02E0024800E0024807B0F0BDC04688 -:1084E00017FCFFFF11FCFFFFF8B5041C171E19DD78 -:1084F000061C4C363378012B16D8021CC3795A322D -:10850000013B1370031C002558331D80543011F0BB -:108510002FF8231C4E331F80022350342580281C43 -:10852000337002E0014800E00148F8BD17FCFFFF8E -:1085300012FCFFFF0421034A93680B4201D10B4355 -:1085400093607047C82800200421034A93680B42B7 -:1085500001D08B4393607047C8280020F0B589B0E4 -:1085600002900D1C72B6FF2200238A425B410298E2 -:108570005B421D40FFF7E8FF029B1E7C002E00D1EE -:108580000136434B1022002104A81F6812F051FE4F -:10859000404B281C6421049301F0EEFA0A2101F0FB -:1085A000D1FB05246143503179180591281C0A211B -:1085B00001F0E2FA0A2101F0C5FB6143503179185C -:1085C0000691281C0A2101F0BDFB4C4350343F1991 -:1085D00020250024079700230093FA235B000193D2 -:1085E000032C01D120250024009A04ABD3582A4A39 -:1085F000039363000133D31800229446197803983B -:10860000405C591E0F7810213941014204D00121EC -:10861000604691400843844601320633092AEDD171 -:10862000F0231E481E4A0370D13B191C29431170C8 -:108630006146C9430F01FFB20770FA2709110B40C9 -:108640002B431370BF00174812F063FC002801D1C0 -:10865000FEF796F9013F002FF5D1019B6D00013423 -:10866000013BEDB2E4B20193002BB9D1009B04337E -:108670000093102BB1D1029B1B7C002BABD0013E91 -:10868000F6B2002EA7D1FEF77BF909B0F0BDC046C7 -:108690008C00002059AF030023AF030004050050F5 -:1086A00005050050982C002030B50024034D84713E -:1086B0000560818042730373846030BD48B8020056 -:1086C00010B58379041CDB0702D5806800F08CF9B3 -:1086D000A3799B0702D5A06800F086F9A3795B0710 -:1086E00007D5A0230021114ADB00D150A06800F07B -:1086F0007BF9A3791B0709D5A06812F08DFB0D2328 -:10870000E356834202D1A06800F034FCA379DB0673 -:1087100005D5A068002802D003681B69984700238C -:108720007F22A360A3799343A37110BD0070004022 -:10873000F7B5037BDB0728D5012928D802238579E3 -:108740000F1C041C1D4016D1FFF7BAFF182000F0C3 -:1087500027F9637B1822291C061C019312F069FD7E -:108760006B460421301C595610F0DAFA0222A37924 -:10877000A6601343A371A3685A68002F03D0DB6877 -:108780001A60002004E01B69FAE7024800E0024892 -:10879000FEBDC04616FCFFFF17FCFFFFF7B5012723 -:1087A000037B3B4222D08579041C3D4016D1FFF764 -:1087B00087FF182000F0F4F8637B291C1822061CA0 -:1087C000019312F036FD6B460421301C59563A1CB9 -:1087D00010F08AFAA379A6603B43A371A26853699B -:1087E00050681B681840431E984100E00048FEBDD9 -:1087F00016FCFFFF38B5037B9B0715D50C4B994240 -:1088000014D80D1C041C12F09EF8031C0020834297 -:108810000DD1281C02F00EFA064901F049FD011C99 -:10882000A06800F0C5FB02E0034800E0034838BD43 -:10883000FF03000000C07F4416FCFFFF17FCFFFF92 -:1088400070B5037B9B0716D504258379041C2B4246 -:108850000DD1FFF735FF082000F0A2F80D21061C0E -:10886000615600F08DFDA379A6602B43A371A0682B -:1088700000F0AEFD00E0014870BDC04616FCFFFFF1 -:10888000F7B5037B5B0719D510268579041C3540A5 -:1088900010D1FFF715FF282000F082F80D22071CE9 -:1088A000A188A25601230095FEF754FAA379A76088 -:1088B0003343A371A06810F086FC00E00048FEBDC1 -:1088C00016FCFFFF08B583791B0703D5806800F00D -:1088D00083FB00E0004808BD16FCFFFF10B5041C38 -:1088E000002300F0D1FCE121054B201C2360054B47 -:1088F00049022364044B636410F032F9201C10BD5C -:1089000028B7020040B7020074B7020070B5051C1A -:10891000042008F007FC061C1448801B02F0D2F962 -:1089200004F004F8124B002203F07AF901F0F0FA97 -:1089300003239843041C301C08F0FEFB2868002821 -:108940000AD1201C08F0EEFB28600028F6D1203C5C -:10895000002CF3D1074807E0A408A40004196C60B8 -:10896000281C12F00BF8002070BDC0460038002013 -:108970000000E83F13FCFFFF10B572B6064C201C48 -:10898000FFF7C4FF002802D062B6044802E0A060EE -:10899000E06062B610BDC046102D002013FCFFFF42 -:1089A00038B5104C051C2368002B04D0211C11F095 -:1089B000EDFF002809D1A368002B08D0211C281C3A -:1089C000083111F0E3FF002801D0041C07E0281C47 -:1089D00008F0A8FB041E02D11420FDF757FD201C4F -:1089E00038BDC046102D002008B5002815D00B4B0F -:1089F0001A68904202D95A68904208D39A68904205 -:108A000002D9DB68984202D308F096FB05E0802388 -:108A1000043802681B061343036008BD102D0020B4 -:108A200008B5084A03880120934209D0834202D046 -:108A30000020DB0704D404481E21FEF765F800205F -:108A400008BDC046FFFF0000C828002002200D4AD4 -:108A50000D4B30B59850101C8022D2009C58002C31 -:108A6000FAD0A124084DE400295199580029FCD0DE -:108A70000021054A11508022D2009A58002AFAD0CB -:108A800030BDC0460405000000E00140802370B501 -:108A90005B0544201D695E69FFF782FF00214422C7 -:108AA000041C12F0C6FB311C133944226943201CFC -:108AB00012F0A2FB054B22689A4204D0201C002130 -:108AC000442212F0B6FB201C70BDC046FECAFECA8E -:108AD00030B501240A480B4B1C50041C8020C000F8 -:108AE0001D58002DFAD00A601A58002AFCD0002127 -:108AF000044A11518022D2009A58002AFAD030BD7F -:108B00000405000000E0014010B5041C054B0833CB -:108B10000360143010F010FD201C103010F00CFD1C -:108B2000201C10BD60B8020038B5041C8068002805 -:108B300008D0074B1D8800F085FA0368291C1B6AC2 -:108B400015229847211C034810F01EFB38BDC04673 -:108B5000EA2D0020C828002038B50025041C094B48 -:108B600085800833857103601030FEF7B3FE201C4A -:108B70001430FEF7AFFE044BA560E560201C1C60BE -:108B800038BDC04660B80200202D002070B5002519 -:108B9000041C0C4B858008338571036014300E1C57 -:108BA00012F017F8201C183012F016F8064BA680A9 -:108BB000A571E57125726572E5602561201C1C6058 -:108BC00070BDC04680B80200242D002013B5041CDF -:108BD0000E4811F0CFFF0023226843629A4201D170 -:108BE00020600BE0516A002902D001330A1CF9E72A -:108BF000032B02DDFFF7F8FE06E050620122684613 -:108C00001D21131CFEF716FC13BDC046782C002056 -:108C100038B5051C074811F0ADFF0123041C2B706B -:108C20000430FEF717FC0023201C2B70FFF7DCFE3E -:108C300038BDC046782C0020002815D00060416067 -:108C40008260C360046145618661C7614446046215 -:108C50004C464462544684625C46C4626446046383 -:108C60006E46466374468463002A06D0C46B043C97 -:108C7000043A25681560B442F9D18C6BA6464E6B58 -:108C8000B546002B06D0CC6B043C043B1D68256028 -:108C9000B442F9D10C6BA446CC6AA3468C6AA246B6 -:108CA0004C6AA1460C6AA046CF698E694D690C6971 -:108CB000CB688A68086849687047006041608260D4 -:108CC000C360046145618661C761444604624C46E5 -:108CD0004462544684625C46C462644604636E46E1 -:108CE000466374468463C46B043C043925680D6094 -:108CF000B442F9D1C7698669456904697047006063 -:108D000041608260C360046145618661C761444619 -:108D100004624C464462544684625C46C4626446C3 -:108D200004636C4644637446846304697047846BCF -:108D3000A646446BA546046BA446C46AA346846A4F -:108D4000A246446AA146046AA046C7698669456985 -:108D50000469C3688268006841687047F0B587B0ED -:108D60001F1C0EAB1B88019003930D9B0D1C0292E0 -:108D70000C9E0093002F39D0002E01D1DB0735D592 -:108D80002020FFF70DFE041C1030FEF735FB6B466C -:108D90001B89258063801820FFF702FE0496061CBD -:108DA000051C009B80C600211022301C059312F088 -:108DB00040FA04A90822301C12F01EFA0D4B0022C2 -:108DC0006B6102230399A5600B43E260A380E2611B -:108DD0000198211CFEF744F8002808D0201C11F04F -:108DE0002DFE201CFFF700FE034800E0034807B0FB -:108DF000F0BDC046DFAB020013FCFFFF17FCFFFF16 -:108E0000F0B58180154989B000251E1C0491694682 -:108E1000134B85710360028146810573059504AB90 -:108E2000041C81CB81C1C023111C02932A1C231C6A -:108E30000C48FFF793FF094A079506926A4606AB6E -:108E400003CB03C2C023311C02932A1C231C0548F8 -:108E5000FFF784FF201C09B0F0BDC046F1AC020052 -:108E6000A8B80200B429002030B5051CA0240123B5 -:108E7000C135FF35E405AD002B511D1C8D408340ED -:108E8000291C0B4D0002615163510A4B920018439B -:108E9000094BD118A223DB00C850C046C046C046CB -:108EA000064B0021D218A823DB00D15030BDC046AC -:108EB0000C050000030003000060004000A000401B -:108EC000F7B52A4E01913568071C2949002D08D0B5 -:108ED0007368002B04D0B3680225002B0FD100E08B -:108EE000012508200D70FFF75BFD391C041C00F004 -:108EF00011FC6B461B79AD00A370745133E0002266 -:108F000002200B789C460133DC0F984262415242AA -:108F100013409C00634516D0144A10598278151CE2 -:108F200001222A4009D00B706B461B79391C8370D3 -:108F300011F067FF0D4B1C5915E0581C131C02283B -:108F4000E7DC031CE5E701233059827813401C1E3F -:108F500009D06B461B79391C837011F052FF044B0A -:108F60001B789B00F458201CFEBDC046282D002015 -:108F70000B01002070B5002403780B4A4533FF3302 -:108F80009B009C50051C00F08DFB0123AB70074E2D -:108F9000A359AB4204D1281CFFF726FD0023A3519F -:108FA00004340C2CF3D170BD00600040282D00204B -:108FB00070B5061C0D1C081C002100F01FFF041ECC -:108FC00006D1301C291C00F003FB7560201C00E05A -:108FD000004870BD17FCFFFF38B5051C0C1E09DBEF -:108FE00000F06CFB281C6968FFF7E2FF024B0020D1 -:108FF0001C8000E0014838BDEC2D002017FCFFFF6D -:1090000010B5054C0121201C11F029FF201C03493B -:10901000034A11F0E0FF10BD342D00201FAE020006 -:1090200000000020436810B5041C002B02D1044846 -:109030000FF03FFE606803681B69984710BDC0468B -:1090400062AF0300436810B5041C002B02D1044832 -:109050000FF02FFE606803681B69984710BDC0467B -:1090600062AF0300436810B5041C002B02D1044812 -:109070000FF01FFE60680368DB6A984710BDC046AA -:1090800062AF030080B2002807D1BFF34F8F034ABD -:10909000034BDA60BFF34F8FFEE770470400FA0519 -:1090A00000ED00E0F0B5264B85B01B78002B45D0D5 -:1090B000244B254E1D6834686A4255416242544132 -:1090C000EDB2E4B20193002D36D103A811F0D0FE29 -:1090D00005280CD0002804D0291C2A1CFFF7D2FF39 -:1090E00006E0019B03981B680093984700E0012568 -:1090F000002C1ED1154B03A91B8801240B80144B97 -:109100001B68181C009311F0B5FE071E052F0BD02D -:10911000002805D000210A1CFFF7B4FF002403E05B -:109120000098336898473C1C002DCCD0002CCAD046 -:1091300004E0002D02D1C6E7002CDBD005B0F0BD65 -:10914000622E00203C2D0020402D0020EE2D00201E -:10915000382D002008B5074B1B68002B07D0984717 -:10916000002806D000210A1CFFF78CFF01E0FFF762 -:1091700099FF08BD442D00200120054A08B5137849 -:109180005840044B10701B68002B00D0984708BD56 -:10919000632E0020482D002002210D4A0D4B30B5D2 -:1091A0009950111C8022D2009C58002CFAD0A12486 -:1091B000084DE400285198580028FCD00020054AAA -:1091C00050508022D2009A58002AFAD030BDC046B2 -:1091D0000405000000E001400323FF220340984300 -:1091E000DB009A40994030B5046894436318012429 -:1091F0000849094A54500C1C8021C9005558002DBB -:10920000FAD003605358002BFCD00022024B1A51B5 -:1092100030BDC0460405000000E00140F0B5104C30 -:109220000125A4460F4B1D518024E4001C59002C3D -:10923000FAD00C1C92008A188025ED00944207D0C9 -:109240002668671A3E505F59002FFCD00434F3E7BC -:10925000002261465A505A59002AFCD0F0BDC0463F -:109260000405000000E0014008B4024B9C46403871 -:1092700008BC604797AE020008B4024B9C464038D9 -:1092800008BC60479FAE020038B5041C1D1CFBF7EC -:1092900053FF201C291C4030FBF7F8FE054B201C17 -:1092A0001A1C083222601A1C543320322264636470 -:1092B00038BDC046C0B8020010B5041C044B0360A2 -:1092C0000FF0BAFB201CFBF72BFF201C10BDC04683 -:1092D00020B6020010B5041C034B083303601C3099 -:1092E00000F032FB201C10BD38B9020070B5051C1F -:1092F000041C0E4B0E1C083308C5281C0021182224 -:1093000011F097FF0023201C311CE361236263638B -:10931000A363E364064A231C1C3000F0E5FA281C12 -:10932000311C0FF0DCFC201C70BDC04638B90200B7 -:1093300041AF020070B5041C0E1C151C0021102248 -:1093400011F077FF054B201C2361311C2A1CFCF710 -:1093500063FA034B201C1C6070BDC046A086010050 -:109360004C2D002038B5054D2B68834204D0041CD9 -:109370002169FCF70BFA2C6038BDC0464C2D00204B -:1093800070B5104C051C0E1C081C211C00F036FB8F -:10939000211C28600023CB565A1C05D0B34201D1B2 -:1093A0008B6802E00C31F5E70023A0210120064A7A -:1093B000C9002B7150506A211B020B4303495350C3 -:1093C00070BDC046A01703000070004004050000F7 -:1093D0000C4B0D4A10B50D499C582140995001790C -:1093E0009C5809022143995001221A608022D20020 -:1093F0009A58D207FAD4A123024ADB00D05880B28F -:1094000010BDC0460070004004050000FF00FFFFD3 -:1094100003780D4A9B009B18A22210B58024D2002D -:109420009858640320439850002902D0995807485F -:1094300006E098580649014080209950995840020A -:109440000143995010BDC046006000400300030076 -:10945000FFFFFCFF0021114A114B1165114A1188D1 -:10946000114A9950114A1178002904D010490888EE -:10947000A821C90058505178002903D00C494888C8 -:109480000C4958509278002A04D0094A9188A922A0 -:10949000D200995001221A607047C046FCA00040DB -:1094A00000A00040FE0000204C050000642E0020BB -:1094B00000010020440500000022154B10B55A6041 -:1094C00090420ED10121134A98509950124A053109 -:1094D00098500432985008329950104A1188104A16 -:1094E0009950104A410051308A5AFF3080001A507A -:1094F000C2200D4980000C580C4A22408024E4030D -:1095000022430A508022D2000A6001221A6010BD54 -:1095100000A00040FC0F000004050000FE00002039 -:109520004C0500000001002000E100E0FFFF00FF0B -:10953000012330B51D1C021CA0248540C132FF321E -:10954000E405920013510A4A8900A550094A0A4CC1 -:109550008918A222D2008C50C046C046C0460B607B -:10956000064B000218438850C046C046C04630BD76 -:109570000C05000000600040031F02000300030010 -:1095800010B5002A02D0FFF743FF17E003780C4A1A -:109590009B009B18A222D2009C580A482040985059 -:1095A000002902D09958084806E098580749014018 -:1095B00080209950995880020143995010BDC046AF -:1095C00000600040FFFFEFFF03000300FFFFFCFF10 -:1095D000F7B500222D4B2E4C1A650123061C0D1CDD -:1095E000081C6360002100F009FC0194002809D1E7 -:1095F000FE21281C890500F015FC002803D0FE255B -:10960000AD0500E000253478224B6400E35A009356 -:10961000214B1F88381C01F00DFB011C281C01F098 -:1096200039F800F05DFC1D4B1A4982B2E2526252D9 -:10963000002A04D10121301CE152111C14E0BA426D -:1096400006D1013A301C0021E252FFF7E1FE0DE0A5 -:10965000009B002B01D0BB4208D1009B301CDA1BC1 -:1096600057427A410121D2B2FFF78AFF8022C123FB -:10967000019912039B00CA500199094A053BFF3B1F -:10968000CA500123019A1360F7BDC046FCA00040F8 -:1096900000A00040F02D0020FE000020000100206E -:1096A00008080000002108B5034A0378D1540021BE -:1096B000FFF78EFF08BDC046642E00200020104A30 -:1096C000CB17106501229B0F59180E480E4B8910BD -:1096D0005A600E4A814202D90121494202E004291E -:1096E00000D8052111808021C122090392009950E0 -:1096F0000749053AFF3A995001221A607047C0465F -:10970000FCA00040FFFF000000A00040FE00002081 -:1097100008080000F8B5051C0E1C081C2B4900F0B9 -:109720006DF92B4BC4B2C0B2195C012200290FD0D5 -:109730005978002902D15A70141C0AE0997800293E -:1097400002D19A70022404E022480FF0B2FA00E03D -:109750001A54301C6E70211C2C70FFF7E9FE1E4A53 -:109760006300DBB21D48A1008918DA0012181C48FA -:109770001A4E11501B4811501B48A1000918A22075 -:10978000C0001150A3211948C90050500121A02246 -:10979000081CD200B7585A1C90400A1C9A40031C5F -:1097A0001343A0223B43D200B350002C02D18023AC -:1097B000DB059967201CFFF77FFE281C0C49FFF78B -:1097C0007DFF281C0021FFF703FFF8BDF4170300FD -:1097D000642E002085AF03000060004000F00140CF -:1097E000140500001C05000040A100404CA10040F1 -:1097F000204E000037B5A223A022DB00D205D358AB -:10980000BE220193314B5200995800295DD0C121ED -:1098100089005958002958DA00249C502C4BA50087 -:10982000E85800284ED02B4BE35C002B30D0019B36 -:109830000121E3400B4212D0231CA022C133FF338D -:109840009B00D2059B589B039B0F032B07D0224BF9 -:109850001B68E3400B4202D0204B1B6817E0019BC2 -:109860000122E340134213D1231CA021C133FF3353 -:109870009B00C9055B589B039B0F032B08D1184B1A -:109880001B68E340134203D00221144B1B68984726 -:10989000A023DB05EA18E023C025DB00D158AD0288 -:1098A00029420FD0D1580F480840D0500198E040CD -:1098B000C10702D5D158294303E08020D158800246 -:1098C0000143D15001341F2CA8D137BD00600040A6 -:1098D000542D0020672E0020D02D0020502D002078 -:1098E000D42D0020FFFFFCFF30B5041C081C4D1CCC -:1098F0001CD00F482160BE24026000200D4A640085 -:1099000010510D4C8D002B5101240C4B5C54C12186 -:10991000802389001B065350094A0A4B54582340A0 -:10992000C0242404234353504023136030BDC04659 -:10993000502D002000600040542D0020672E002094 -:1099400000E100E0FFFF00FF00210368014A9B00E7 -:1099500099507047542D002070B5A024E025006870 -:10996000E40583001B19ED005E59214C34405C5125 -:10997000204D0124002A0ED0A14204D181402A6842 -:109980001143296015E0022913D184401A4A116855 -:109990000C4314600DE0012904D181402A688A43F8 -:1099A0002A6006E0022904D1844013490A68A243D0 -:1099B0000A602A680121C2400A4204D10E4A126894 -:1099C000C2400A4212D0A222A021D200C9058A5860 -:1099D000C240101CE022D200C10702D59958C02015 -:1099E00001E08020995880020143995070BDC04623 -:1099F000FFFFFCFFD02D0020D42D002010B5041C4B -:109A0000431C07D011F0D7FA041C431C02D10248B2 -:109A10000FF04FF9201C10BDE9AF030002B47146EE -:109A200049084900095C49008E4402BC7047C046A1 -:109A300003B47146490840004900095E49008E445C -:109A400003BC704703B47146490840004900095AF5 -:109A500049008E4403BC7047002243088B4274D3F4 -:109A600003098B425FD3030A8B4244D3030B8B421F -:109A700028D3030C8B420DD3FF22090212BA030C28 -:109A80008B4202D31212090265D0030B8B4219D309 -:109A900000E0090AC30B8B4201D3CB03C01A524129 -:109AA000830B8B4201D38B03C01A5241430B8B4271 -:109AB00001D34B03C01A5241030B8B4201D30B035A -:109AC000C01A5241C30A8B4201D3CB02C01A524181 -:109AD000830A8B4201D38B02C01A5241430A8B4244 -:109AE00001D34B02C01A5241030A8B4201D30B022D -:109AF000C01A5241CDD2C3098B4201D3CB01C01A47 -:109B0000524183098B4201D38B01C01A5241430950 -:109B10008B4201D34B01C01A524103098B4201D33E -:109B20000B01C01A5241C3088B4201D3CB00C01AAB -:109B3000524183088B4201D38B00C01A5241430823 -:109B40008B4201D34B00C01A5241411A00D2014648 -:109B5000524110467047FFE701B5002000F0FCF8C5 -:109B600002BDC0460029F7D003B5FFF775FF0EBC54 -:109B70004243891A1847C04603460B437FD400224C -:109B800043088B4274D303098B425FD3030A8B4291 -:109B900044D3030B8B4228D3030C8B420DD3FF22FB -:109BA000090212BA030C8B4202D31212090265D0C9 -:109BB000030B8B4219D300E0090AC30B8B4201D37C -:109BC000CB03C01A5241830B8B4201D38B03C01AC3 -:109BD0005241430B8B4201D34B03C01A5241030B3A -:109BE0008B4201D30B03C01A5241C30A8B4201D3EB -:109BF000CB02C01A5241830A8B4201D38B02C01A96 -:109C00005241430A8B4201D34B02C01A5241030A0C -:109C10008B4201D30B02C01A5241CDD2C3098B42F1 -:109C200001D3CB01C01A524183098B4201D38B016E -:109C3000C01A524143098B4201D34B01C01A524111 -:109C400003098B4201D30B01C01A5241C3088B4256 -:109C500001D3CB00C01A524183088B4201D38B0041 -:109C6000C01A524143088B4201D34B00C01A5241E3 -:109C7000411A00D201465241104670475DE0CA0FBA -:109C800000D04942031000D34042534000229C467A -:109C900003098B422DD3030A8B4212D3FC22890184 -:109CA00012BA030A8B420CD3890192118B4208D35A -:109CB000890192118B4204D389013AD0921100E0BC -:109CC0008909C3098B4201D3CB01C01A52418309D0 -:109CD0008B4201D38B01C01A524143098B4201D3FD -:109CE0004B01C01A524103098B4201D30B01C01A28 -:109CF0005241C3088B4201D3CB00C01A52418308A2 -:109D00008B4201D38B00C01A5241D9D243088B42F7 -:109D100001D34B00C01A5241411A00D2014663469A -:109D200052415B10104601D34042002B00D54942FE -:109D3000704763465B1000D3404201B5002000F03D -:109D40000BF802BD0029F8D003B5FFF715FF0EBCD4 -:109D50004243891A1847C0467047C0468446101CC3 -:109D600062468C46191C634600E0C0461FB501F0F0 -:109D7000F1FE002801D40021C8421FBD10B501F03A -:109D800035FE4042013010BD10B501F0E3FE002861 -:109D900001DB002010BD012010BDC04610B501F050 -:109DA000D9FE002801DD002010BD012010BDC046F5 -:109DB00010B501F05FFE002801DC002010BD01207D -:109DC00010BDC04610B501F055FE002801DA002094 -:109DD00010BD012010BDC0468446081C6146FFE747 -:109DE0001FB500F011FC002801D40021C8421FBD9E -:109DF00010B500F095FB4042013010BD10B500F0E9 -:109E000003FC002801DB002010BD012010BDC0466E -:109E100010B500F0F9FB002801DD002010BD012085 -:109E200010BDC04610B500F0A5FB002801DC0020E5 -:109E300010BD012010BDC04610B500F09BFB0028EE -:109E400001DA002010BD012010BDC046002B11D149 -:109E5000002A0FD1002900D1002802D00021C943D7 -:109E6000081C07B4024802A14018029003BDC04676 -:109E7000E9FEFFFF03B4684601B5029800F082F8DE -:109E8000019B9E4602B00CBC7047C046F0B54F46E1 -:109E9000464605042D0C2C1CC0B41704160C3F0CB0 -:109EA0009946030C7C4375435F4373437D19260C2D -:109EB000AD199C46AF4203D980235B029846C44447 -:109EC0004B465143434324042E0C240C2D0466447A -:109ED0002C1959188919201C0CBC90469946F0BDC4 -:109EE0009E2110B5C905041CFFF7A6FF002803D169 -:109EF000201C00F07FFE10BD9E21201CC90500F033 -:109F0000FBFC00F077FE80231B069C466044F2E7D2 -:109F100038B500220C4B041C0D1CFFF753FF002822 -:109F200004D1201C291C02F08FFC38BD064B0022F6 -:109F3000201C291C02F00EF902F086FC80231B066F -:109F40009C466044F1E7C0460000E041F0B583B0B4 -:109F5000161C1F1C0090019102F0EAFD041C0D1C50 -:109F6000221C2B1C301C391CFFF790FF009A019B10 -:109F7000121A8B410899201C0A604B60291C03B0FF -:109F8000F0BDC046F0B5141C83B01D1C00900191BB -:109F900002F0C6FE221C2B1C061C0F1CFFF776FFCE -:109FA000009A019B121A8B410899301C0A604B6081 -:109FB000391C03B0F0BDC046F8B54A004302440066 -:109FC0004E02C50F240E281C9B09120EC90FB7099B -:109FD0008D4240D0A01A002800DC84E0002A1CD169 -:109FE000002F5CD15A0704D00F221A40042A00D057 -:109FF00004338022D2041A40281C002A24D00134C1 -:10A00000FF2C00D17BE09B015B0AE4B25B02E4051C -:10A010005B0A2343C0071843F8BDFF2CE2D080221F -:10A02000D204174301261B2808DC391C20223E1CC1 -:10A03000C140101A8640771EBE410E439B1B5A0139 -:10A0400033D4281C5A07CFD1DB08FF2C1ED05B026B -:10A050005B0AE4B2DAE7A11A002957DD002A3AD0F8 -:10A06000FF2CBFD08022D204174301261B2972DDAA -:10A070009B195A01E5D50134FF2C00D187E001215D -:10A080008A4A194013405B080B43ABE7002B36D0DC -:10A090008022D20313435B025B0AFF24B6E7013838 -:10A0A00000283FD1DB1B5A01CBD59B019E09301CF8 -:10A0B00002F020FD05388640844223DC001B1F246B -:10A0C000321C431C201ADA408640131C741EA64121 -:10A0D0000024334386E7002F00D183E701390029AC -:10A0E00050D1DB19C5E7002820D1621CD2B2012A69 -:10A0F0005EDDDE1B720128D5FE1A0D1CD7E7FF249A -:10A10000002383E7694B241A33406BE7002958D1B9 -:10A11000621CD1B201293CDDFF2A37D0FB185B0855 -:10A12000141C5FE7FF2C00D07CE75BE7002C1ED0FF -:10A13000FF2A23D08024E404404223431B285BDD14 -:10A140000123FB1A141C0D1CADE7002EAFD1002318 -:10A150000020002478E73A1CCA40944620223E1C86 -:10A16000511A8E406246771EBE41164380E7002B8F -:10A170003ED0C0430028E4D0FF2ADFD13B1CFF249F -:10A180000D1C2FE7FF2C00D06FE72BE7FF240023E7 -:10A190005AE7002C5AD1002B7FD0002F00D121E7A5 -:10A1A000DB195A0100D44CE7404A0134134019E747 -:10A1B000002C15D1002B2FD1002F5DD03B1C0D1C86 -:10A1C00010E7002C21D1002B53D0C943002904D023 -:10A1D000FF2A4BD01B2957DD0123DB19141C48E74C -:10A1E000002B22D1002F4AD03B1C0D1CFF24F9E686 -:10A1F0003B1C141C0D1CF5E61D1C2024C540201A18 -:10A200008340581E83412B439BE7FF2A2ED0802496 -:10A21000E40449422343DDE7002F00D1E2E6DA1BE4 -:10A2200050013CD5FB1A0D1CDCE6FF24002F00D1A9 -:10A23000D8E68022DB08D203134204D0FE0816427F -:10A2400001D1331C0D1CDB00FF24CBE6002B0DD00D -:10A25000FF24002F00D1C5E68022DB08D203134281 -:10A26000F1D0FE081642EED1331CECE73B1CFF2474 -:10A27000B8E63B1C141CB5E6231C0020E4E6802352 -:10A2800000209B04FF24DFE61E1C2024CE40611A20 -:10A290008B40591E8B4133439FE73B1CA2E6131EA4 -:10A2A00000D0CEE600230020CEE6C046FFFFFFFB35 -:10A2B000F0B556464D465F464446F0B4430245006D -:10A2C000C70F83B08A465C0A2E0EB94641D0FF2ED6 -:10A2D00026D080231B042343DC00002398469B46A2 -:10A2E0007F3E53465B025D0A53465A00DB0F120E57 -:10A2F0009A4639D0FF2A33D080231B042B43DD003C -:10A3000000237F3A5146B21A46467940081C019212 -:10A310001E430F2E00D976E07E4AB6009659B74606 -:10A32000002C30D108239846063B9B46D9E7802372 -:10A330000021DB03FF245B02E4055B0AC90723431A -:10A340000B43181C03B03CBC90469946A246AB4652 -:10A35000F0BD002C28D104239846033B9B46C0E760 -:10A36000002D1FD1022302E0002D11D10123B21ACA -:10A3700050464646784001921E430F2E27D8664924 -:10A38000B60089598F460C239846093B9B46A8E79F -:10A39000281C02F0AFFB7622431F52429D40121A46 -:10A3A0000023AFE70323ADE7201C02F0A3FB431F0C -:10A3B0009C4076235B421E1A002398469B4690E7FA -:10A3C0000025D1469B465B464846022B6FD10121B2 -:10A3D000FF2401400023AEE77E23019A5B429B1AD3 -:10A3E0001B2B6DDD01214B46194000240023A2E701 -:10A3F0008023DB031C4249D18023DB0323435B0220 -:10A400005B0A391C96E763016D01AB4237D389467D -:10A410001A2001215B1B01241E1C49005B00002E39 -:10A4200001DBAB4201D35B1B214301380028F3D190 -:10A43000581E83410B431D1C019C7F34002CCBDD37 -:10A440006B0704D00F232B40042B00D004352B01C5 -:10A4500004D5019A314B8032141C1D40FE2C07DDBF -:10A460004B460121FF241940002364E7251CAAE77D -:10A4700001214A46AB015B0AE4B211405BE7019A55 -:10A480008946013A01921B200021C4E71D4207D0F2 -:10A4900023435B025B0A391C4CE700256302ABD502 -:10A4A0008023DB032B435B025B0A514642E7032B0D -:10A4B00025D0012BC0D101210024014000233AE71F -:10A4C000291CD9402B1C019A9E3293405D1EAB4142 -:10A4D0000B435A0704D00F221A40042A00D0043339 -:10A4E0005A0105D54B46012101241940002322E7DA -:10A4F00001214A469B015B0A114000241BE780238F -:10A5000001214A46DB032B435B020A405B0A111C14 -:10A5100010E7C0465C1903009C190300FFFFFFF71A -:10A52000430270B542004C005D0AC30F4802120E90 -:10A53000460A240EC90FFF2A05D0FF2C08D001209F -:10A54000A2420BD070BD0120002DFBD1FF2CF6D113 -:10A550000120002EF6D10120A242F3D1B542F1D163 -:10A560008B4205D0002AEDD1281C431E9841E9E713 -:10A570000020E7E7F0B543024D024A0044005E0ABE -:10A58000240EC30F6D0A120EC90FFF2C0DD0FF2A27 -:10A5900031D0002C0DD177427741002A23D1002DF4 -:10A5A00021D10020002F0BD107E0002E28D1FF2A57 -:10A5B00021D0002A05D08B4207D0584201231843EE -:10A5C000F0BD002DF9D08B42F7D19442F5DC04DBCD -:10A5D000AE42F2D80020AE42F2D2584243410120AE -:10A5E0005B421843ECE7002FE5D04842414101208F -:10A5F00049420843E4E7002D02D1002CCBD0DAE732 -:10A6000002204042DCE7C0464302F0B542004C0065 -:10A610005E0AC30F4802120E450A240EC90FFF2A14 -:10A620000FD0FF2C1AD0002A10D177427741002C8E -:10A6300029D0002F17D04842414101204942084308 -:10A640000BE00220002E08D1FF2C07D0002C0AD1ED -:10A65000002D08D1584201231843F0BD0220002DDF -:10A66000FBD1002AE1D08B42F4D1A242F2DC04DB20 -:10A67000AE42EFD80020AE42EFD258424341012013 -:10A680005B421843E9E7002DD3D10020002FE4D12D -:10A69000E0E7C046F0B55F4656464D464446F0B446 -:10A6A00045024600C40F83B00F1C6D0A360EA34648 -:10A6B00045D0FF2E25D080231B041D4300239A463E -:10A6C000ED007F3E01937B025B0A98467800FB0F0A -:10A6D000000E994640D0FF2838D0802342461B0404 -:10A6E0001343DB00984600237F384A46019F301809 -:10A6F0006240411C1F430F2F69D87D4EBF00F659A1 -:10A70000B746002D45D108230193063B9A46DAE768 -:10A7100093465346022B2FD15B46012400251C4053 -:10A72000FF236D02DB056D0AE4071D432543281C4A -:10A7300003B03CBC90469946A246AB46F0BD002D06 -:10A740002CD104230193033B9A46BCE743465A426B -:10A7500053410322D31AC8E742460123002AC4D03A -:10A76000404602F0C7F94246431F9A4076235B42B7 -:10A77000181A90460023B8E7032B00D1ADE0012B57 -:10A7800000D08CE05B4654461C40E4B20023002518 -:10A79000C7E70C230193093B9A4694E7281C02F073 -:10A7A000A9F97626431F9D4000237642361A01936D -:10A7B0009A4688E780250024ED03FF23B1E745464C -:10A7C000CB469A46A5E7454693469A46A1E74346B7 -:10A7D0002C041B0C9C46230C444626041C1C360CE3 -:10A7E0002F0C7443351C66467D4373437743EB1847 -:10A7F000260C9E19B54203D980235B029C46674410 -:10A8000024043304240C1B199D016C1EA5419B0ECE -:10A81000360C2B43BD19AD011D432B0104D501237B -:10A8200068081D400543081C031C7F33002B2CDDEA -:10A83000690704D00F212940042900D004352901DB -:10A8400003D52C4B1D40031C8033FE2B17DD012448 -:10A85000FF231440002564E78020C003054209D08F -:10A860004346034206D1454605436D026D0A4C46F8 -:10A87000FF2356E705436D026D0AFF2351E70124CC -:10A88000AD016D0ADBB214404BE77E235B421B1A1D -:10A890001B2B07DD012400231440002541E7081C81 -:10A8A0005A46C1E79E30291C8540D940681E854123 -:10A8B0000D436B0704D00F232B40042B00D004352D -:10A8C0006B0104D5012401231440002529E701244C -:10A8D000AD016D0A1440002323E78023DB031D43F1 -:10A8E00001245B466D0223401C1C6D0AFF2318E700 -:10A8F000DC190300FFFFFFF7F8B54A0043024400EC -:10A900004D02C00F240E061C9B09120EC90FAD0983 -:10A91000FF2A00D175E001277940884250D0A01A63 -:10A92000002800DC8FE0002A1ED1002D00D075E049 -:10A930005A0704D00F221A40042A00D00433802280 -:10A940000120D2041A403040002A32D00134FF2CBA -:10A9500000D184E09B015B0AE4B25B02E4055B0A80 -:10A960002343C0071843F8BDFF2CE1D08022D20456 -:10A9700015431B287ADD01255B1B5A015DD59B0120 -:10A980009F09381C02F0B6F805388740844269DC1C -:10A99000001B1F243A1C431C201ADA408740131C5A -:10A9A0007C1EA74100243B43C2E7131E45D1002370 -:10A9B0000020DB08FF2C28D05B025B0AE4B2CCE766 -:10A9C000A11A00295BDD002A2ED0FF2CB0D08022F6 -:10A9D000D20415431B2974DC2F1C2022CF40511AAE -:10A9E0008D40691E8D413D435B195A0125D50134C7 -:10A9F000FF2C74D001217E4A194013405B080B43A1 -:10AA000096E7002D00D088E785E7002B27D080222D -:10AA1000D20313435B025B0AFF249EE70138002840 -:10AA2000AAD0FF2CA5D183E7002D00D180E7013902 -:10AA30000029D9D0FF2CCDD17AE75A0700D079E789 -:10AA400001203040B5E7002825D1621CD2B2012A8E -:10AA500055DD5F1B7A012DD5EF1A0E1C91E7FF24FF -:10AA600000237AE7624B241A3B4061E7291C20222D -:10AA7000C140101A8540681E85410D437CE70029BE -:10AA800046D1621CD1B201292BDDFF2A26D0EB185A -:10AA90005B08141C4CE7002C15D0FF2A1AD0802428 -:10AAA000E404404223431B284DDD0123EB1A141C10 -:10AAB0000E1C62E7002F00D063E700230020002473 -:10AAC00077E7012590E7002B39D0C0430028EDD06F -:10AAD000FF2AE8D12B1CFF240E1C29E7FF240023AA -:10AAE00067E7002C5AD1002B7FD0002D00D11FE743 -:10AAF0005B195A01A1D53E4A0134134018E7002CD6 -:10AB000015D1002B2FD1002D5ED02B1C0E1C0FE772 -:10AB1000002C21D1002B54D0C943002904D0FF2A96 -:10AB20004CD01B2958DD01235B19141C5DE7002B59 -:10AB300023D1002D4BD02B1C0E1CFF24F8E62B1C20 -:10AB4000141C0E1CF4E61E1C2024C640201A834050 -:10AB5000581E83413343A9E7FF2A2FD08024E40401 -:10AB600049422343DDE7002D00D1E1E65A1B5001A5 -:10AB700000D41AE7EB1A0E1CDAE6FF24002D00D1F0 -:10AB8000D6E68022DB08D203134204D0ED0815423A -:10AB900001D12B1C0E1CDB00FF24C9E6002B0DD0BD -:10ABA000FF24002D00D1C3E68022DB08D20313422C -:10ABB000F1D0ED081542EED12B1CECE72B1CFF2445 -:10ABC000B6E62B1C141CB3E6231C0020F1E6802300 -:10ABD00000209B04FF24ECE61F1C2024CF40611AB8 -:10ABE0008B40591E8B413B439EE72B1CA0E6C04681 -:10ABF000FFFFFFFB4202510A4200C30F120E00206A -:10AC00007E2A0DDD9D2A0CDC802000040143952A5C -:10AC10000ADC9620821AD1400A1C58424240D018C1 -:10AC20007047034A9818FBE7963A91400A1CF4E7EC -:10AC3000FFFFFF7F70B5041E39D0C50F00D044421E -:10AC4000201C01F057FF9E23261C1B1A962B07DCA5 -:10AC5000082801DD083884406402640AD8B21EE086 -:10AC6000992B0ADD0522211C121AD1400A1C011C55 -:10AC70001B318E40711E8E411643052801DD421F97 -:10AC800096400F4C3440720704D00F221640042E19 -:10AC900000D0043462010ED4A401640AD8B2640264 -:10ACA000C005640AED0704432C43201C70BD002539 -:10ACB00000200024F3E7024B1C409F231B1AEBE704 -:10ACC000FFFFFFFB10B5041E35D001F013FF9E21DE -:10ACD000091A962909DC082830DD021C231C083AD1 -:10ACE00093405B025B0AC8B220E099290CDD052283 -:10ACF000231C121AD3401A1C031C1B339C40231C18 -:10AD00005C1EA34113431C1C052801DD431F9C400E -:10AD10000F4B2340620704D00F221440042C00D0B4 -:10AD200004335A010ED49B015B0AC8B25B025B0A72 -:10AD3000C005184310BD00200023F7E763025B0A3B -:10AD4000C8B2F3E79F21024A091A1340EBE7C04655 -:10AD5000FFFFFFFBF0B5454657464E4694464C0074 -:10AD60000A03C90FE0B488460E1C1903470FC5003B -:10AD7000480A6146490F01436046520A1743C00022 -:10AD80005A00640D520DDB0F8446984500D1A7E0B0 -:10AD9000A01A002800DC01E1002A3DD163460B43E4 -:10ADA00000D0D4E06B0700D188E00F232B40042BA8 -:10ADB00000D183E02A1DAA42AD4180236D427F1954 -:10ADC0001B043B404646151C002B00D17CE0CC4BBD -:10ADD00001349C4200D1FDE03A1CCA4BED081A40F8 -:10ADE0005007640552020543120B640D0021120343 -:10ADF0000B0D1B056405120B1A436308C24CF607C2 -:10AE000014401C43640064083443281C211C1CBCEF -:10AE100090469946A246F0BDB94B9C42C2D08023D1 -:10AE20001B041943382800DDECE01F2800DD21E178 -:10AE300020220E1C6346121A9640C34033436646D6 -:10AE40009640321C561EB24113430A1CC240EB1AF4 -:10AE50009D42B6411D1CBA1A7642971B3B0200D494 -:10AE600097E07A02560A002E00D1B6E0301C01F0BD -:10AE700041FE031C083B1F2B00DDB7E09E40371C42 -:10AE800028262A1C361AF240161C9D403E439C423E -:10AE900000DDB2E01C1B621C1F2A00DDD8E01F236E -:10AEA000291C1C1B331CA540A340D1406C1EA5418E -:10AEB000D64019430D43371C002473E780231B043D -:10AEC0003B40464600D082E78D4BED0878070543AE -:10AED000FA089C4232D012036405120B640D85E718 -:10AEE000A31A002B00DC94E0002A3CD0844A944250 -:10AEF00000D157E7802212041143382B00DC05E112 -:10AF000063461943481E81410022C8B24019A84235 -:10AF10009B41051CD2195B42D7183B0239D5784BAF -:10AF200001349C4200D14CE10120764A6B083A4042 -:10AF300028401843D5070543570833E72B1C134314 -:10AF400048D080231B031A431203120B4EE701382B -:10AF5000002878D16346EE1AB5429B417A1A5B42CB -:10AF6000D71A351C7AE7021C0A4300D11AE7013BC5 -:10AF7000002B00D0F2E04019A8429B41CA195B4265 -:10AF8000D718051CC9E7131C334300D118E1171C5F -:10AF9000351C46466B0700D007E795E700287AD1B5 -:10AFA000621C5205520D012A00DCFBE06246AA1A1F -:10AFB0009542B6419146781A7242861A320200D4FE -:10AFC00093E06246551BAC458041CF1B40423E1A80 -:10AFD000984648E70022002508E7281C01F08AFD72 -:10AFE0002030031C083B1F2B00DC47E72838854036 -:10AFF0002E1C00259C4200DC4CE7424AE41A164015 -:10B00000371CCFE6634619434B1E99410022CBB251 -:10B010001DE7002B00D0F2E0601C43055B0D012B07 -:10B0200000DCA4E0364B984200D121E163465C1974 -:10B03000AC429B41CF195B42FA186408D5072543FF -:10B040005708041CAEE62E4B9C4200D0EAE6A9E667 -:10B05000211C331C1F39CB40191C202A00D182E04F -:10B060003F231C1BA64035436E1EB54100270D43F0 -:10B0700000248EE7031C0E1C203BDE40202874D0E9 -:10B0800040231B1A99400B1C62461343591E8B41E7 -:10B0900000223343DBE6002C50D0194CA24200D1F1 -:10B0A000A8E08024240440422743382800DDD9E06A -:10B0B0001F2800DD39E120243E1C241AA640B0469A -:10B0C0002E1CA146C640444626434C46A5406C1E55 -:10B0D000A541C74035436046451BCF1BAC45894160 -:10B0E00049427F1A141C9846B8E64B464D463343F6 -:10B0F00000D0B8E60026002700240025E4E6C0467C -:10B10000FF070000FFFF7FFFFFFF0F801F2B5BDCAF -:10B110002022081CD21A9040814660469246D840B0 -:10B120004A4610438146524660469040021C501EDB -:10B130008241484610430A1CDA40E7E63C1C2C4397 -:10B1400058D0C043002851D16046451BAC458041D2 -:10B15000CF1B40423F1A141C98467FE68F4A944208 -:10B1600000D0CAE61EE600267DE700238CE73B1CE4 -:10B170002B43002C00D0BDE0002B00D1F5E063464E -:10B180000B4300D10EE663465B19AB428041CA19FE -:10B19000404217183A0200D4FCE0814A1D1C1740B7 -:10B1A0000134FFE53A1C2A43002C51D1002A00D07B -:10B1B00085E062460A4303D00F1C65469846F1E5D8 -:10B1C0000026002700257FE6181C0A1C2038C240F4 -:10B1D000202B00D1A7E04020C01A8140081C634604 -:10B1E0001843411E8841104300228FE66B4CA24257 -:10B1F00000D05AE70F1C6546141C9846D2E5002C77 -:10B200003AD1381C284371D0DB43002B18D0634857 -:10B2100082426BD0382B00DD9DE01F2B00DDA7E0C4 -:10B2200020203C1CC01A8440A1462C1C8246DC40D5 -:10B230004846044350468540681E8541DF4025430B -:10B24000654465459B417F185B42FF18141C64E60A -:10B25000002A19D162460A4377D00F1C65469846EA -:10B260004E4C9FE53D436F1EBD410027EDB232E7D6 -:10B27000041C0027002527E64848824236D080205B -:10B2800000045B420743C5E762460A4349D0802475 -:10B29000ED087807FA0824032843224209D0CE0893 -:10B2A000264206D162464F07381CD2081043984602 -:10B2B000321CD200470F1743C500384C72E5624676 -:10B2C0000A4300D16EE56246AE1AB5429241781A41 -:10B2D0005242821A100200D455E66246551BAC4514 -:10B2E0008041CA1B4042171A98465BE50F1C654611 -:10B2F000141C57E5002B34D063460B4311D0802437 -:10B30000ED087807FA08240328432242D1D0CB085D -:10B310002342CED162464F07381CD20810431A1C74 -:10B32000C7E71E4C3EE5002059E7041C3E1C203CAC -:10B33000E640341C20282BD04026301A87403D435D -:10B340006F1EBD4100272543C5E680270026FF0369 -:10B35000124C0025B8E53D436F1EBD410027EDB2FC -:10B360006EE70F1C65460D4C1CE50F1C654619E584 -:10B370001C1C381C203CE040041C202B0CD040201E -:10B38000C31A9F403D436F1EBD410027254357E729 -:10B390000027D4E71D1CFCE50027F3E7FF070000AA -:10B3A000FFFF7FFFF0B55F4656464D464446F0B47A -:10B3B0000F0387B098464D003B0BCC0F061C9246FE -:10B3C00081469B466D0D01946BD0664B9D4235D0F6 -:10B3D00080275B467F031F43F3009946624BFF00C3 -:10B3E000400F9C4607430023BB460026654400935C -:10B3F000424617035000D20F53463F0B400D904674 -:10B4000000D172E0574A904267D080235B031F430C -:10B410005346554A5B0FFF001F4394465346002195 -:10B42000DB0060444246624092462D1A0E430F2EC6 -:10B4300000D9A1E04D48B600805987465B461E43BF -:10B4400000D076E000239B469946023308260093FD -:10B45000CEE799464346BB4601930091009B022BE1 -:10B460006BD1019B9A460021534601220027894651 -:10B470001A403C4B00213F030C0D24053F0B274392 -:10B480003B4C1B0527401F437F00D2077F08174313 -:10B490004846391C07B03CBC90469946A246AB468C -:10B4A000F0BD03433ED05B46002B00D19CE15846E3 -:10B4B00001F020FB2823311C1B1A021C5F46D940D7 -:10B4C000083A97400B1C96403B439B46B1460023ED -:10B4D000284D00262D1A00938AE7524603213A434D -:10B4E000A0D10027002302219CE752463A4315D001 -:10B4F000002F00D185E1381C01F0FCFA021C282144 -:10B500005046891A131CC8405146083B99409F4039 -:10B510000B1C074317480021801A83E700270023EC -:10B5200001217FE700239B469946013304260093BF -:10B530005EE703230C2600935AE7032B00D13CE27D -:10B54000012B00D0BFE11A1C019B1A4000210023EF -:10B55000002789468EE700238027994600223F0373 -:10B56000004B87E7FF07000001FCFFFF1C1A0300E8 -:10B57000FFFF0F800DFCFFFFBB4500D951E100D15B -:10B580004CE14A46039200225C469046013D180E6B -:10B590003F0238431B020193030C994603041B0C22 -:10B5A0004946061C201C1F1C0093FEF755FA021C7E -:10B5B0007A4302904946201C171CFEF7D3FA039BDE -:10B5C00009041B0C19438F420CD9029B8919013BBA -:10B5D0008E4200D952E18F4200D84FE1029B891977 -:10B5E000023B0293CC1B201C4946FEF735FA009F14 -:10B5F000834647434946201CFEF7B4FA039A0B04DE -:10B600001404240C23439F420DD95A469B19013A36 -:10B610009E4200D930E19F4200D82DE102225242E1 -:10B6200094469B19E344029ADB1B17045A463A439B -:10B630009346019C170C220C101C04925A461104CC -:10B640002204120C141C090C7C4305924A4341430A -:10B6500047436118100C09188C4203D9802040021E -:10B66000844667440C0C12040804120C3C1981181F -:10B67000A34200D2E5E000D1DFE01F1B43465C1A85 -:10B68000A04592415242BF1AB74200D10EE1381C88 -:10B690004946FEF7E1F9009B029043434946381CB6 -:10B6A0009846FEF75FFA230C0F041F43B8450CD9E8 -:10B6B000029BBF19013BBE4200D9FBE0B84500D850 -:10B6C000F8E0029BBF19023B02934346FF1A49462A -:10B6D000381CFEF7C1F9009B039043434946381CD0 -:10B6E0009846FEF73FFA24040904240C21438845B8 -:10B6F0000CD9039B8919013B8E4200D9DCE08845B7 -:10B7000000D8D9E0039B8919023B03934346C91A29 -:10B71000029B039A1B04059C1A43100C13049146C8 -:10B72000221C049F1B0C5A4344437B437843E31879 -:10B73000170CDB199C4203D980246402A4466044A0 -:10B740001C0C12041B04120C00199B18814200D21D -:10B7500096E000D1FCE04A4601231A4391469B4BF8 -:10B76000EB18002B00DC99E04A4652070AD00F2262 -:10B7700049460A40042A05D0043149459241894688 -:10B78000524293445A46D20106D55A46904B1A402B -:10B7900080239346DB00EB188E4A934200DD62E67D -:10B7A0004A465946D208490711435A468946570224 -:10B7B000514601225B053F0B5B0D0A405AE6802093 -:10B7C0005A460003024208D0074206D107433F030E -:10B7D00099463F0B4246804B4CE65F4607433F038A -:10B7E0003F0B221C7C4B45E601F084F9031C203002 -:10B7F000272800DC5EE6083B9E400023B3469946BE -:10B8000065E6504601F076F9021C2032272A00DC5A -:10B8100075E657460838874000237BE6994500D2F5 -:10B82000AFE65A46594654084A46C80752080243EA -:10B8300003924A46D2079046A9E60027884500D3DE -:10B840001CE7019F5A46BC46E044B845BF417F42D1 -:10B85000BF19FF18013ABE4206D2BC425FD800D1E0 -:10B860009FE03F1B934609E7B742FAD1019B43454E -:10B87000F3D9371B934601E79346D4E60293B1E62A -:10B880004A468919013A8E4218D99146814200D020 -:10B8900061E7019A9A4200D05DE760E74F4F7F1B56 -:10B8A000382F13DD012253461A404FE601235B4235 -:10B8B000994654E7029308E7039327E788423CD868 -:10B8C00074D0914647E7019B9A4648E71F2F44DC16 -:10B8D000434B4A469C465B466544FA40AB401343A3 -:10B8E0004A46AA40151C6A1E95415A46FA402B4307 -:10B8F000171C5A0709D00F221A40042A05D01A1D16 -:10B900009A429B415B42FF18131C3A023ED55346B4 -:10B91000012200211A40002701238946AAE50223BB -:10B920005B429C46019AE3449446E04490459B4127 -:10B930005B429B19DF193F1BA0E6019F4A467C0032 -:10B94000BC42BF417F42BF19023AC91901949CE72A -:10B95000002B95D1002201929BE75A46214B5B1B9D -:10B96000DA40202F27D0204B9C465B466544AB40F5 -:10B9700049460B43591E8B411343072200271A40A7 -:10B9800007D00F2200271A40042AB8D17A077F0275 -:10B990003F0BDB0813439946012253461A4000230C -:10B9A00068E54145BBD89346002767E6019C9C4269 -:10B9B000C3D391466DE70023DAE780275B463F0358 -:10B9C0001F433F033F0B019A034B53E5FF03000066 -:10B9D000FFFFFFFEFE070000FF07000002FCFFFF65 -:10B9E0001E040000E2FBFFFF3E040000F0B55F46CE -:10B9F0004D4644465646F0B41F035C00DB0F9946A3 -:10BA00001B4B0E034D00C90F8446360B6D0D8B4644 -:10BA100090463F0B640D9D420CD0154B9C4210D0BC -:10BA20000123A54214D0181C3CBC90469946A2465E -:10BA3000AB46F0BD311C01230143F4D10C4B9C42B9 -:10BA4000EED13A430123002AEDD10123A542EAD1E8 -:10BA5000BE42E8D1C445E6D1CB4506D0002DE2D1A7 -:10BA60003043031C581E8341DDE70023DBE7C0465B -:10BA7000FF070000F0B5574645464E46E0B40F03B9 -:10BA80004E00C90F8A4632491D035C0084463F0BB5 -:10BA9000760D90462D0B640DDB0F8E420FD08C423D -:10BAA00039D0002E10D13843414241418946002C03 -:10BAB00027D12A4325D1002000290ED108E0391CC6 -:10BAC00001432ED1B44226D0002C0BD09A450DD084 -:10BAD0005346594201231943081C1CBC9046994601 -:10BAE000A246F0BD2A43F3D09A45F1D1A642EFDC3D -:10BAF0001ADA504641424841012341421943081C89 -:10BB0000EBE74A46002AE1D058425841012241421F -:10BB10001143081CE1E7291C114302D1002EC2D0B9 -:10BB2000D4E702204042D8E7AF42D1D809D0002064 -:10BB3000AF42D2D2504641424841012340421843CD -:10BB4000CBE7C445C4D80020C445F3D3C5E7C046FD -:10BB5000FF070000F0B55F464D4644465646804616 -:10BB6000F0B4061C0803000B84462C484C001F034D -:10BB70005D00C90F640D8B4691463F0B6D0DDB0FC9 -:10BB8000844212D0854225D0002C14D161460E4348 -:10BB900070424641002D35D0002E21D058425841E8 -:10BBA000012143420B43181C0EE061460220314341 -:10BBB0000AD1A5420ED0002D12D13A4310D15B46D6 -:10BBC000594201231943081C3CBC90469946A246A1 -:10BBD000AB46F0BD391C02201143F5D1002CD5D065 -:10BBE0009B45ECD1AC42EADC05DBBC45E7D80FD085 -:10BBF0000020BC45E8D2584641424841414201201C -:10BC00000843E1E73A43C7D10020002EDCD1D6E754 -:10BC1000C845D4D80020C845EDD3D5E7FF070000BC -:10BC2000F0B55F4656464D464446F0B4051C061C2A -:10BC3000080387B099464F00030BCC0F92469B46F2 -:10BC40007F0D019467D06C4B9F4236D080205B46BD -:10BC500040031843C0006B0F1843684B83469C4653 -:10BC600000239846EE00674400934B4649461D0367 -:10BC7000C90F5B0052462D0B5B0D894600D16EE06B -:10BC80005D498B4264D080205C4940038C46002192 -:10BC90000543ED00500F0543D20063444846FF18AA -:10BCA0007B1C9A46009B604002900B430F2B00D9EF -:10BCB000ACE053489B00C3589F465B461D4300D0F1 -:10BCC00082E00823009300239B4602330026984617 -:10BCD000CBE7029B01934346022B59D10124002557 -:10BCE0000026019B1C40444B00212D030A0D120528 -:10BCF0002D0B1543434A1B0515401D436D00E407FA -:10BD00006D082543301C291C07B03CBC9046994661 -:10BD1000A246AB46F0BD2B434ED05B46002B00D174 -:10BD200085E1584600F0E6FE021C2823291C9B1AD8 -:10BD3000161C5846D940083EB0400B1CB540034382 -:10BD40009B462E1C0023304F0093BF1A98468CE769 -:10BD5000514629432ED10025002202219EE751465B -:10BD6000294323D0002D00D154E1281C00F0C2FE4D -:10BD7000031C28215046C91A1A1CC8405146083ACB -:10BD8000914095400A1C05431F480021C31A85E7CE -:10BD9000032B00D1C2E1012B00D06DE14446019B91 -:10BDA00000251C40E4B2002300269DE70025002268 -:10BDB000012173E7032171E70423009300239B46CD -:10BDC00001330026984650E70C230093093B984620 -:10BDD0004BE7802500242D030026074B84E74B46C4 -:10BDE000AB46161C0193884675E7029BAB46161CB2 -:10BDF000019388466FE7C046FF07000001FCFFFF84 -:10BE00005C1A0300FFFF0F800DFCFFFF330C3604AC -:10BE1000360C9C46331C140C1204120C53439846E7 -:10BE2000634653439946634663430193331C41463B -:10BE30006343090C4B445B18994505D980204002A7 -:10BE40008146019949440191190C03914146090425 -:10BE5000090C1B045B1804932B0C9846331C2D040F -:10BE6000290C4B43604600934346654658435E4366 -:10BE7000009B4D431B0C9946AE194E448446B54277 -:10BE800003D980235B029946CC44350C2B1C0398C4 -:10BE9000634484460593009B36041B041B0CF31873 -:10BEA0009C446046039058460504060C280C8446C2 -:10BEB0005043351C81466046654344434846000C68 -:10BEC0008346724314195C44A24203D98022520271 -:10BED00093465D44220CAD184A461204120C240409 -:10BEE0004046A41862464A43714346436046009662 -:10BEF000464670438046100C84468844E0444145E1 -:10BF000005D9802149028C4600996144009101982D -:10BF100003998446614499429B415B429946059846 -:10BF2000434684461204120C1B049B1863449C462F -:10BF3000AB4683429B4140460A19CC44A242894108 -:10BF4000E344CC45B6415C46000C8046494276420B -:10BF50005B426418334398448C428941AB459B4112 -:10BF600049425B4219430D1C009B4544EE18760282 -:10BF7000E50D2E43B346049B56021E43731E9E419D -:10BF80005B46D20D324366021643DB010AD501231C -:10BF9000334076081E435B46DB071E435B465B0867 -:10BFA0009B465746634BFB18002B5ADD720709D09E -:10BFB0000F223240042A05D0321DB242B6417642E9 -:10BFC000B344161C5A46D20106D55A465A4B1A405B -:10BFD00080239346DB00FB18584A934234DD01244A -:10BFE000029B00251C400026554B7DE680205B46C9 -:10BFF0000003034208D0054206D105432D032D0B53 -:10C000004C46161C4E4B6FE65D4605432D032D0B2B -:10C010004B4B69E6504600F06DFD031C2033272B87 -:10C0200000DCA6E65546083885400022ACE6281C10 -:10C0300000F060FD021C2032272A00DC75E608387B -:10C0400085400026AB467DE65A46F6085207164361 -:10C050005A4601245502029A5B052D0B5B0D1440D4 -:10C0600042E6384DED1B382D0ADD0124029B0025E8 -:10C070001C400026002337E6019B5746029391E7B8 -:10C080001F2D25DC304B321C9C466744BE405B466E -:10C09000BB40371CEA407E1EB74113433B431E1C86 -:10C0A0005B46EB401D1C730709D00F233340042B64 -:10C0B00005D0331DB342B6417642AD191E1C2B028A -:10C0C00020D50124029B00251C40002601230BE6FD -:10C0D0005A461E4BDB1BDA40131C202D1CD01C4A79 -:10C0E00094465A466744BA40171C3E43721E964116 -:10C0F0001E4307230025334007D00F23002533407C -:10C10000042BD6D16B076D022D0B0124F6081E43BC -:10C11000029B1C400023E7E50027E6E780255B46FD -:10C1200001242D031D43019B2D0323401C1C2D0BBB -:10C13000034BD9E5FF030000FFFFFFFEFE070000F1 -:10C14000FF07000002FCFFFF1E040000E2FBFFFFF0 -:10C150003E040000F0B54D4644465F465646F0B4F6 -:10C160000E1C111C3203520A470F1743C5001A0355 -:10C170005800DB0F9946520A4B0F83B01A43CB008D -:10C180000193CF4B7400F60F640DB046400D9842FA -:10C1900000D1E8E00123494659400B1C9E4200D1E2 -:10C1A000B1E0261A002E00DC1CE1002842D1131C4D -:10C1B00001990B4300D0E6E06B0700D18EE00F231E -:10C1C0002B40042B00D189E02A1DAA42AD418023D7 -:10C1D000012641466D427F191B043B400E40151C51 -:10C1E000002B00D183E0B64B01349C4200D116E114 -:10C1F0003A1CB44BED081A4050076405520205433F -:10C20000120B640D002112030B0D1B056405120BAC -:10C210001A436308AC4CF60714401C4364006408DE -:10C220003443281C211C03B03CBC90469946A246CE -:10C23000AB46F0BDA24B9C42BED080231B041A43E8 -:10C24000382E00DD03E11F2E00DD3FE12020831B9F -:10C250009946131C49468B409C46019B6046F3401F -:10C2600003430198F2408840011C481E81410B4362 -:10C27000EB1A9D4280411D1CBA1A4042171A3B021C -:10C2800000D4A8E07A02560A002E00D1CAE0301C81 -:10C2900000F030FC031C083B1F2B00DDCBE0282204 -:10C2A000291C121AD1409E400A1C9D4032439C42D8 -:10C2B00000DDC8E01C1B671C1F2F00DDEDE01F2305 -:10C2C000291C1C1B131CA540A340F9406C1EA54152 -:10C2D000FA4019430D43171C00246DE78023012603 -:10C2E00042461B043B401640002B00D07BE7744BBA -:10C2F000ED0878070543FA089C423BD01203640519 -:10C30000120B640D7EE7231A9A46002B00DCA5E091 -:10C31000002844D06A48844200D14DE780200004C0 -:10C3200002435346382B00DC1CE1019B1A43511E8B -:10C330008A41D1B200224919A94280410D1CD2196B -:10C34000404217183B0246D55D4B01349C4200D158 -:10C3500069E101205B4A6B083A4028401843D50741 -:10C360000543570828E7131C01990B4300D111E737 -:10C370004B4613E72B1C134351D080231B031A4356 -:10C380001203120B3EE7013E002E00D080E0691A36 -:10C390008D429B41BA1A5B42D71A0D1C6FE7101CE5 -:10C3A000019B184300D107E701235B429C46E2440E -:10C3B0005346002B00D002E1019BD2195919A94222 -:10C3C0009B415B42D7180D1CBCE76346034300D179 -:10C3D00028E1071C65466B0700D0F0E601264346BE -:10C3E0001E4084E7002E00D081E0601C4005400D17 -:10C3F000012800DC07E10199681A84466545B641C9 -:10C40000B81A7642861B300200D4A1E08C464D1B40 -:10C41000AC458941D21B4942561A984634E700225E -:10C420000025EFE6281C00F065FB2030031C083BCC -:10C430001F2B00DC33E7021C283A95402A1C0025FC -:10C440009C4200DC36E71F4FE41A1740B4E6019B1C -:10C450001A43511E8A41D3B2002209E7002B00D0B3 -:10C4600001E1601C43055B0D012B00DCB0E0144BC7 -:10C47000984200D11EE1019BD2195919A9429B4152 -:10C480005B42D2184908D5070D435708041C93E6B0 -:10C490000B4B9C4200D0D3E68EE6211C131C1F39A7 -:10C4A000CB40191C202F00D18EE03F231C1BA24043 -:10C4B00015436A1E954100270D4300248BE7C046B3 -:10C4C000FF070000FFFF7FFFFFFF0F80331C101CE2 -:10C4D000203BD840202E79D040239B1B9A40131C30 -:10C4E000019A1343591E8B4100220343C0E6002CDE -:10C4F00053D0C74CA04200D1B0E08024714289469D -:10C50000240427434946382900DDCDE01F2900DDFA -:10C5100059E120243E1C611A8E408A46B0464946A5 -:10C520002E1CCE405146B4468D4064464646494690 -:10C5300026436C1EA541CF4035430199D71B8C463D -:10C540004D1BAC4592415242BF1A041C984696E6D8 -:10C5500063466546334300D096E600260027002454 -:10C560000025C4E61F2B61DC2020C31A9B46131C48 -:10C5700059468B4051469946019BCB409C464B46C1 -:10C58000604603439C465B46019999406346481EBA -:10C59000814119435346DA40CDE63C1C2C435DD023 -:10C5A000F1438946002955D10199D21B8C464D1B78 -:10C5B000AC4589414942571A041C98465FE69448A5 -:10C5C000844200D0ADE6F7E5002271E7002387E75B -:10C5D0003B1C2B43002C00D0DAE0002B00D113E1F0 -:10C5E000131C01990B4300D1E6E54919A9429B416F -:10C5F000D2195B42D7183B0200D421E1854B0D1CB8 -:10C600001F40041CD8E5381C2843002C40D10028CA -:10C6100000D083E0101C0199084303D0171C0D1CA7 -:10C620009846C9E500260027002560E65046131C01 -:10C630002038C340181C5346202B00D1C1E04023B2 -:10C6400051465B1A9A40019911434A1E91410022BA -:10C65000014370E66E4CA04200D053E7171C019DC9 -:10C66000041C9846A8E5002C28D13C1C2C4300D182 -:10C670008AE0DB439A46002B00D082E0019BD2196E -:10C680009C4665449D42894149425718041C59E61D -:10C6900000285BD1101C0199084300D1A4E0171CAD -:10C6A0000D1C98465A4C87E53D436F1EBD4100273F -:10C6B000EDB242E7041C0027002518E6544CA042C6 -:10C6C00062D0534680245B429A4624042743534653 -:10C6D000382B00DD8EE01F2B00DD9DE02024E31AC7 -:10C6E0009B463B1C59468B40514699462B1CCB40E0 -:10C6F0009C464B46644623439C465B469D406346AE -:10C700006C1EA541CF401D43019BBF189C4665444C -:10C710009D4292415242BF18041C13E6101C01991D -:10C72000084300D148E5681A844685428041BE1A14 -:10C730004042301A060200D447E68C464D1BAC45F9 -:10C740008941D21B4942571A984635E5101C019978 -:10C75000084334D080247807ED08FF0824032843D9 -:10C76000274208D0D608264205D1C90852070A43F5 -:10C77000101C371C9846FF00420F1743C500244C7D -:10C780001AE5234CA042A2D1171C019D041C13E5FD -:10C79000002B35D0131C01990B4310D0802478074F -:10C7A000ED08FF08240328432742E4D0D30823429E -:10C7B000E1D1C90852070A43101C1F1CDBE7144CC7 -:10C7C000FAE400223FE74C463E1C203CE640494646 -:10C7D000341C202932D04026761AB7403D436F1EC4 -:10C7E000BD4100272543A8E680270026FF03084C0B -:10C7F00000257CE53D436F1EBD410027EDB283E778 -:10C80000171C019D024CD7E4171C019DD4E4C046BF -:10C81000FF070000FFFF7FFF54463B1C203CE34026 -:10C820001C1C5346202B0DD0402351465B1A9F40C1 -:10C830003D436F1EBD410027254365E70027CDE737 -:10C840000D1CC8E50027F3E70B0330B5134C1A0B9A -:10C850004B00051C5B0DC90F0020A34210DD1048E2 -:10C8600083420EDC80200F4C40030243E41A1F2C4D -:10C870000ADD0D48C31ADA40131C484243405818D9 -:10C8800030BD0A4BC818FBE7281CE040084CA44602 -:10C8900063449A40131C0343EFE7C046FE030000C5 -:10C8A0001D0400003304000013040000FFFFFF7F9D -:10C8B000EDFBFFFF38B5041E16D0C50F00D0444273 -:10C8C000201C00F017F9174B1B1A0A2821DC021C48 -:10C8D000211C153291400A1C0B21081AC4405B052B -:10C8E0002403240B5B0D03E0002500230024002219 -:10C8F0000021101C24030A0D1205240B14430A4ABC -:10C900001B0514401C436400ED0764082C43211CE4 -:10C9100038BD0B3884405B052403240B5B0D0022DB -:10C92000E6E7C0461E040000FFFF0F804200120E23 -:10C93000511C38B5C9B243025D0AC40F012915DD87 -:10C94000E02189008C466D071B0B62440021281CE6 -:10C950000D0D2D052B431C4D52052B405208134342 -:10C960005B00E4075B082343191C38BD002A15D17E -:10C97000002D1FD0281C00F0BDF80A281DDC0B2359 -:10C980002A1C1B1ADA40131C021C153295400F4A50 -:10C990001B03121A52051B0B520DD7E7002D06D0B0 -:10C9A00080221B0B120313436D07094ACEE7084A86 -:10C9B0000023CBE700220023C8E7031C0B3B9D406C -:10C9C0002B1C0025E3E7C046FFFF0F808903000012 -:10C9D000FF07000070B50B034D00440F6D0D5B0A9F -:10C9E00023436C1C6405C90FC200640D012C2ADDB1 -:10C9F0003B4C2C19FE2C1ADC002C35DD8001451E29 -:10CA0000A841DB000343520F13435A0704D00F22FF -:10CA10001A40042A00D004338022D2041A4027D0BE -:10CA20000134FF2C03D09B015B0AE4B201E0FF2438 -:10CA300000235B02E4055B0A23435B00C9075B0834 -:10CA40000B43181C70BD002D06D113430ED10024DA -:10CA50005B025B0AE4B2ECE71A43E8D08020DB001B -:10CA600080040343FF24D0E717340CDA05230024A5 -:10CA7000DB08FF2CECD1002B2DD08022D2031343F6 -:10CA80005B025B0AD5E78024164824042343401B3D -:10CA90001F280DDC144CA4466544AB401C1C131C21 -:10CAA000AB405D1EAB41C240234313430024ACE7BF -:10CAB0001E1C0E4C641BE640341C20280DD00C4874 -:10CAC00084466544AB401D1C2A43531E9A41131CE7 -:10CAD0002343002499E70023ABE70025F4E7C04691 -:10CAE00080FCFFFF9E03000082FCFFFF7E0300002E -:10CAF000A2FCFFFF1C2101231B04984201D3000C60 -:10CB000010391B0A984201D3000A08391B099842C0 -:10CB100001D30009043902A2105C40187047C046D6 -:10CB200004030202010101010000000000000000F6 -:10CB3000F0B544465F4656464D46F0B41C1C85B0E1 -:10CB4000002900DAA9E00F1C0021061C8846101CF1 -:10CB5000191C002C00DA97E0341C3D1C82468946E3 -:10CB6000B94273D870D04946504600F085F98346E3 -:10CB7000391C301C00F080F95B46181A031C8346F0 -:10CB8000203B9C4600D59CE00023002251460092A9 -:10CB9000019363469940019151468140019B009168 -:10CBA000BB4200D983E000D17EE0009A019B341C97 -:10CBB0003D1CA41A9D416346002B00DA9AE0002632 -:10CBC00000270296039701369E4003960126864071 -:10CBD0000296002800D171E00099019AD307994686 -:10CBE0004B464E081E435708002301220CE0AF427B -:10CBF00001D1A6420AD8A41BBD4124196D410138B8 -:10CC0000A4185D41002806D0AF42F0D9013824199C -:10CC10006D410028F8D12022029E039F5B465242BC -:10CC200036196F4199185AD4281CC8402C1C5B46F1 -:10CC3000DC40002968DB041C8C40231C59468840DA -:10CC4000021CB61A9F4103E0B0428CD9002600278F -:10CC500041464B1E9941002300910193009A019B8C -:10CC6000002554429D41331C6340181C3B1C6B4003 -:10CC7000191C009B019CC018614105B03CBC90464A -:10CC80009946A246AB46F0BD4346DB430C1C984692 -:10CC9000131C00215842A1415EE7002746428F4104 -:10CCA00001214942884652E7B14200D87DE700267B -:10CCB000002702960397002800D08DE7029E039F6D -:10CCC000C6E720215346091ACB400022191C002335 -:10CCD000009201934B4683400B4301935CE75A4615 -:10CCE00020239B1A2A1C9A40201C131C5A46D04011 -:10CCF00018439BE720260027331A00260296039745 -:10CD00000127DF40039761E75B4620215D46C91A92 -:10CD1000031CAC40CB40191C231C0B438EE7C046C0 -:10CD2000F0B545464E465746E0B4041C82B00D1C93 -:10CD3000914698468B4262D85FD04146484600F003 -:10CD40009BF8291C061C201C00F096F82023311AA1 -:10CD50005B428A46C81865D44B4683401F1C4B462D -:10CD60008B401E1CAF4258D855D0A41BBD41002893 -:10CD700000DA77E000220023009201930132824022 -:10CD8000019201238B40009300293CD0FB07984679 -:10CD9000404672087B080243012600270CE0AB42A4 -:10CDA00001D1A2420AD8A41A9D4124196D4101392A -:10CDB000A4197D41002906D0AB42F0D901392419CC -:10CDC0006D410029F8D12022009801995346524222 -:10CDD000001969419E183AD42F1CF7405346DD4094 -:10CDE000002E29DB3C1CB440231C5446A7403A1CAF -:10CDF000801A99410090019105E082429DD900235B -:10CE00000024009301940098019902B01CBC904644 -:10CE10009946A246F0BDA342A7D900220023009262 -:10CE20000193B1E720224B46521AD3401A1C4346C5 -:10CE30008B401F1C174392E7534620245646E41AA2 -:10CE40003B1CB540E3401C1C2B1C2343CDE7524642 -:10CE500020239B1A2A1C9A40271C131C5246D74099 -:10CE60001F43BBE720230022581A0023009201939E -:10CE70000132C240019284E710B5002903D1FFF7C7 -:10CE800039FE203002E0081CFFF734FE10BDC0461A -:10CE9000F0B54746754B440080B4051C071C640878 -:10CEA0009C420BDDFF23DB059C4200DD72E0002885 -:10CEB00000DC9DE06E4804BC9046F0BD6D4B9C428A -:10CEC00079DC6D4B9C4269DD01267642291C281CC9 -:10CED000FDF7E0FB80464146FDF7DCFB6749041C9B -:10CEE000FDF7D8FB6649FDF767F8211CFDF7D2FB7B -:10CEF0006449FDF761F8211CFDF7CCFB6249FDF7A1 -:10CF00005BF8211CFDF7C6FB6049FDF755F8211CB5 -:10CF1000FDF7C0FB5E49FDF74FF84146FDF7BAFB50 -:10CF20005C498046201CFDF7B5FB5B49FDF7E4FC3E -:10CF3000211CFDF7AFFB5949FDF7DEFC211CFDF775 -:10CF4000A9FB5749FDF7D8FC211CFDF7A3FB554968 -:10CF5000FDF7D2FC211CFDF79DFB011C731C49D081 -:10CF60004046FDF729F8291CFDF794FB4E4BB6000F -:10CF7000F158FDF7C1FC291CFDF7BEFC4B4B011C11 -:10CF8000F058FDF7B9FC002F95DA80231B069C466C -:10CF9000604490E7291CFDF70FF88CE74449FDF742 -:10CFA0000BF8FE218905FCF73DFF031C281C002B14 -:10CFB00000D080E788E700F013F93E4B051C9C4247 -:10CFC00023DC3D4B9C423FDC291CFCF7F5FFFE2196 -:10CFD0008905FDF791FC8021041CC905281CFCF77C -:10CFE000EBFF011C201CFDF763F90026051C6DE713 -:10CFF000324860E74046FCF7DFFF291CFDF74AFB9B -:10D00000011C281CFDF778FC55E72D4B9C4214DCD5 -:10D01000FF218905FDF770FCFF21041C8905281CF0 -:10D02000FDF738FBFE218905FCF7C6FF011C201C1B -:10D03000FDF73EF90226051C48E7291C2148FDF7AB -:10D0400037F90326051C41E7FE218905FDF754FC4D -:10D05000FE21041C8905281CFCF7AEFF011C201CC6 -:10D06000FDF726F90126051C30E7C046FFFF7F507B -:10D07000DB0FC93FFFFFDF3EFFFFFF30D769853C75 -:10D0800059DA4B3D356B883D6E2EBA3D2549123E2F -:10D09000ABAAAA3E21A215BD6BF16E3D95879D3DC1 -:10D0A000388EE33DCDCC4C3E9C1A0300AC1A0300F5 -:10D0B000CAF24971FFFF973FFFFF2F3FDB0FC9BF48 -:10D0C000FFFF1B40000080BFF0B54746430080B41F -:10D0D0005F081B0E7F3B051C1C1E162C1DDC8046AA -:10D0E000002B23DB1B4F061C1F41074211D01A499E -:10D0F000FCF762FF0021FCF795FE002809D0002D07 -:10D1000004DD80231B0423419846A8444346BB43C7 -:10D110001E1C301C04BC9046F0BD104B061C9F42E8 -:10D12000F7D9291CFCF748FF061CF2E70A49FCF76F -:10D1300043FF0021FCF776FE002806D0002D06DB19 -:10D14000002F02D0FE26B605E3E72E1CE1E780267D -:10D150003606DEE7FFFF7F00CAF24971FFFF7F7FDF -:10D1600000B51D4A430083B0011C5B08934217DDE4 -:10D170001A4A934203DDFDF7BFFB03B000BD6946C9 -:10D1800002F000FA03231840012816D002280BD021 -:10D1900000281CD000980199012203F037F8ECE731 -:10D1A000002102F0D5FBE8E70098019902F0D0FBDE -:10D1B00080231B069C466044DFE70199009801220A -:10D1C00003F024F880231B069C466044D5E70098B2 -:10D1D000019902F0BDFBD0E7D80F493FFFFF7F7FE9 -:10D1E000400040087047C046F0B54746430080B451 -:10D1F0005F081B0E7F3B051C1C1E162C18DC80468E -:10D20000002B1EDB1B4F061C1F4107420CD01A4986 -:10D21000FCF7D2FE0021FCF705FE002804D0002D0B -:10D220001DDB4346BB431E1C301C04BC9046F0BDB6 -:10D23000124B061C9F42F7D9291CFCF7BDFE061CA9 -:10D24000F2E70D49FCF7B8FE0021FCF7EBFD0028E2 -:10D2500003D0002D09DB0026E6E72E1CE4E780233F -:10D260001B0423419846A844DBE7002FF5D0044E69 -:10D27000DAE7C046FFFF7F00CAF24971FFFF7F7FF8 -:10D28000000080BF43005B080220002B00D17047E4 -:10D29000084A02309918084A9142F8D9074A591E9B -:10D2A00001389142F3D9064A9446634458425841A2 -:10D2B000EDE7C046000080FFFFFFFF7EFEFF7F001E -:10D2C0000000808038B50C1C00212160104943000B -:10D2D000051C5B08021C8B4218DC002B16D00D4984 -:10D2E00000228B4208DC9821C905FDF7D3F91922E9 -:10D2F000051C43005B085242DB157E3B9B18FC205B -:10D300002A1C2360044B80051A400243101C38BDC0 -:10D31000FFFF7F7FFFFF7F00FFFF7F8038B5041C8A -:10D320000D1C03F0ABFB002805D0201C0021FCF7EE -:10D330005FFD002801D0201C38BD201C291C00F0F6 -:10D3400055F8041C03F09AFB002805D0201C00218E -:10D35000FCF74EFD0028EED003F0ACFB2223036067 -:10D36000E9E7C04608B543001B0E7F3B162B0DDCDA -:10D37000002B0FDB094A1A41131C024206D0021C83 -:10D380009A430A60111CFDF7B7FA02E00860C00F6B -:10D39000C00708BDC30FDB070B60FAE7FFFF7F0084 -:10D3A00043001B0E7F3B10B5162B0DDC002B12DB50 -:10D3B0000D4C011C1C41044204D08022D2031A41AE -:10D3C0001118A143081C10BD011C802BFAD1FCF7D9 -:10D3D000F3FD011CF6E7C10FC9070133F2D1FE23AB -:10D3E0009B051943EEE7C046FFFF7F00430070B581 -:10D3F0000D1C041C5E08011C002E10D0274886421C -:10D400000FD827498E4211D9211C1B0E5B19FE2B08 -:10D4100029DC002B18DD234CDB0521401943081CB7 -:10D4200070BD201CFCF7C8FD011CF8E79821201CEA -:10D43000C905FDF72FF91C4B041C9D421CDB430062 -:10D440001B0E011C193BE1E71A1C163219DA174BA7 -:10D450009D4208DC211C164803F00AFB1449FDF725 -:10D4600019F9011CDBE7211C124803F001FB1149EB -:10D47000FDF710F9011CD2E70D49FDF70BF9011C6E -:10D48000CDE7084819330140DA050A43CC21101CC6 -:10D490008905FDF7FFF8011CC1E7C046FFFF7F7F4C -:10D4A000FFFF7F00FFFF7F80B03CFFFF50C3000005 -:10D4B0006042A20DCAF2497100B51E4A430083B012 -:10D4C000011C5B0893421ADD1B4A934203DDFDF702 -:10D4D00013FA03B000BD694602F054F80323184064 -:10D4E00001281BD002280FD000281CD000980199D9 -:10D4F00002F02EFA80231B069C466044E9E70021D7 -:10D50000002202F083FEE4E700980199012202F074 -:10D510007DFE80231B069C466044DAE70199009853 -:10D5200002F016FAD5E700980199012202F06EFE8A -:10D53000CFE7C046D80F493FFFFF7F7F00B50F4AB6 -:10D54000430083B0011C5B08934212DD0C4A9342F6 -:10D5500003DDFDF7D1F903B000BD694602F012F812 -:10D56000012210404000121A0199009802F0C8FEF2 -:10D57000F1E70021012202F0C3FEECE7DA0F493F98 -:10D58000FFFF7F7F08B500F057FC08BDF0B54746A8 -:10D5900080B48CB0041C0D1C00F022FD274B061C2F -:10D5A00098461B780F1C5BB201330DD0201C291C40 -:10D5B00003F086F9002807D0201C291C0022002334 -:10D5C000FCF7E2FB002805D1301C391C0CB004BC70 -:10D5D0009046F0BD01230293194B069407950393DF -:10D5E00000230A934346049405951C78002C0FD120 -:10D5F000002300240893099402A803F08FF900285F -:10D6000010D00A9B0193002B11D1089E099FDBE7E4 -:10D6100000200021021C0B1CFDF7C4FE089009919C -:10D62000022CE9D103F046FA21230360E9E703F075 -:10D6300041FA0A9B01930360E7E7C0460C01002012 -:10D64000BC1A030070B58CB0051C00F0BFFD0023B0 -:10D65000224E041CF356013304D0281CFFF712FE9F -:10D66000002802D1201C0CB070BD281CFFF7B8FDAB -:10D67000FE218905FCF7D6FB0028F3D00123029395 -:10D68000174B281C039300230A93FFF74FF90690CA -:10D69000079104900591134803F042F90023F356D3 -:10D6A00008900991022B0ED002A803F037F9002848 -:10D6B00009D00A9B0193002B0AD108980999FFF71A -:10D6C00089F9041CCEE703F0F5F921230360F0E7A4 -:10D6D00003F0F0F90A9B01930360EEE70C010020D0 -:10D6E000C41A0300E81A030070B58CB0051C00F0E2 -:10D6F000D5FE0023224E041CF356013304D0281C0F -:10D70000FFF7C0FD002802D1201C0CB070BD281C02 -:10D71000FFF766FDFE218905FCF784FB0028F3D0A6 -:10D7200001230293174B281C039300230A93FFF74E -:10D73000FDF80690079104900591134803F0F0F866 -:10D740000023F35608900991022B0ED002A803F093 -:10D75000E5F8002809D00A9B0193002B0AD108980C -:10D760000999FFF737F9041CCEE703F0A3F9212349 -:10D770000360F0E703F09EF90A9B01930360EEE774 -:10D780000C010020CC1A0300E81A030008B500F0D1 -:10D79000DBFF08BDF0B58BB0051C01F069F8002374 -:10D7A000304E041CF356013336D0281C03F066F9C2 -:10D7B000002831D0281C2C49FCF734FB071E2ED141 -:10D7C000281C2A49FCF71AFB002825D004230093C3 -:10D7D000274B281C01930897FFF7A8F80023002285 -:10D7E000069207930023F3566C460490059102902D -:10D7F0000391022B30D0201C03F090F800282BD08E -:10D80000236A002B03D003F055F9236A0360A06953 -:10D81000E169FFF7DFF8041C201C0BB0F0BD032307 -:10D820000093134B281C019300230893FFF77EF805 -:10D8300033786C460490059102900391002B05D13A -:10D84000E0220C4B120606920793D4E700200A4907 -:10D8500006900791022BCED103F02CF9222303600E -:10D86000CEE7C0460C0100208071B142B5F1CFC2B5 -:10D87000D41A0300FFFFEF470000F07FF0B58DB032 -:10D88000061C0D1C01F0F0F800232B4F041CFB5666 -:10D89000013304D0281CFFF7F5FC002802D1201C1E -:10D8A0000DB0F0BD301CFFF7EDFC0028F7D0281CB0 -:10D8B0000021FCF79DFA0028F1D0012302931F4BB1 -:10D8C000301C039300230A93FFF730F8031C0C1C51 -:10D8D000281C0093019404930594FFF727F83C78E3 -:10D8E00006900791002C17D000200021021C0B1C71 -:10D8F000FDF758FD08900991022C11D103F0DAF8D8 -:10D90000212303600A9B0093002B0FD108980999EB -:10D91000FFF760F8041CC2E7009B019C0893099480 -:10D9200002A802F0FBFF0028ECD1E7E703F0C2F801 -:10D930000A9B00930360E9E70C010020DC1A030056 -:10D9400070B58CB0041C01F015F90023364E051C8F -:10D95000F35601330ED0201CFFF794FC031C281C47 -:10D96000002B07D0201C0021FCF75CFA031C281CAC -:10D97000002B01D00CB070BD2C4A201C03920A93DE -:10D98000FEF7D4FF35780690079104900591002D9D -:10D9900012D1E022264B1206201C00210892099386 -:10D9A000FCF726FA002835D10123029302A802F0E1 -:10D9B000B5FF002812D10DE000221E4B201C0021D3 -:10D9C00008920993FCF714FA002815D10123029359 -:10D9D000022DEBD103F06EF821230360164802F00C -:10D9E0009FFF089009910A9B0193002B15D108987D -:10D9F0000999FEF7EFFFBDE702230293022D04D041 -:10DA000002A802F08BFF0028EDD103F053F8222387 -:10DA10000360E8E702230293F2E703F04BF80A9B66 -:10DA200001930360E3E7C0460C010020E41A030001 -:10DA3000FFFFEFC70000F0FFE81A0300F0B546460D -:10DA40004F46C0B48BB0051C0C1C01F0FBF9002341 -:10DA5000C74F8046FB56061C013304D0201CFFF73D -:10DA600011FC002805D1301C0BB00CBC9046994627 -:10DA7000F0BD281CFFF706FC8146002833D1201C8E -:10DA80000021FCF7B5F90028EDD001230093B94B34 -:10DA9000281C01934B460893FEF748FF0290039120 -:10DAA000201CFEF743FF0022B34B6E4606920793FD -:10DAB0000023FB56049005915A1C0ED0022B0CD06B -:10DAC000301C02F02BFF002800D1AEE0336A002B9F -:10DAD00003D002F0EFFF336A0360B069F169FEF72B -:10DAE00079FF061CBFE7281C0021FCF781F90028FC -:10DAF00024D0201C0021FCF77BF9804600285AD056 -:10DB0000012300939B4B281C019300230893FEF7ED -:10DB10000DFF02900391201CFEF708FF0023002256 -:10DB2000069207930023FB566E4604900591002B46 -:10DB3000C6D00022904B06920793CEE7404602F0F3 -:10DB40009DFF8146002875D040460021FCF750F922 -:10DB50004646002800D186E7281C02F08FFF464683 -:10DB6000002800D17FE7201C02F088FF002800D1A8 -:10DB700079E7042300937F4B281C0193002308932B -:10DB8000FEF7D4FE02900391201CFEF7CFFE002387 -:10DB90000022069207930023FB566E4604900591DF -:10DBA000022B76D0684602F0B9FE002871D0336AA5 -:10DBB000002B92D08DE7201C02F060FF002800D1DE -:10DBC00051E7201C0021FCF719F9002800D14AE791 -:10DBD00001230093674B281C019343460893FEF7EB -:10DBE000A5FE02900391201CFEF7A0FE3B786E4636 -:10DBF00004900591002B45D1002200230692079343 -:10DC0000301C02F08BFE0028D1D102F053FF2123FB -:10DC10000360CCE700200021021C0B1CFDF7C2FBB7 -:10DC200006900791022C00D04AE702F043FF21231F -:10DC300003604BE7281C02F021FF002884D0201C41 -:10DC400002F01CFF002800D17EE74046FFF71AFBD8 -:10DC50006E46002822D101230093464B0890281CD1 -:10DC60000193FEF763FE02900391201CFEF75EFE17 -:10DC70003C7804900591002CCCD100220023069220 -:10DC800007931DE700203D4906900791022BBCD069 -:10DC9000B6E702F00FFF2223036088E70323009317 -:10DCA000344B281C01934B460893FEF73FFE02902D -:10DCB0000391201CFEF73AFE0023FB5604900591C9 -:10DCC000002B19D1E0222E4B1206281C00210692AF -:10DCD0000793FCF793F8002830D10023FB56022B62 -:10DCE00005D0301C02F01AFE002800D0EEE602F04B -:10DCF000E1FE22230360E9E60022224B281C0021DA -:10DD000006920793FCF77AF80028E6D0FC21201C45 -:10DD10008905FCF7BFFCFEF709FE041C0D1C02F090 -:10DD200005FE021C0B1C201C291CFCF727F80028F0 -:10DD3000D3D10022114B06920793CEE7FC21201C81 -:10DD40008905FCF7A7FCFEF7F1FD041C0D1C02F091 -:10DD5000EDFD021C0B1C201C291CFCF70FF80028F1 -:10DD6000BBD1E022084B120606920793B5E7C046E6 -:10DD70000C010020EC1A03000000F03F0000F0FF4F -:10DD8000FFFFEF470000F07FFFFFEFC770B58CB0DB -:10DD9000051C01F081FD0023254E041CF3560133C0 -:10DDA0000AD0281CFFF76EFA002805D0281C002195 -:10DDB000FCF724F8002802D1201C0CB070BD012310 -:10DDC00002931C4B281C039300230A93FEF7AEFD1D -:10DDD00034780690079104900591002C12D100220E -:10DDE00000230892099302A802F098FD002813D09E -:10DDF0000A9B0193002B14D108980999FEF7EAFDBC -:10DE0000041CD9E700200021021C0B1CFDF7CAFAF4 -:10DE100008900991022CE6D102F04CFE2123036008 -:10DE2000E6E702F047FE0A9B01930360E4E7C04681 -:10DE30000C010020F41A0300F8B54F4646460C1CAE -:10DE400089465142C0B4051C11435800564E400843 -:10DE5000C90F9C460143B1423DD86100490888463C -:10DE6000474669422943C90F3943B14233D84F4924 -:10DE70005918114347D0022699170E40E10F0E435F -:10DE80004146294331D0011C114336D046498842CE -:10DE900049D04549884530D04146081A00153C28EC -:10DEA0003BDC614600295ADB281C211CFDF77AFA6D -:10DEB00002F002FD02F062FB012E40D0022E43D0A0 -:10DEC000002E0ED03A4A3B4BFEF744F93A4A3B4B00 -:10DED000FEF740F905E0101C191C2A1C231CFCF756 -:10DEE00039FF0CBC90469946F8BD022E18D00FDCC5 -:10DEF000002EC8DB281C211CF3E74B462E48002BC4 -:10DF00001BDB2F49EDE7281C211C02F037FBE8E75B -:10DF1000032EB8D128482B49E3E727482849CBE707 -:10DF200025482649DDE780451ED0012E2CD025DD71 -:10DF3000022EF5D0032EEDD0ABE72349D1E78024A4 -:10DF400024060B19191CCCE7194A1A4BFEF702F9E3 -:10DF5000021C0B1C18481949FEF7FCF8C1E73C30BD -:10DF6000A2DA00200021A7E7012E19D010DD022E31 -:10DF700013D0032EC1D115481549B2E7002E00D0A9 -:10DF800087E700200021ACE7802100200906A8E7F0 -:10DF9000002EB2D108480F49A3E70C480E49A0E76C -:10DFA00005480E499DE7C0460000F07F000010C004 -:10DFB000075C143326A6A13C182D4454FB210940CC -:10DFC000FB21F93FFB2109C0FB21F9BFD221337F9F -:10DFD0007CD902C0FB21E93F7CD90240FB21E9BF8B -:10DFE000F0B556464D4644465F46754BF0B40A1CA4 -:10DFF0000E1C191C83B0051C041C3140994200D131 -:10E00000B7E0002E00DC93E0311500D1A0E06D4BAD -:10E010001203CE188023120B5B031A43F30700D5BB -:10E0200077E0731052009846E30FD3188022162130 -:10E030000027002564009203A818984202DC851886 -:10E040001B1ABF18E00F5B0001391B18640052084F -:10E050000029F1D10022019294468022120620204C -:10E06000924609E0AB4247D0E10F5B0001385B18F4 -:10E070006400520800281ED0614689189D42F1DADA -:10E080008E18B446CE0FF607A94656452ED05B1B18 -:10E090008C42AD416D425B1B641A01995B008B465B -:10E0A0009344594601380191E10F4D465B186400D5 -:10E0B00052080028E0D1234330D1019B5B0842493C -:10E0C0007A108C466244F90702D5802109060B4379 -:10E0D00041460E05B1181D1C0E1C281C311C03B036 -:10E0E0003CBC90469946A246AB46F0BD6646002E23 -:10E0F000CDDB6E1CB146CAE7A14208D88E18B446E3 -:10E10000CE0FF607564541D099460023C4E71D1CA3 -:10E11000AAE7E30F5200D218640082E7019B0133A3 -:10E120003AD0019A01239446134063445B08C6E742 -:10E1300073005B080343D0D00021002E33D1E20AE4 -:10E1400015396405002AFAD080235B031A4226D1D0 -:10E15000802000234003520001330242FBD00125FE -:10E160002020ED1AC01A4919251CC5409C402A439D -:10E170004DE72A1C331C281C311CFDF751FD2A1CBD -:10E18000331CFCF7E7FD051C0E1CA6E76646002EB7 -:10E19000AFDA0023A9467FE7013700238FE720206D -:10E1A00001250023DFE72A1C331C281C311CFDF746 -:10E1B000D1FF021C0B1CFDF7F5F8051C0E1C8CE7AB -:10E1C0000000F07F01FCFFFF0000E03FFE22F8B5F9 -:10E1D0004300041C5B089205934211D009DC9F4A5E -:10E1E000934212DC8C229205934200DD81E09C4830 -:10E1F00005E0211CFCF780FB011CFCF759F8F8BD79 -:10E200000020002CFBDC9748F9E7002800DAC5E085 -:10E21000FE20211C8005FCF76FFBFC218905FCF723 -:10E2200039FA041C01F038FB8F49061C050B201C31 -:10E23000FCF730FA8D49FBF7BFFE211CFCF72AFAE8 -:10E240008B49FCF759FB211CFCF724FA8949FBF7A1 -:10E25000B3FE211CFCF71EFA8749FCF74DFB211C7D -:10E26000FCF718FA8549FBF7A7FE211CFCF712FA08 -:10E270008349071C201CFCF70DFA8249FCF73CFB84 -:10E28000211CFCF707FA8049FBF796FE211CFCF7DE -:10E2900001FA7E49FCF730FB211CFCF7FBF9FE215B -:10E2A0008905FBF789FE011C381CFCF701F8311CBD -:10E2B000FCF7F0F92D03071C291C281CFCF7EAF9D0 -:10E2C000011C201CFCF718FB291C041C301CFBF74C -:10E2D00073FE011C201CFBF7EBFF011C381CFBF735 -:10E2E0006BFE011C281CFBF767FE011CFBF764FE9C -:10E2F00085E7211CFCF7CEF95B49051CFCF7CAF940 -:10E300005A49FBF759FE291CFCF7C4F95849FCF798 -:10E31000F3FA291CFCF7BEF95649FBF74DFE291C00 -:10E32000FCF7B8F95449FCF7E7FA291CFCF7B2F9F5 -:10E330005249FBF741FE291CFCF7ACF95049061C79 -:10E34000281CFCF7A7F94F49FCF7D6FA291CFCF763 -:10E35000A1F94D49FBF730FE291CFCF79BF94B490D -:10E36000FCF7CAFA291CFCF795F9FE218905FBF791 -:10E3700023FE011C301CFBF79BFF011C201CFCF73B -:10E3800089F9011C4248FCF7B7FA011C201CFCF774 -:10E39000B3FA011C3F48FCF7AFFA30E7FE218905CC -:10E3A000FBF70AFEFC218905FCF774F92E49041CD1 -:10E3B000FCF770F92D49FBF7FFFD211CFCF76AF90A -:10E3C0002B49FCF799FA211CFCF764F92949FBF762 -:10E3D000F3FD211CFCF75EF92749FCF78DFA211C9F -:10E3E000FCF758F92549FBF7E7FD211CFCF752F92A -:10E3F000061C201C01F050FA2149051C201CFCF7CA -:10E4000049F92049FCF778FA211CFCF743F91E4929 -:10E41000FBF7D2FD211CFCF73DF91C49FCF76CFA17 -:10E42000211CFCF737F9FE218905FBF7C5FD011C0E -:10E43000301CFBF73DFF291CFCF72CF91449FCF7B5 -:10E440005BFA011C281CFBF7B7FD011CFBF7B4FDB0 -:10E45000011C1148FCF750FAD1E6C046FFFFFF3E11 -:10E46000DB0FC93FDB0F494008EF1138047F4F3AFB -:10E470004611243DA80A4E3E90B0A63EABAA2A3EC5 -:10E480002EC69D3D6133303F2D57014039D1194093 -:10E490006821A233DA0FC93FDA0F4940F0B5FE23F5 -:10E4A0004E46454657464400E0B46408051C061C29 -:10E4B0009B059C4200D1C9E000DDA6E0904B9C4248 -:10E4C0000FDC904B9C4200DDCDE08F49FBF774FDE3 -:10E4D000FE218905FBF7A6FC031C281C002B00D09D -:10E4E00099E0281CFEF77CFE011CFE208005FCF74D -:10E4F00003FAFC218905FCF7CDF88449051CFCF7DB -:10E50000C9F88349FBF758FD291CFCF7C3F881497A -:10E51000FCF7F2F9291CFCF7BDF87F49FBF74CFD2D -:10E52000291CFCF7B7F87D49FCF7E6F9291CFCF734 -:10E53000B1F87B49FBF740FD291CFCF7ABF87949A2 -:10E540008046281CFCF7A6F87749FCF7D5F9291C6A -:10E55000FCF7A0F87549FBF72FFD291CFCF79AF88A -:10E560007349FCF7C9F9291CFCF794F8FE218905C9 -:10E57000FBF722FD8146281C01F08EF96D4B071C2C -:10E580009C424DDC391C040BFBF716FD49468246C4 -:10E590004046FBF78DFE011C5046FCF77BF8240338 -:10E5A0008046211C201CFCF775F8011C281CFCF778 -:10E5B000A3F9211C051C381CFBF7FEFC011C281CC0 -:10E5C000FBF776FE011CFBF7F7FC011C5A48FCF731 -:10E5D00093F9011C4046FCF78FF9211C051C201CF7 -:10E5E000FBF7EAFC011C5548FCF786F9011C281CC6 -:10E5F000FCF782F9011C5148FCF77EF9002E0ADC79 -:10E6000080231B069C46604405E0291CFCF774F936 -:10E61000011CFBF74DFE1CBC90469946A246F0BD7E -:10E6200049464046FBF744FE011C381CFCF732F813 -:10E63000391CFBF7C1FC011CFBF7BEFC4049FBF792 -:10E64000BBFC011C3F48FCF757F9D7E73D49FCF7F5 -:10E6500021F83949041C281CFCF71CF8011C201C5B -:10E66000FBF7AAFCD7E7291CFCF714F82749041C80 -:10E67000FCF710F82649FBF79FFC211CFCF70AF871 -:10E680002449FCF739F9211CFCF704F82249FBF76F -:10E6900093FC211CFBF7FEFF2049FCF72DF9211C00 -:10E6A000FBF7F8FF1E49FBF787FC211CFBF7F2FF85 -:10E6B0001C49061C201CFBF7EDFF1B49FCF71CF94D -:10E6C000211CFBF7E7FF1949FBF776FC211CFBF740 -:10E6D000E1FF1749FCF710F9211CFBF7DBFFFE21D6 -:10E6E0008905FBF769FC011C301CFBF7E1FD011CEF -:10E6F000281CFBF7CFFF291CFBF75EFC8BE7C0460D -:10E70000FFFFFF3EFFFFFF31CAF2497108EF1138EA -:10E71000047F4F3A4611243DA80A4E3E90B0A63ED3 -:10E72000ABAA2A3E2EC69D3D6133303F2D57014096 -:10E7300039D119409999793F2EBD3BB3DB0F493F41 -:10E740002EBD3B33DB0FC93FF0B54746FF254A00DE -:10E7500080B4031C5208ED05AA4216DC8046400036 -:10E760004008A84211DCFE24A405A1423DD00227A6 -:10E770008C173C40DF0F3C4300280DD1022C32D0D7 -:10E78000181C032C05D1314803E0081C191CFBF7A9 -:10E7900013FC04BC9046F0BD002A1DD0AA4228D02C -:10E7A000A84219D0821AD2153C2A1ADC00293BDB78 -:10E7B000181CFBF77DFDFEF713FDFEF769FB012C2E -:10E7C00025D0022C28D0002CE3D02149FBF7F4FB04 -:10E7D0002049FCF791F8DCE74346002B15DB1E4887 -:10E7E000D7E71D48EBE71B48D3E7181CFEF750FBA3 -:10E7F000CFE790421CD0022CF5D0032CC3D00020D0 -:10E80000012CC6D180200006C3E71448C1E780234D -:10E810001B069C466044BCE70D49FBF7CDFB011C81 -:10E820000C48FCF769F8B4E700203C32C7DBBFE7CF -:10E83000022C05D0032C07D0012C03D00848A8E7F0 -:10E840000848A6E70848A4E70848A2E7DB0F49C044 -:10E850002EBDBB33DB0F4940DB0FC93FDB0FC9BF08 -:10E86000DB0F493FE4CB1640DB0F49BFE4CB16C0BA -:10E87000F8B5FF224F4646464300C0B4041C5B086F -:10E88000D20593426ED8C50F934200D171E0654A1C -:10E89000904200DD8BE0002800DA81E0624A93427A -:10E8A0006BD9624A934200D99BE0614BAF00F958A3 -:10E8B000201CFCF721F8814601205E4B401BFF58CD -:10E8C000451B4846391CFCF717F8041C211C201C6A -:10E8D000FBF7E0FE5849061CFBF7DCFE5749FCF746 -:10E8E0000BF8311CFBF7D6FE5549FBF765FB311CD5 -:10E8F000FBF7D0FE5349FBF7FFFF311CFBF7CAFEC5 -:10E900005149FBF759FB311CFBF7C4FE011C201CCD -:10E91000FBF7F2FF8046201C4146002D4CD0FBF750 -:10E92000B9FE041C80204146C005FBF7E5FF011C31 -:10E93000201CFBF7BDFC011C381CFBF7DDFF494622 -:10E94000FBF7DAFF011CFE208005FBF7D5FF2B1C2F -:10E950007D3363DAD8216435ED0528180905FBF706 -:10E9600099FE02E0211CFBF727FB0CBC9046994660 -:10E97000F8BD002DF9D00020F7E7344A934214D8AF -:10E980003349201CFBF718FBFE218905FBF74AFAE7 -:10E9900000280AD0FE21201C8905FBF70DFBE4E7C7 -:10E9A0002C4A934200D879E7E5E700258EE728480E -:10E9B000011CFBF76FFED8E7FBF76CFE8021051CFE -:10E9C000C9054046FBF798FF011C281CFBF770FCAB -:10E9D000211CFBF791FF011CFE208005FBF78CFF3B -:10E9E000C3E71D49201CFBF755FE1C4BAD00E95841 -:10E9F000FBF7E2FAFCF7FEF8051CFCF71BF91849D7 -:10EA0000071CFBF747FE011C201CFBF775FF15498F -:10EA10008146381CFBF73EFE071C52E7ED0528181F -:10EA2000A3E7C0461772B1421872B13E9115853FF7 -:10EA30000C1B0300041B03004CBB31330EEADD3515 -:10EA400055B38A38610B363BABAA2A3EFFFF7F31B4 -:10EA5000CAF24971B5F1CF423BAAB83FFC1A030094 -:10EA60008071313FD1F7173770B54E0076083ED030 -:10EA7000C40FE407251C3B4B45409D4237DC013366 -:10EA80009E4234DCB54237DB3CD0374B9D423EDC06 -:10EA90007E222B025242002B03DD013A5B00002B49 -:10EAA000FBDC314B9E4241DC7E2033024042002B96 -:10EAB00002DB01385B00FCD5131C7E3331DB802385 -:10EAC0006D026D0A1B041D43031C7E3323DB802370 -:10EAD0004902490A1B041943131A002B0DD06A1A64 -:10EAE0006D00002A01DB0DD05500013BF5E7FBF777 -:10EAF000D1FD011CFBF7DCFB70BD691A00D5291C98 -:10EB0000002916D1E10F194B8900C858F4E7EB151D -:10EB10007F3B1A1CC5E77E23311C5B421B1A9940C0 -:10EB2000DAE77E235B429B1A9D40CDE7F0157F38E4 -:10EB3000C2E70D4A131C914203DC49000138994297 -:10EB4000FBDD031C7E3306DB094B7F30CB182343F0 -:10EB5000C0051843D0E77E235B42181A0141081C08 -:10EB60002043C9E7FFFF7F7FFFFF7F00141B0300E7 -:10EB7000000080FFF8B55F4656464D464446011CEE -:10EB8000F0B44B0000D191E0002800DAB2E09E4BD7 -:10EB9000984200DDB5E09D4A0023904206DC081C47 -:10EBA0009821C905FBF776FD19235B42C5157F3D0A -:10EBB000ED184002964B440AE01880231B040340E2 -:10EBC000FE20FE2180055840DA152043890555199D -:10EBD000FBF792FE231C0F335B02061C5B0A0F2B14 -:10EBE0006FDD8021C905FBF7E7F9011C301CFBF73D -:10EBF0005FFB8146281CFCF71DF8494682464846C3 -:10EC0000FBF748FD8346834B59469846FBF742FD88 -:10EC10008149071CFBF73EFD8049FBF7CDF9391C04 -:10EC2000FBF738FD7E49FBF7C7F9391CFBF732FDCE -:10EC30007C49FBF7C1F95946FBF72CFD7A4983461D -:10EC4000381CFBF727FD7949FBF7B6F9391CFBF7B0 -:10EC500021FD7749FBF7B0F9391CFBF71BFD011CBF -:10EC60005846FBF7A9F9A0444346071C7148041B0A -:10EC70001C43002C00DC9BE0FC21301C8905FBF7C9 -:10EC800009FD311CFBF706FD041C002D57D1391C72 -:10EC9000FBF792F94946FBF7FDFC011C201CFBF732 -:10ECA0002BFE011C301CFBF727FE04E0CC200021CA -:10ECB0000006FBF7FDFA3CBC90469946A246AB46DF -:10ECC000F8BD0021FBF794F800281ED00020002D8D -:10ECD000F1D0281CFBF7AEFF5749041CFBF7DAFC08 -:10ECE0005649051C201CFBF7D5FC011C281CFBF712 -:10ECF00063F9E0E7081CFBF7FFFD0021FBF7D8FAFA -:10ED0000D9E7081CFBF758F9D5E7311C301CFBF795 -:10ED1000C1FC4B49041C301CFBF7BCFC011CFC2053 -:10ED20008005FBF7E9FD011C201CFBF7B3FC041C6C -:10ED3000002D25D1301C211CFBF7DEFDBBE7504622 -:10ED40003D49FBF7A7FC391C051C201CFBF734F9D7 -:10ED50004946FBF79FFC3949071C5046FBF79AFCD4 -:10ED6000011C381CFBF728F9011C201CFBF7C4FD13 -:10ED7000311CFBF7C1FD011C281CFBF7BDFD9AE708 -:10ED8000281CFBF757FF2C49051CFBF783FC2B497C -:10ED9000071C281CFBF77EFC011C201CFBF7ACFDAC -:10EDA000311CFBF7A9FD011C381CFBF7A5FD82E710 -:10EDB000002D1CD050462049FBF76CFC391C041C6C -:10EDC000301CFBF799FD4946FBF764FC1B49051C09 -:10EDD0005046FBF75FFC011C281CFBF78DFD311C26 -:10EDE000FBF78AFD011C201CFBF786FD63E7391C3D -:10EDF000301CFBF781FD4946FBF74CFC011C301C25 -:10EE0000FBF77AFD57E7C046FFFF7F7FFFFF7F00DC -:10EE100020FB4A00305CCFFF9788173E25333A3EEF -:10EE20002549923EABAA2A3F4FD01C3E298E633E15 -:10EE3000CDCCCC3E88C235008071313FD1F7173739 -:10EE4000ABAAAA3EF0B5444656464D465F46F0B4DE -:10EE50004E0087B0051C0C1C8846760811D0FF2395 -:10EE6000470081467F08DB059F4204DD654801F0CD -:10EE70000FFE041C07E09E420DDDFE239B059F4212 -:10EE8000F4D1FE24A405201C07B03CBC9046994652 -:10EE9000A246AB46F0BD0023019300286FDBFF23A1 -:10EEA000DB059E4260D0FE239B059E427CD08023E2 -:10EEB000DB05984500D18BE0FC239B05984521D0CC -:10EEC000281CFEF78DF9FF23011CDB059F4236D07D -:10EED000002F34D0FE239B059F4230D0EB0F013B27 -:10EEE0001A1C0293019B13437CD09A23DB059E429C -:10EEF00000DC95E0444B9F4229DC4346002B2DDB90 -:10EF00000024C0E74B46281C002B67DAFEF768F99F -:10EF1000FF23011CDB059F4201D0002FDAD13B4BC0 -:10EF2000081C9C46019B67441F435DD0019B0C1C41 -:10EF3000012BA8D180231B069C466444A3E74346CB -:10EF4000002B58DB4B460C1C002B9CDAE7E7304BC0 -:10EF50009F4200DCBDE24346002BD1DD2D48011C61 -:10EF6000FBF798FB041C8EE7FE239B059F4200D114 -:10EF700087E728DD4346002B00DB84E7C0E7264B0C -:10EF80009E421DDC254B9E428DDD9623F2159B1A79 -:10EF9000321C1A41111C9940B14284D101231A40FC -:10EFA00001339B1A01937EE743462C1C002B00DBA8 -:10EFB00069E7FE20291C8005FBF77AF9041C62E74B -:10EFC000022301936BE74346002BB3DB00245AE78F -:10EFD000281C291CFBF75EFB041C54E700F05CFCBA -:10EFE000041C50E7281C291CFBF786FC011CFBF7BE -:10EFF0005FF9041C47E7FE208005FBF759F9011C67 -:10F00000A0E7C046E81A0300F7FF7F3F000080C07A -:10F010000700803FCAF24971FFFF7F4BFFFF7F3F30 -:10F02000F14B00229F4207DC081C9721C905FBF722 -:10F0300031FB1822071C5242FB157802FE277F3B4A -:10F040009B180393E94B400ABF050743984200DC35 -:10F05000AEE1E74B984200DC7CE2039B0133039373 -:10F06000E44B9C460023674404939D00E24B381C0C -:10F07000EB58BB46191C9946FBF73EFC49468246B5 -:10F08000381CFAF799FF011CFE208005FBF710F9E8 -:10F09000031C191C50460593FBF7FCFA80237F10D4 -:10F0A0009B051F438023DB029C46049B67449C46D0 -:10F0B000060B674436038046391C301CFBF7EAFA1E -:10F0C000011C5046FBF718FC49468246381CFBF7EA -:10F0D00013FC011C5846FBF70FFC011C301CFBF70E -:10F0E000D9FA011C5046FBF707FC0599FBF7D2FA49 -:10F0F000414683464046FBF7CDFA071C391CFBF717 -:10F10000C9FABE498146381CFBF7C4FABC49FAF774 -:10F1100053FF391CFBF7BEFABA49FAF74DFF391C09 -:10F12000FBF7B8FAB849FAF747FF391CFBF7B2FA10 -:10F13000B649FAF741FF391CFBF7ACFAB449FAF7C4 -:10F140003BFF011C4846FBF7A5FA311C071C404653 -:10F15000FAF732FF5946FBF79DFA391CFAF72CFFF4 -:10F16000311C8146301CFBF795FAAA498246FAF712 -:10F1700023FF4946FAF720FF070B3F03391C301CD9 -:10F18000FBF788FA391C061C5846FBF783FAA1499D -:10F190008346381CFBF7B0FB5146FBF7ADFB011C67 -:10F1A0004846FBF7A9FB4146FBF774FA011C584699 -:10F1B000FAF702FF8146301C4946FAF7FDFE070BBD -:10F1C0003F03381C9449FBF765FA94498046381C84 -:10F1D000FBF760FA311C8246381CFBF78DFB011CE3 -:10F1E0004846FBF789FB8E49FBF754FA011C504651 -:10F1F000FAF7E2FE8B4BE958FAF7DEFE071C03989C -:10F20000FBF718FD884B8146EB5840469A46391C5F -:10F21000FAF7D2FE5146FAF7CFFE4946FAF7CCFE8E -:10F22000060B36034946301CFBF766FB5146FBF7DD -:10F2300063FB4146FBF760FB011C381CFBF75CFBE2 -:10F240008046019D029B013D1D4300D0ADE0774FFC -:10F25000250B2D03291C201CFBF74EFB311CFBF753 -:10F2600019FA41468146201CFBF714FA011C484656 -:10F27000FAF7A2FE291C8046301CFBF70BFA061C8D -:10F280008246311C4046FAF797FE44008146051C31 -:10F290006408002800DC05E18623DB059C4200DDD4 -:10F2A00098E000D187E0FC239B059C4200DDD3E081 -:10F2B0000023002699462D0B2D03281C5C49FBF7E3 -:10F2C000E9F951468346281CFBF716FB011C404612 -:10F2D000FBF712FB5749FBF7DDF95749041C281CC3 -:10F2E000FBF7D8F9011C201CFAF766FE041C211C50 -:10F2F0005846FAF761FE5946051CFBF7FDFA011C5A -:10F30000201CFBF7F9FA291C8046281CFBF7C2F9E0 -:10F310004A49041CFBF7BEF94949FBF7EDFA211CE9 -:10F32000FBF7B8F94749FAF747FE211CFBF7B2F99A -:10F330004549FBF7E1FA211CFBF7ACF94349FAF721 -:10F340003BFE211CFBF7A6F9011C281CFBF7D4FA95 -:10F35000041C211C281CFBF79DF980218246C9054D -:10F36000201CFBF7C9FA011C5046FAF7A1FF4146E1 -:10F37000041C281CFBF78EF94146FAF71DFE011C00 -:10F38000201CFBF7B9FA291CFBF7B6FA011CFE207A -:10F390008005FBF7B1FA3118CB15002B00DCDEE05D -:10F3A000381CFBF777F9041C6DE5FE27BF054FE716 -:10F3B0000023049359E626494046FAF7FDFD311C27 -:10F3C00082464846FBF798FA011C5046FAF72AFD98 -:10F3D000002841D01F49381CFBF75CF91D49FBF799 -:10F3E00059F9041C4FE5C046FFFF7F0071C41C00A3 -:10F3F000D6B35D00000080FF2C1B030042F1533E9A -:10F4000055326C3E05A38B3EABAAAA3EB76DDB3EE0 -:10F410009A99193F000040400038763FA0C39D36BE -:10F420004F38763F241B03001C1B0300000080BFE5 -:10F430000072313F1872313F8CBEBF354CBB313347 -:10F440000EEADD3555B38A38610B363BABAA2A3E4E -:10F450003CAA3833CAF2497180221204131CE41505 -:10F460007E3C23415C1963025B0A1A4396236100C8 -:10F47000090E5B1A1A41131CED0F6A42534099465C -:10F48000394B7F390B419C43211C301CFBF734FA6C -:10F490008246A94440465146FAF78EFD4B46051C6C -:10F4A000DE0508E7314B9C420ADC00D0FBE6311C4C -:10F4B000FBF722FA011C4046FAF7AAFC0028CBD041 -:10F4C0002B49381CFBF7E6F82949FBF7E3F8041C45 -:10F4D000D9E4081CFE218905FBF70EFA2549061C14 -:10F4E000FBF7D8F82449071C301CFBF7D3F8311C74 -:10F4F000051C301CFBF7CEF8FA2181468905301C2B -:10F50000FBF7C8F8011C1D48FBF7F6F9311CFBF7A7 -:10F51000C1F8011CFC208005FBF7EEF9011C4846F0 -:10F52000FBF7B8F81649FBF7B5F8011C281CFBF7E8 -:10F53000E3F9051C291C381CFAF73EFD060B3603BF -:10F54000391C301CFBF7D8F9011C281CFBF7D4F937 -:10F55000804676E680239B030493012385E5494694 -:10F56000FDF744FF011C1BE7FFFF7F00000016436F -:10F570006042A20D00AAB83F70A5EC36ABAAAA3E25 -:10F580003BAAB83FF0B55F46564644464D46F0B4F8 -:10F5900042005708B24A89B0031C0C1C061C974253 -:10F5A0006FDDB04A97421BDCAF49002B00DC0BE15A -:10F5B000FBF7A2F90F233A1C9A43AC4B051C9A4265 -:10F5C00000D170E0AA49FBF797F9011C2060281CC4 -:10F5D000FBF792F9A649FBF78FF96060012054E030 -:10F5E000A44A974200DC70E0A34A974254DC86228A -:10F5F00052429146FB1599444B46DD057D1B281C64 -:10F60000FBF7F8FAFBF716FB011C0590281CFBF72B -:10F6100073F98721C905FBF73DF88046FBF7EAFA45 -:10F62000FBF708FB051C0690291C4046FBF764F914 -:10F630008721C905FBF72EF800210790FAF7D8FBC0 -:10F64000002800D1D8E0281C0021FAF7D1FB0222C3 -:10F65000431E9841131A02220092884A05A801927B -:10F66000211C4A4600F03EFA002E0EDA80221206D5 -:10F670009446236840426344236063686344636044 -:10F6800003E00023206000204B6009B03CBC9046A2 -:10F690009946A246AB46F0BD191CFBF72DF96060F8 -:10F6A00020600020F1E77649FBF726F97549051C33 -:10F6B000FBF722F9011C2060281CFBF71DF971499A -:10F6C000FBF71AF960600120DFE7FDF789FD6E495D -:10F6D0008046FAF7DFFFFC218905FAF76DFCFBF79E -:10F6E00089FA051CFBF7A6FA5F498146FAF7D2FFB3 -:10F6F000011C4046FBF700F95D4980464846FAF791 -:10F70000C9FF824640461F2D25DCFF233A1C5F4976 -:10F710009A436B1E9B005B589A421CD05146FBF7E4 -:10F72000EBF883465B46236059464046FBF7E4F816 -:10F730005146FBF7E1F8031C6060281C002EA4DA98 -:10F74000802212065A4422608022120694466344A4 -:10F750006360684299E75146FBF7CEF8FB15FF213D -:10F760001A1C0293C30D0B408346D31A082BD9DD14 -:10F7700043494846FAF78EFF071C391C4046FBF701 -:10F78000BBF8031C191C039040469846FBF7B4F8DD -:10F79000391CFBF7B1F83B49071C4846FAF77AFFDA -:10F7A000391CFBF7A9F8824640465146FBF7A4F8FE -:10F7B000FF22C30D1340029A8346D31A192B30DC63 -:10F7C000039B20609846AFE7FAF7F6FB0F233A1C3D -:10F7D0009A43264B051C9A4210D02549FAF7ECFBB8 -:10F7E000011C2060281CFBF787F82149FAF7E4FB8D -:10F7F00060600120404248E703232CE72049FAF7E4 -:10F80000DBFB2049051CFAF7D7FB011C2060281CF4 -:10F81000FBF772F81B49FAF7CFFB6060012040420A -:10F8200033E71B494846FAF735FF039B071C391C91 -:10F83000181C9A46FBF760F8804650464146FBF795 -:10F840005BF8391CFBF758F81249071C4846FAF7D1 -:10F8500021FF391CFBF750F8824640465EE7C04660 -:10F86000D80F493FE3CB1640800FC93FD00FC93FA7 -:10F8700043443537800F4943FFFF7F7FB41B0300AC -:10F880000044353708A3852E84F9223F341B03003A -:10F8900000A3852E32318D242B49420070B5031C04 -:10F8A000041C52088A423BD8011C002A36D000288A -:10F8B00040DBC115254882420AD80130204240D1A0 -:10F8C00000225B0001320342FBD00120821A89181A -:10F8D00080225B025B0A12047F391343CA0727D4D4 -:10F8E000802219200025002649105B005204B4181C -:10F8F0009C4202DCA6181B1BAD1801385B005208A5 -:10F900000028F4D1002B02D001232B405D19FC23E9 -:10F910009B059C466D106544C9054919081C70BDBE -:10F92000211CFAF7B7FE211CFAF746FB011CF5E78C -:10F930005B00D5E7FAF7E0FF011CFAF7B9FC011C00 -:10F94000ECE701228918C3E7FFFF7F7FFFFF7F00FD -:10F95000F8B54F464646584B4500C0B46D08061CE6 -:10F960000F1C9D4248DCFBF745F9002800D19FE0C1 -:10F97000311C301CFAF78EFE5049041CFAF78AFE3F -:10F980004F49FAF719FB211CFAF784FE4D49FAF7A3 -:10F99000B3FF211CFAF77EFE4B49FAF70DFB211C41 -:10F9A000FAF778FE4949FAF7A7FF211CFAF772FE29 -:10F9B0004749FAF701FB211CFAF76CFE8046FC214F -:10F9C000201C8905FAF766FE4146051C201CFAF743 -:10F9D00061FE391C041C301CFAF75CFE011C201C63 -:10F9E000FAF78AFF011C281CFAF786FF011CFE208B -:10F9F0008005FAF781FF53E0311CFAF74BFE2F49DF -:10FA0000041CFAF747FE2E49FAF7D6FA211CFAF73A -:10FA100041FE2C49FAF770FF211CFAF73BFE2A49F8 -:10FA2000FAF7CAFA211CFAF735FE2849FAF764FFFB -:10FA3000211CFAF72FFE2649FAF7BEFA211CFAF725 -:10FA400029FE244B80469D42B9DD234B9D422BDC91 -:10FA5000FF231B069C46FE2065448005291CFAF7FF -:10FA60004BFF8146FC21201C8905FAF713FE291C57 -:10FA7000FAF742FF4146051C201CFAF70BFE391C21 -:10FA8000041C301CFAF706FE011C201CFAF734FF98 -:10FA9000011C281CFAF730FF011C4846FAF72CFF1E -:10FAA0000CBC90469946F8BD0C4B0D4D9946D9E7D4 -:10FAB000FE208005F4E7C046FFFFFF314ED747AD7B -:10FAC000F6740F317CF29334010DD037610BB63AE6 -:10FAD000ABAA2A3D9999993E0000483F0000383F63 -:10FAE0000000903EF0B5564644465F464D46F0B4A1 -:10FAF000DDB00190181C069166990893C04B8900EF -:10FB0000C958031C013B181C0093D31E0C1C059103 -:10FB1000D917490FCB18DB10191CDB43DB17194031 -:10FB2000CB43DB009B180A9104930E1A071919D4D2 -:10FB3000679A01379046B300BF009844002520AC77 -:10FB400008E043465859FBF775F860510435013613 -:10FB5000BD4207D0002EF4DA002060510435013692 -:10FB6000BD42F7D1059B002B00DA3DE3059B013335 -:10FB70009B009946089B9B009B460023984648ABF8 -:10FB80009A465B46043B0293009B002B00DA31E26D -:10FB9000029B002543441C1C20AB9C464346019E0F -:10FBA0001F1F64446744216801CEFAF773FD011CEE -:10FBB000281CFAF701FA043C051CBC42F3D1534659 -:10FBC00042469D5004239C46E044C845DCD18D4A02 -:10FBD000059D94462B1C63449B000CA91A1C8C4663 -:10FBE000D14604336244634409920B93AB009A46B6 -:10FBF0004B4652469E58002D27DD0CAB9846824B53 -:10FC0000EC184346A8461D1CA4004C44EE21301CB1 -:10FC10008905FAF73FFDFAF7EDFFFBF70BF88721AF -:10FC2000C905071CFAF736FD011C301CFAF764FE03 -:10FC3000FAF7E0FF216801C5381CFAF7BDF9043C6A -:10FC400047AB061C9C42E1D14546049B301C191C65 -:10FC50009846FDF7CBFBF8218905041CFAF71AFD3D -:10FC6000FDF7C2FA8221C905FAF714FD011C201C18 -:10FC7000FAF742FE041CFAF7BDFF071CFAF7DAFF99 -:10FC8000011C201CFAF738FE4446061C002C00DC40 -:10FC900092E108216A1E92000CAB9B58081B191CAC -:10FCA00001417F1881405B1A0CA98B500722121B5F -:10FCB00013410293029B002B34DD0137002D00DC41 -:10FCC00090E2802252000CAB00210024FF209446D9 -:10FCD00009E0002A03D06446A21A01241A60013107 -:10FCE00004338D4209DD1A68002CF2D0821A0131EA -:10FCF0001A60012404338D42F5DC049B002B0EDDD9 -:10FD0000012B00D162E1022B09D16B1E9B000CAAD2 -:10FD1000D25803923F2203990A400CA9CA50029B71 -:10FD2000022B73D0301C0021FAF762F8002800D1B2 -:10FD300086E0059B691E8B420FDC0CAA94460022CC -:10FD4000314B0B98EB189B0063441C68043B224327 -:10FD50008342FAD1002A00D0AAE1059B0CAA013BFC -:10FD60009B00D358002B00D03AE20122099B043BB0 -:10FD7000596801320029FAD0AA186B1C07929342E5 -:10FD80003ADC009AD718089BFF1A20AB9C46079BC9 -:10FD9000BF005B1B9B0003930A9B67449C46654422 -:10FDA000AB00029300239846679A029B9446434413 -:10FDB00063445868FAF73EFF5B46F850009B002BFF -:10FDC0001CDB5B460025019EFC18216801CEFAF77A -:10FDD00061FC011C281CFAF7EFF8043C051CBC422E -:10FDE000F3D1434653444B445D6004239C46039B3C -:10FDF000E04404379845D7D1079DF7E60025F0E7A2 -:10FE0000CC1E0300FEFFFF3FFFFFFF3FFE20311C23 -:10FE10008005FAF771FD061C002C00D182E7FE2058 -:10FE200004998005FDF7E2FA011C301CFAF764FD25 -:10FE3000061C301C0021F9F7DBFF002800D078E712 -:10FE40005346CA469946049B301C59420797009571 -:10FE5000FDF7CCFA8721C905041CF9F7EDFF00284E -:10FE600000D1C7E1EE21201C8905FAF713FCFAF74F -:10FE7000C1FEFAF7DFFE8721C905051CFAF70AFC67 -:10FE8000011C201CFAF738FDFAF7B4FE4A460CAB09 -:10FE90009850009B049A01330832281C9C00009360 -:10FEA0000492FAF7A7FE0CAB1851FE2004998005C6 -:10FEB000FDF79CFA009A061C131E00DAB4E0013329 -:10FEC00098469B005B420CA999468C4693001A1CED -:10FED000019363441C1C131C53441F1C00256059D0 -:10FEE000FAF7A8FE311CFAF7D5FBEE217851890507 -:10FEF000301CFAF7CFFB043D061C4D45EFD134AB67 -:10FF00009B46C04BB9469A4643460393059B002740 -:10FF100098464346002B00DA84E0002F00DA81E0A7 -:10FF20003B1C00264F4600250024994602E004357C -:10FF30004C450CDC534679595859FAF7ABFB011C78 -:10FF4000301CFAF739F80134061CA045EFDA4B46AD -:10FF5000B9461F1C5A46BB00D65004235B429C4640 -:10FF6000039B0137E144BB42D3D1669B022B00DDEA -:10FF7000D9E0002B00DDBBE014D1019B00205B44E5 -:10FF80001C1C2168FAF718F8009B043C5A1E0092CA -:10FF9000F7D2029B002B03D080231B069C466044B3 -:10FFA000069B18600720079B18405DB03CBC90463C -:10FFB0009946A246AB46F0BD049B002B11D16B1EA7 -:10FFC0009B000CAAD3581B12029373E66B1E9B0076 -:10FFD0000CAAD25803927F2203990A400CA9CA5056 -:10FFE0009DE6FC218905F9F727FF00280DD10023A4 -:10FFF000029397E65346424600259D5004239C46B3 -:020000040002F8 -:10000000E044C84500D0BFE5E1E502230137029393 -:10001000002D00DD55E6FE20311C8005FAF76CFC52 -:10002000061C7FE6002695E7669B022B27DC002B4B -:1000300003DC0020002BACD0B4E7029B0021002B96 -:1000400066D08023069A1B06CB1813603498FAF703 -:1000500053FC009B002B0BDD012435AD02CDF9F7DD -:10006000ABFF009B0134A342F8DA029B002B03D0C4 -:1000700080231B069C466044069B586092E734AB85 -:100080009B46669B032B00D08CE7029B0020002B35 -:1000900000D19CE0802212069446349B069A634469 -:1000A00013605B465B68604463445360906079E72B -:1000B00007970F1C049B0A1C083B00910493191C12 -:1000C0000CA8BB00C358CA46002B00D0EDE64E4832 -:1000D0003B1C84460CA8634484469B006344043B59 -:1000E0005868013A08390028F9D000920491DCE6FA -:1000F000019B00215B441C1C33AD081C2168043C9F -:10010000F9F75AFFAC42F9D1029B011C002B98D1A0 -:10011000069B34981960FAF7EFFB009B002B9BDCE1 -:10012000069B58603EE7669B032B00D03AE7009B96 -:10013000002BAADD5B46019A9E58334A009B9446E9 -:1001400063441C1C9D0033AB9A46A0465D442C685A -:10015000301C211CF9F730FF071C391C201CFAF752 -:10016000CBFB011C301CF9F727FF043DA8606F6032 -:100170003E1C5545EBD1009B4446012B85DD5B467B -:10018000A400A046019A1D199E582C68311C201C01 -:10019000F9F712FF071C391C201CFAF7ADFB311CC4 -:1001A000F9F70AFF043DA8606F603E1CAB45ECD137 -:1001B0004446002004345C4435AD2168043CF9F722 -:1001C000FBFEAC42F9D1029B002B00D062E7069BFC -:1001D000349A98601A605A46526800925A60E1E672 -:1001E0000122C9E5002488E5089B9B009B4648AB9B -:1001F0009A46ECE4201CFAF7FDFC4A460CAB9850FA -:1002000053E6C046D81E0300FFFFFF3FF8B54F4638 -:1002100046469046334A4300C0B4041C0F1C5B089A -:10022000934205DCFAF7E6FC031C201C002B46D0A9 -:10023000211C201CFAF72EFA211C051CFAF72AFAB9 -:100240002949061C281CFAF725FA2849FAF754FB15 -:10025000291CFAF71FFA2649F9F7AEFE291CFAF70E -:1002600019FA2449FAF748FB291CFAF713FA22492C -:10027000F9F7A2FE43468146002B24D0FC21381C0E -:100280008905FAF707FA49468046301CFAF702FA60 -:10029000011C4046FAF730FB291CFAF7FBF9391C20 -:1002A000FAF72AFB1549051C301CFAF7F3F9011C73 -:1002B000281CF9F781FE011C201CFAF71DFB0CBC61 -:1002C00090469946F8BD4946281CFAF7E3F90B49D0 -:1002D000FAF712FB311CFAF7DDF9211CF9F76CFE75 -:1002E000EDE7C046FFFFFF31D3C92E2F342FD732A1 -:1002F0001BEF3836010D50398988083CABAA2A3EDD -:10030000F0B5564644465F464D46F0B4894B46002C -:1003100083B0041C88469246834676089E4211DCD0 -:10032000FAF768FC002823D1534601331E4300D15D -:10033000EEE05346012B00D1FAE0211C7E48F9F78C -:10034000B7FFB1E07D4B9E4212DD002800DAE8E005 -:10035000211C7B48FAF7D0FA4146041C7948FAF789 -:10036000CBFA011C201CF9F727FE00239846041C39 -:10037000211C201CFAF78EF9071C391CFAF78AF9A0 -:10038000211C051C381CFAF785F96F498146281C89 -:10039000FAF780F96D49F9F70FFE291CFAF77AF997 -:1003A0006B49F9F709FE291CFAF774F96949F9F75D -:1003B00003FE291CFAF76EF96749F9F7FDFD291CC0 -:1003C000FAF768F96549F9F7F7FD65490190281CC6 -:1003D000FAF760F96349F9F7EFFD291CFAF75AF9C2 -:1003E0006149F9F7E9FD291CFAF754F95F49F9F772 -:1003F000E3FD291CFAF74EF95D49F9F7DDFD291CEB -:10040000FAF748F95B49F9F7D7FD391CFAF742F9D1 -:10041000011C0198F9F7D0FD4946FAF73BF941462E -:10042000F9F7CAFD391CFAF735F94146F9F7C4FD69 -:100430005149051C4846FAF72DF9291CF9F7BCFD6E -:10044000071C391C201CF9F7B7FD3C4B051C9E42CC -:1004500031DC5346012B27D0291C060B3648F9F70F -:1004600027FF3603211C8046050B301CFAF744FA9F -:100470002D03011C381CFAF73FFA291CFAF70AF978 -:10048000291C041C301CFAF705F9FE218905F9F72F -:1004900093FD011C201CF9F78FFD4146FAF7FAF88D -:1004A000011C281CF9F788FD03B03CBC9046994616 -:1004B000A246AB46F0BD5046FAF7BCFB5B46061CB5 -:1004C000981702231840013B181AFAF7B3FB291CAE -:1004D0008046281CFAF7DEF8311C8146281CF9F703 -:1004E0006BFD011C4846F9F7E3FE391CFAF704FAE4 -:1004F000011C201CFAF700FA011CF9F75DFD011C34 -:10050000301CFAF7F9F9011C4046FAF7C3F8CBE7BB -:10051000201CFCF765FE011CFE208005F9F7C8FED3 -:10052000C2E780231B069C464344644498460FE779 -:10053000201CB9E7FFFF7F31000080BF3FA12C3FA7 -:10054000DA0F493F682122335FAE9BB745F4A338E9 -:10055000C8261A3A16696B3BA427B33C8988083E23 -:100560008453D9377AC09538B937813948DEBE3AD5 -:100570001F37113CD10D5D3DABAAAA3EF8B55646DA -:100580004D4644465F46A54BF0B44E008046894632 -:100590008A4676089E420CDDA14B9E4200DDA0E01B -:1005A00000D19BE05346002B00DCDEE09D4B9E4AD1 -:1005B0009FE09E4B9E4200DDB1E09D4B9E4200DCE1 -:1005C0009FE001235B429B4642464B4640464946DC -:1005D000FBF726FB061C0F1C321C3B1CFBF720FB09 -:1005E000041C0D1C934A944BFBF71AFB934A944B43 -:1005F000FAF7B0FB221C2B1CFBF712FB914A924B23 -:10060000FAF7A8FB221C2B1CFBF70AFB8F4A904B26 -:10061000FAF7A0FB221C2B1CFBF702FB8D4A8E4B2A -:10062000FAF798FB221C2B1CFBF7FAFA8B4A8C4B2F -:10063000FAF790FB321C3B1CFBF7F2FA894A8A4B13 -:10064000061C0F1C201C291CFBF7EAFA874A884B62 -:10065000FBF780FD221C2B1CFBF7E2FA854A864B38 -:10066000FBF778FD221C2B1CFBF7DAFA834A844B3C -:10067000FBF770FD221C2B1CFBF7D2FA814A824B40 -:10068000FBF768FD221C2B1CFBF7CAFA0B1C594612 -:10069000021C013100D170E05946301CCC00391CDD -:1006A000FAF758FB42464B46FBF7BAFA774D784BC0 -:1006B0002D191C1922686368FBF74CFD42464B4616 -:1006C000FBF748FD021C0B1C28686968FBF742FD1C -:1006D00053460A1C002B4BDB031C0AE0002800D108 -:1006E00060E742464B4640464946FAF733FB031C57 -:1006F0000A1C181C111C3CBC90469946A246AB46ED -:10070000F8BD644A644BFAF725FB0022634BF9F706 -:100710004FFB002800D154E743464A46E9E700F082 -:10072000CBF85F4B041C0D1C9E4237DC5D4B9E4298 -:100730005DDC221C2B1CFAF70DFB0022574BFBF74C -:1007400009FD8023061C0F1C0022DB05201C291C30 -:10075000FAF700FB0B1C021C391C301CFAF722FEB6 -:100760000023804689469B462EE72E4B4E4AC0E723 -:1007700080221206031C8A18BBE7301C391CFAF7CA -:10078000E9FA42464B46FBF74BFA021C0B1C40466B -:100790004946FBF7DFFC031C0A1CAAE7434B9E42B9 -:1007A0001ADC0022424BFBF7D5FC0022061C0F1C72 -:1007B0003F4B201C291CFBF733FA0022374BFAF77A -:1007C000C9FA0B1C021C391C301CFAF7EBFD022382 -:1007D000804689469B46F7E62B1C00203549221CA3 -:1007E000FAF7E0FD0323804689469B46ECE60022AB -:1007F0002A4BFBF7AFFC0022061C0F1C274B201CCA -:10080000291CFAF7A7FA0B1C021C391C301CFAF73A -:10081000C9FD0123804689469B46D5E6FFFF0F446C -:100820000000F07F182D4454FB21F93FFFFFDB3F10 -:10083000FFFF1F3E11DA22E33AAD903FEB0D762425 -:100840004B7BA93F513DD0A0660DB13F6E204CC5FA -:10085000CD45B73FFF8300922449C23F0D55555502 -:100860005555D53F2F6C6A2C44B4A2BF9AFDDE5279 -:100870002DDEAD3F6D9A74AFF2B0B33F711623FE1B -:10088000C671BC3FC4EB98999999C93F68B90200F9 -:1008900048B902009C7500883CE4377E0000F03FB8 -:1008A000FFFFF23FFFFFE53FFB21F9BFFF7F034062 -:1008B0000000F83F0000F0BF49004B08191C7047CA -:1008C0000A1C031C024330B50220002A00D130BDAF -:1008D00080221206914216D00C4A04208C180C4A31 -:1008E0009442F4D90B4C0C199442F0D90A4A4900AD -:1008F000490803209142EAD9064A00209142E6D1F4 -:1009000058425841E3E7002BE1D0EFE70000F0FF49 -:10091000FFFFDF7F0000F07FFFFF0F000020704728 -:10092000002001497047C0460000F87FF0B54746F7 -:1009300080B44B004A4A5B0D9D1882B0071C0C1C0A -:10094000CE0F132D39DC002D59DB464F021C2F41F1 -:100950003B1C0B4003439C46B84667460B1C002FCC -:1009600025D043465B081A1C0A4010430027002884 -:1009700008D0132D00D16FE099438023DB022B4177 -:1009800019430C1C3849F6008E19231C346875680D -:100990003A1C201C291CFAF7DDF9009001910098FF -:1009A0000199221C2B1CFBF7D5FB021C0B1C101CF5 -:1009B000191C02B004BC9046F0BD332D0BDD0B1C9E -:1009C0008021021CC9008D42F1D1211CFAF7C2F925 -:1009D000021C0B1CEBE7254A9D1801235B42EB40F0 -:1009E0009C460B1C6146021C0142E0D04B080342AE -:1009F000C8D08027FF052F4198430743C2E74C002A -:100A000064080443021C0B1C002CD0D00903090B02 -:100A100001434A4211438022090B12035B0C11402F -:100A20005B04021C194310480B1CF10041180C68B0 -:100A30004D68201C291CFAF78DF90090019100984F -:100A40000199221C2B1CFBF785FB4B005B08F6076A -:100A50001E43021C331CAAE780273F068CE7C046D2 -:100A600001FCFFFFFFFF0F0088B90200EDFBFFFF55 -:100A70004000C90FC90740080843704743000020E1 -:100A8000024A5B089A4240417047C046FFFF7F7FA1 -:100A9000004870470000C07F054B10B5041C181EAD -:100AA00005D0131C02200A1C211C07F0AEFF10BD4C -:100AB0000B8A0200014B18687047C046F000002006 -:100AC000084B10B5041C002B02D0002100E000BF31 -:100AD000054B1868836A002B00D09847201C08F04B -:100AE000A6F8C04600000000641F030070B5051C96 -:100AF0000C1E01D1002049E0002804D08369002B9E -:100B000001D100F0F9F8224B9C4201D16C6808E059 -:100B1000204B9C4201D1AC6803E01F4B9C4200D1AA -:100B2000EC680C22A35E002BE4D0281C211C0AF0E8 -:100B300067FA236B061C002B06D0281C216A9847F5 -:100B4000002801DA01267642A3891B0603D5281C5A -:100B5000216900F0FBFA616B002908D0231C4433A3 -:100B6000994202D0281C00F0F1FA00236363A16CC3 -:100B7000002904D0281C00F0E9FA0023A3640AF03D -:100B8000DEFA0023A3810AF0DBFA301C70BDC046F8 -:100B9000041F0300241F0300441F030008B5034B78 -:100BA000011C1868FFF7A2FF08BDC046F000002036 -:100BB00038B50B69051C0C1C002B01D100201CE072 -:100BC000002804D08369002B01D100F095F80B4B6D -:100BD0009C4201D16C6808E0094B9C4201D1AC6891 -:100BE00003E0084B9C4200D1EC680C22A35E002B72 -:100BF000E4D0281C211C0AF003FA38BD041F0300AE -:100C0000241F0300441F030008B5011E05D1054B36 -:100C1000054918680AF0B5FA03E0044B1868FFF7B5 -:100C2000C7FF08BD641F0300B10B0200F0000020E5 -:100C300038B5051C0C1C002804D08369002B01D199 -:100C400000F05AF80E4B9C4201D16C6808E00D4B45 -:100C50009C4201D1AC6803E00B4B9C4200D1EC6894 -:100C60006368013B6360002B04DA281C211C01F03F -:100C70000BF803E023685A1C2260187838BDC04680 -:100C8000041F0300241F0300441F030008B5034B87 -:100C9000011C1868FFF7CCFF08BDC046F00000201B -:100CA00008B502490AF06DFA08BDC046B10B020052 -:100CB000002310B5041C0360436083608181436698 -:100CC000C281036143618361191C08225C300AF010 -:100CD000B0FA054B24626362044BA362044BE362E7 -:100CE000044B236310BDC046AD1E0200D51E02009A -:100CF0000D1F020001B40200836913B5002B28D137 -:100D00008364C3640365134B134A1B6882620193B7 -:100D1000984201D101238361041C00F01FF8606038 -:100D2000201C00F01BF8A060201C00F017F8042124 -:100D3000E06000226068FFF7BBFFA0680921012284 -:100D4000FFF7B6FFE06812210222FFF7B1FF01238F -:100D5000A36113BD641F0300A10C0200F8B51D4B75 -:100D6000061C1D68AB69002B02D1281CFFF7C4FFCD -:100D70004835AC686B68013B05D40C22A75E002F98 -:100D800010D06834F7E72B68002B06D1301C042103 -:100D90000AF0BFF92860002801D02D68E9E70C238C -:100DA000336016E00123201C5B42E3810233A38100 -:100DB00067662760A760676027616761A7615C302D -:100DC000391C08220AF035FA201C6763A763A76460 -:100DD000E764F8BD641F030038B5074B074C1D1CC2 -:100DE000E41AA410002C04D0013CA300EB5898474F -:100DF000F8E70AF009FC38BD240100202801002092 -:100E0000F7B50F1C111C01AA051C0AF032FB061EC7 -:100E100001D1002427E0281CFFF7A0FF041EF8D012 -:100E2000DB23281C391C019A5B0000F0ADFD002873 -:100E300006DA00250AF083F9A5810AF081F9E8E7CE -:100E40000A4BE08163620A4BA681A362094B2462CC -:100E5000E362094B2363F30505D5281C211C0022FE -:100E600002230AF06EF9201CFEBDC046AD1E020032 -:100E7000D51E02000D1F020001B4020008B5031CBC -:100E80000A1C03490868191CFFF7BAFF08BDC046D1 -:100E9000F000002070B5051C0E1C141C002804D0A6 -:100EA0008369002B01D1FFF727FF0A4B9C4201D138 -:100EB0006C6808E0084B9C4201D1AC6803E0074B2A -:100EC0009C4200D1EC68281C311C221C00F08AFDD9 -:100ED00070BDC046041F0300241F0300441F03000D -:100EE00008B5031C0A1C03490868191CFFF7D2FF48 -:100EF00008BDC046F0000020F7B5051C0C1C01928F -:100F00001E1C002804D08369002B01D1FFF7F4FEDA -:100F1000414B9C4201D16C6808E0404B9C4201D19E -:100F2000AC6803E03E4B9C4200D1EC688422A3896C -:100F300052001340934203D1281C211CFFF738FEB6 -:100F4000E36A0093002B01D11D3331E0012E05D05F -:100F5000022E31D01623002E2AD12DE0281C211C70 -:100F6000FFF726FE8023A2895B011A4001D0606D45 -:100F700006E0331C281C216A009EB047431C18D091 -:100F8000A3895A0707D56368C01A636B002B0AD080 -:100F9000236CC01A07E01B0705D52368002B02D07D -:100FA00022699B1AC018019B00261B18019303E0BD -:100FB0002B6001277F422DE02369002B03D1281CE1 -:100FC000211C00F057F8281C211CFFF7F1FD071E1B -:100FD000EFD1331C281C216A019A009EB047431CA4 -:100FE000E7D0616B002908D0231C4433994202D01A -:100FF000281C00F0ABF8002363630021201C236948 -:10100000A2892360074B61601340A3815C300822F2 -:101010000AF00FF9381CFEBD041F0300241F030053 -:10102000441F0300DFF7FFFF0E4B70B500251E1CA9 -:101030000D4CE41AA410A54204D0AB00F358984715 -:101040000135F8E70AF0DAFA084B00251E1C084CB7 -:10105000E41AA410A54204D0AB00F3589847013518 -:10106000F8E770BD100100201001002010010020E1 -:1010700024010020F0B58B8991B09B0706D50B1C8D -:1010800047330B600B6101234B6145E00C1C0E23C1 -:10109000C95E061C002904DA8023A5891D4010D1F1 -:1010A0000CE001AA01F098F90028F5DBF023029D7D -:1010B0001B021D40194BED186B425D418027FF005C -:1010C00001E000254027301C391C00F085F800287D -:1010D0000CD1A3899A051FD402221343A381231C98 -:1010E0004733236023610123636115E080220C4BA9 -:1010F000B362A38920601343A38120616761002D3F -:101100000AD00E23E15E301C01F078F9002803D0EC -:101110000122A3891343A38111B0F0BD00E0FFFFBA -:10112000A10C020008B5034B011C186800F054F82C -:1011300008BDC046F000002008B5034B011C18682C -:1011400000F004F808BDC046F000002030B50029CA -:101150003ED004390B68002B00DAC9181D4A136809 -:10116000141C002B02D14B60116031E099420DD26A -:1011700008680A189A4203D11368C3180B605368B1 -:101180004B60216024E08A4203D8131C5A68002A6D -:10119000F9D11D685C198C420BD10968691858187F -:1011A0001960904214D110685268091819605A6089 -:1011B0000EE08C4202D90C23036009E008680C1889 -:1011C000944203D114685268001908604A6059605B -:1011D00030BDC046DC2D0020032370B5CC1C9C43E1 -:1011E0000834051C0C2C01D20C2405E0002C03DA79 -:1011F0000C2300202B6042E08C42F9D3204A136874 -:10120000101C191C002913D00A68121B0DD40B2ABC -:1012100002D90A608B181FE08B4202D15A68026023 -:101220001BE04A685A600B1C17E00B1C4968E9E791 -:10123000144E3368002B03D1281C00F055FD30609C -:10124000281C211C00F050FD031C421CD0D003229E -:10125000C61C964386420AD11C60181C07210B301D -:101260001A1D8843821A0AD05142995007E0311A58 -:10127000281C00F039FD431CBAD0331CECE770BDCC -:10128000DC2D0020D82D0020F0B59FB0061C0F1CCF -:1012900002920593002804D08369002B01D1FFF747 -:1012A0002BFD794B9F4201D1776808E0774B9F4235 -:1012B00001D1B76803E0764B9F4200D1F768BB8944 -:1012C0001B070AD53B69002B07D0002306AD6B61D5 -:1012D00020336B761033AB763DE0301C391C00F0C8 -:1012E000F5FF0028F1D001204042CAE0059A111D07 -:1012F00012680591002A7EDB0992013423782E2B97 -:1013000000D189E021786348032209F05BFF0028BF -:1013100008D0604B0134C01A40238340181C2B684E -:10132000184328602178631C5B48062202932976C3 -:1013300009F048FF002800D191E0584B002B00D065 -:1013400084E00722059B07339343083305936B69B9 -:10135000039A9B186B61029C2378002B04D1029B9B -:10136000E31A049311D003E0252BF8D00134F3E7FE -:10137000049B301C391C029A09F078FF431C7BD077 -:101380006A69049B944663446B612378002B73D095 -:101390000122002352426A6002A9543252180134D9 -:1013A0002B60EB60AB601370AB6521783C48052285 -:1013B00009F008FF002809D0394B0134C01A012375 -:1013C0008340181C2B6818432860EEE72B68DA0668 -:1013D00004D55322202102A8121811701A0704D52F -:1013E00053222B2102A81218117022782A2A00D128 -:1013F0007CE7099B05E05242EA60022213432B601E -:101400007BE72278303A092A04D80A214B43013479 -:101410009B18F6E7099371E763782A2B09D1059B9E -:1014200002341A1D1B680592002B0DDA01235B4262 -:101430000AE0002301342278303A092A04D80A212C -:101440004B4301349B18F6E707935BE705AB00932A -:10145000301C291C3A1C134B00E000BF07E005AB11 -:101460000093301C291C3A1C0E4B00F01DF8039011 -:10147000039B013300D06AE7BB895B0600D532E7E6 -:101480000B981FB0F0BDC046041F0300241F0300CB -:10149000441F03002DB0030031B003000000000022 -:1014A00027B003006DB20200F0B58BB006920A1CA3 -:1014B00043320793059004920A7E0C1C109B6E2AFF -:1014C00000D1A8E011D8632A22D009D8002A00D17F -:1014D000B2E0582A00D0C2E045310A707C4A4FE0A1 -:1014E000642A1DD0692A1BD0B9E0732A00D1A7E075 -:1014F00009D86F2A29D0702A00D0B0E020220968CC -:101500000A43226037E0752A1FD0782A33D0A6E03C -:101510000E1C1A684236111D196013683370A1E061 -:1015200021681A68080606D4490604D5111D1960F9 -:101530000023D55E02E0111D19601568002D3BDA0D -:101540002D23049A6D42137036E021681A6808064C -:1015500006D4490604D51568111D1960ADB202E024 -:10156000111D196015685A4B227E03930A276F2AB2 -:101570001DD108271BE0221C782145321170554AE5 -:1015800019680392081D226818600D68100602D4BD -:10159000500600D5ADB2D30702D520231A432260EE -:1015A0001027002D03D1202322689A432260231C98 -:1015B000002243331A7002E00A27454B0393636805 -:1015C000A360002B03DB0422216891432160002DDE -:1015D00002D1049E002B0ED0049E281C391CF8F763 -:1015E000C1FA039B013E5B5C281C3370391CF8F781 -:1015F00033FA051EF1D1082F09D12368DB0706D580 -:1016000063682269934202DC3023013E3370049BFD -:101610009B1B23612BE009681A68080607D449065A -:1016200005D5111D19601368A28A1A8004E0111DE6 -:101630001960136862691A600023049E236116E032 -:101640001A68111D196016680021301C626809F0C3 -:10165000B9FD002801D0801B6060636803E0261C90 -:1016600042363270012323610023049A1370079BD2 -:1016700005980093211C069B09AA09F009FE431C4A -:1016800002D10120404221E0236905980699321CCD -:10169000079DA847431CF4D023689B0705D4099BEA -:1016A000E068984212DA181C10E00025E368099AF5 -:1016B0009B1A9D42F3DA221C0123059806991932E0 -:1016C000079EB047431CDCD00135EFE70BB0F0BDFF -:1016D00038B0030049B00300F7B5151C8A680190C3 -:1016E0000C1C002A06D18A69511E8A4101215242EE -:1016F0000A43A2602268D20603D41A68111D196039 -:1017000017680026A06900281DD123680136DB0672 -:1017100003D42B681B783B7001372A686B68013251 -:101720002A60A268013B013A6B60A260002A1FD0C8 -:10173000002BE7DCC0235B00E3580198291C984785 -:101740000028DFD014E0012808D12B6862691B78DB -:10175000D35C002BD9D1002E19D009E0022807D183 -:101760002B680B4A1B781268D3185B781B07CCD503 -:1017700010232268134006D1E2680132E260A269B8 -:10178000002A00D03B70002023699E192661FEBD0F -:10179000F4000020F0B50C1C8BB00193744B049046 -:1017A000161C07AA23CB23C2724B0593A369032BF4 -:1017B00001D0714B05930022A36803925D32591E3C -:1017C000FF32914205D95E3BFF3B03935E23FF331B -:1017D000A360231C1C330093D023002722681B0125 -:1017E00013432360009B02933268BB00117807AA61 -:1017F0009858022209F0E6FC002839D0012F0DD1BB -:101800006368002B06D1083322686360F933FF3325 -:1018100013432360594B226813400DE0022F0CD173 -:10182000C02280212368D2001A4089008A4222D136 -:1018300010226260F03213432360A3685A1EA26034 -:10184000002B15D0029B5D1C33685A1C32601B783C -:10185000029A029513707368013B7360002B07DCDA -:10186000C0235B00E3580498311C9847002844D1FA -:101870000137032FB8D16368002B01D10A336360AD -:101880001021002763686069C91A3D4BC91809F027 -:1018900079FD029DA368002B30D032686069117811 -:1018A000405C00282AD030290BD12168090508D5D1 -:1018B000039A0137002A0BD0013A01330392A36047 -:1018C00006E021682F4B0B40236013782B70013505 -:1018D0007368013B7360002B03DD336801333360B1 -:1018E00007E0C0235B00E3580498311C98470028A8 -:1018F00004D1A368013BA360CCE700272368DB0584 -:101900000ED5009B9D4207D9BE23013D5B0029787F -:10191000E3580498321C9847009B01209D4225D033 -:10192000102223681A401AD12A706368049800991B -:10193000059EB047019B22681B68910607D4D1071A -:1019400005D501991A1D0A601B68188004E00199E9 -:101950001A1D0A601B681860E3680133E360002009 -:10196000009BED1A2369ED195D1925610BB0F0BDDF -:10197000681F0300391F020075200200FFFAFFFFF5 -:101980005AB00300FFF6FFFF38B5051C0020074CD6 -:101990002060081C111C1A1CF3F710FC431C03D117 -:1019A0002368002B00D02B6038BDC046D42F002008 -:1019B0000FB40B4B13B51C68002C05D0A369002B8A -:1019C00002D1201CFFF798F905AB201CA168049AEE -:1019D0000193FFF759FC16BC08BC04B01847C04679 -:1019E000F000002070B5051C0E1C141C002804D04B -:1019F0008369002B01D1FFF77FF9154B9C4201D180 -:101A00006C6808E0134B9C4201D1AC6803E0124BB8 -:101A10009C4200D1EC68A368013BA360002B10DA64 -:101A2000A269934207DB23681E70236819780A298C -:101A30000AD1281C01E0281C311C221C00F0DAFB12 -:101A400005E023681E7023685A1C2260187870BD58 -:101A5000041F0300241F0300441F030070B5051C6E -:101A60000E1C002804D08369002B01D1FFF744F934 -:101A7000AB69AC68002B02D1281CFFF73DF9324B53 -:101A80009C4201D16C6808E0304B9C4201D1AC68AB -:101A900003E02F4B9C4200D1EC68A3891B0702D5C1 -:101AA0002369002B19D1281C211C00F00FFC0028F1 -:101AB00013D00120404245E03178002B1BDAA269A7 -:101AC000934211DA221C281C00F094FB01304242A0 -:101AD0004241D0B20028ECD10136A3683278013BF4 -:101AE000A360002AE8D10CE02368197023681978F4 -:101AF0000A2903D1E6E723681970236801332360BC -:101B0000EAE7002B17DAA269934208DB0A2322686E -:101B10001370236819780A2911D1281C01E0281CA8 -:101B20000A21221C00F066FB013042424241D0B241 -:101B3000002806D0BDE70A2322681370236801330A -:101B400023600A2070BDC046041F0300241F030049 -:101B5000441F030008B5034B011C1868FFF77EFF04 -:101B600008BDC046F0000020F8B5051C0C1C00287C -:101B700004D08369002B01D1FFF7BEF83D4B9C4296 -:101B800001D16C6808E03C4B9C4201D1AC6803E099 -:101B90003A4B9C4200D1EC680023A289636093B267 -:101BA000990663D459071AD4D90605D409232B60A2 -:101BB00037331A43A28159E0082633420AD0281C41 -:101BC000211CFEF7F5FF002850D1A389A060B34384 -:101BD000A381A0610422A3891343A38112E0616B56 -:101BE00000290FD0231C4433994202D0281CFFF750 -:101BF000ADFA0020236C60636360834202D0E36B24 -:101C0000236035E02369002B03D1281C211CFFF73A -:101C100031FAA789BEB2B3070FD00123A381184BB5 -:101C20001849186809F091FA0923A7813340092B54 -:101C300003D1281C211C09F0E3F92369281C1A1C74 -:101C40002360216A6369656AA847021C60600020FE -:101C500082420DDCA389824204D120221343A38156 -:101C6000013805E0402213436060A3810120404217 -:101C7000F8BDC046041F0300241F0300441F0300D7 -:101C8000641F03006DB3020038B5051C0C1C00284E -:101C900004D08369002B01D1FFF72EF80F4B9C4233 -:101CA00001D16C6808E00E4B9C4201D1AC6803E0A6 -:101CB0000C4B9C4200D1EC68281C211CFFF754FF00 -:101CC000002807D16368013B636023685A1C2260C7 -:101CD000187801E00120404238BDC046041F0300CF -:101CE000241F0300441F030038B50023064C051CC5 -:101CF000081C2360F3F75AFB431C03D12368002B15 -:101D000000D02B6038BDC046D42F0020F7B51E1C74 -:101D10003C4B041C1D680F1C0192002D05D0AB69C3 -:101D2000002B02D1281CFEF7E7FF374B9C4201D164 -:101D30006C6808E0354B9C4201D1AC6803E0344B41 -:101D40009C4200D1EC68019B022B58D8002E56DB38 -:101D5000281C211CFEF72CFF00236360A361A389CC -:101D60001B0603D5281C2169FFF7F0F98322A389FC -:101D70009343A381019B022B13D0002F25D1002E6A -:101D800001D18026F600301CFFF7CCF9071E18D1D0 -:101D90008020C000FFF7C6F9071E10D10120404285 -:101DA00000E000200222A3891343A3810023A36043 -:101DB000231C4733236023610123636121E08026D4 -:101DC000F6008022A3891343A381019B012B05D137 -:101DD000A389019A1A437342A281A3610D4B00208B -:101DE000AB62A289276027616661130709D50323C7 -:101DF0001A40534253415B421E40A66001E001205D -:101E00004042FEBDF0000020041F0300241F030019 -:101E1000441F0300A10C02000EB410B59DB002A92E -:101E2000029008610B48822488604861012040428A -:101E30001FABC881084804CBA400006801938C81C3 -:101E400000F062FB0023029A13701DB010BC08BCA6 -:101E500003B01847FFFFFF7FF00000200EB481237E -:101E600070B59DB002AC21AD9B0040CDA381029026 -:101E7000069009F0E3FA0B4B606063620023636332 -:101E8000A364013BE381084B6061211C1868321C8C -:101E90002B1C019500F02EFC1DB070BC08BC03B0DB -:101EA0001847C046FDB30200F000002038B50C1CF6 -:101EB0000E25495F00F096FD002803DB636D1B18BB -:101EC000636503E0A289024B1340A38138BDC0467D -:101ED000FFEFFFFFF8B51E1C8B89051C0C1C171C9F -:101EE000DB0505D50E23C95E0022022300F098FA17 -:101EF000A289054B281C1340A3813A1C0E23E15EE6 -:101F0000331C00F0CFF9F8BDFFEFFFFF38B50C1C14 -:101F10000E25495F00F084FAA389421C03D1054ACB -:101F20001340A38104E0802252011343A381606522 -:101F300038BDC046FFEFFFFFF0B51E1C444B87B015 -:101F40001B68059002930B1C039101921C78029A66 -:101F50005D1C121950780822104001D02B1CF5E7A7 -:101F60002D2C04D19D1C5C780123009304E000908B -:101F70002B2C01D15C789D1C002E02D0102E0AD192 -:101F800060E0302C5CD120222B789343582B52D127 -:101F900010266C780235009F311C7B1E9F412D4B13 -:101FA000FF18381CF7F7DEFD381C0491311CF7F7D9 -:101FB00053FD0022071C131C029909194978480790 -:101FC00001D5303C07E00320084017D03721012815 -:101FD00000D02031641AB44210DA511C0BD0BB423D -:101FE00007D802D1049A944203DC73430122E31818 -:101FF00001E0012252422C780135DDE7181C511C0A -:102000000BD10098059A431E9841124BC018222309 -:102010001360019B002B0AD117E00099002900D022 -:102020005842019B002B10D0039B002A00D06B1E4E -:10203000019A136009E03024002EACD10826AAE7EB -:102040000A26A8E7302CA6D19DE707B0F0BDC04610 -:10205000F4000020FFFFFF7F38B5051C0C1C131C8B -:10206000034A291C1068221CFFF766FF38BDC046D2 -:10207000F0000020F0B51E1C3E4B87B01B68171CFB -:1020800002930B1C059004911C78029A5D1C121996 -:10209000517808220A4001D02B1CF5E72D2C04D1E1 -:1020A0009D1C5C780123019304E001922B2C01D14B -:1020B0005C789D1C002E02D0102E0AD154E0302CEA -:1020C00050D120222B789343582B46D110266C7880 -:1020D00002350120311C4042F7F7BEFC039001207D -:1020E000311C4042F7F73EFD00228C46131C02993A -:1020F00009194978480701D5303C07E0032008401A -:1021000017D03721012800D02031641AB44210DAE8 -:10211000511C0BD0039A934206D801D1644503DCCD -:1021200073430122E31801E0012252422C78013569 -:10213000DDE7181C511C04D122230599101C0B60EB -:1021400003E00199002900D05842002F0FD0049BD2 -:10215000002A00D06B1E3B6009E03024002EB8D16D -:102160000826B6E70A26B4E7302CB2D1A9E707B0B3 -:10217000F0BDC046F40000200B1CF7B54D6B443396 -:102180000C1C9D421BD18026F600311CFFF724F861 -:10219000002802D10120404225E0231C6063A66391 -:1021A00046331A78104BC254231C45331A780F4B10 -:1021B000C2542A780E4BC254C018206012E08E6BB5 -:1021C000291C73001A1C019309F08BF9051EE1D03C -:1021D0008719381C291C321C09F00EF8019B276056 -:1021E0006563A3630020FEBDFF030000FE03000043 -:1021F000FD03000070B5051C0E1C141C002804D043 -:102200008369002B01D1FEF777FD234B9C4201D15E -:102210006C6808E0214B9C4201D1AC6803E0204B84 -:102220009C4200D1EC68A369A360A3891B070AD56F -:102230002369002B07D023682269F6B2981A6369D4 -:1022400098420FDB08E0281C211C00F03FF8002812 -:10225000F1D0012040421DE0281C211CFEF7A8FC03 -:102260000028F6D1A3680130013BA36023685A1C03 -:1022700022601E706369984205D0A389301CDB0779 -:1022800008D50A2E06D1281C211CFEF791FC002837 -:10229000DFD1301C70BDC046041F0300241F0300A3 -:1022A000441F030038B5051C0020074C2060081CA3 -:1022B000111C1A1CF3F704F8431C03D12368002BEC -:1022C00000D02B6038BDC046D42F0020354B70B5F0 -:1022D0001D68061C0C1C002D05D0AB69002B02D11B -:1022E000281CFEF709FD304B9C4201D16C6808E0C8 -:1022F0002E4B9C4201D1AC6803E02D4B9C4200D197 -:10230000EC68A3899AB2110723D4D10607D4092215 -:102310000120326037321343A381404240E053072B -:1023200013D5616B002908D0231C4433994202D095 -:10233000301CFEF70BFF002363632422A389934321 -:10234000A38100236360236923600822A3891343C8 -:10235000A3812369002B0BD1A023A2899B001340EA -:1023600080229200934203D0301C211CFEF782FE93 -:102370000123A289134005D00023A36063695B4257 -:10238000A36103E0910700D46369A360002023697F -:10239000834205D1130603D540231A43A281013895 -:1023A00070BDC046F0000020041F0300241F03007E -:1023B000441F030038B50023064C051C081C23608D -:1023C000F2F768FF431C03D12368002B00D02B6079 -:1023D00038BDC046D42F002038B50023064C051C5C -:1023E000081C111C236006F002FC431C03D1236867 -:1023F000002B00D02B6038BDD42F002038B500232F -:10240000064C051C081C2360F2F7A8FF431C03D1EF -:102410002368002B00D02B6038BDC046D42F00208D -:1024200038B5051C0020074C2060081C111C1A1C24 -:10243000F2F7A8FF431C03D12368002B00D02B60C8 -:1024400038BDC046D42F0020F0B58E6885B0071C7B -:102450000C1C03920193B34245D390238A89DB007D -:102460001A423DD003250969236801985B1A02933B -:1024700063695D43EB0F5D19029B6D1001331B18FF -:102480009D4200D21D1C381C53050FD5291CFEF798 -:10249000A3FE061E13D0029A216908F0ADFEA289A0 -:1024A000184B134080221343A38111E02A1C09F02A -:1024B00018F8061E0CD1381C2169FEF747FE0C23C4 -:1024C000402201203B60A38940421343A38117E0CF -:1024D000029B2661F61826606561019EED1AA560D3 -:1024E000019BB34200D2019E321C2068039908F080 -:1024F0008CFE0020A3689B1BA36023689E192660A6 -:1025000005B0F0BD7FFBFFFFF0B59FB002900593D3 -:102510008B890E1C171C1B0610D50B69002B0DD1C7 -:102520004021FEF759FE30603061002804D10C23B1 -:10253000029A01381360D0E040237361002306AD96 -:102540006B6120336B761033AB763C1C2378002B09 -:1025500003D1E31B049312D003E0252BF9D00134FF -:10256000F4E7049B0298311C3A1CFFF76DFF431CF3 -:1025700000D1ACE06A69049B944663446B612378A4 -:10258000002B00D1A3E00122002352426A6002A97D -:102590005432521801342B60EB60AB601370AB65A2 -:1025A0004F4F2178381C052208F00CFE002808D077 -:1025B000C01B01278740381C2B6801341843286052 -:1025C000EEE72B68DA0604D55322202102A8121860 -:1025D00011701A0704D553222B2102A8121811706A -:1025E00022782A2A01D0099B0EE0059A111D126853 -:1025F0000591002A01DB099204E05242EA600222BE -:1026000013432B60013409E02278303A092A04D8B8 -:102610000A214B4301349B18F6E7099323782E2BAC -:1026200018D163782A2B09D1059B02341A1D1B6827 -:102630000592002B0DDA01235B420AE000230134EE -:102640002278303A092A04D80A214B4301349B18D6 -:10265000F6E70793234F2178381C032208F0B2FDD8 -:10266000002807D0C01B40278740381C2B68013446 -:102670001843286021781C480622671C297608F038 -:10268000A1FD002812D0194B002B06D10722059B73 -:10269000073393430833059314E005AB0093029886 -:1026A000291C321C124B00E000BF07E005AB009371 -:1026B0000298291C321C0E4BFEF7F6FE0390039B7A -:1026C000013304D06B69039A9B186B613DE7B389B2 -:1026D0000B985B0601D5012040421FB0F0BDC046FB -:1026E00027B003002DB0030031B00300000000004C -:1026F00049240200F0B5B54C071CA5440393002300 -:1027000086204893499305AB4A93BE2340000D1C95 -:10271000019202A9AE4A5B000918CA50AD4A02A94B -:1027200004330918CA50019B1C78002C00D144E1E5 -:10273000A94E33681B195A780823134023D06B68BD -:10274000002B10DD2B6831681A788A18527812072E -:1027500015D5499A01330292013249926A682B6079 -:10276000013A6A60EBE78621C023490002AA5218A9 -:102770005B00D358381C291C98470028E2D0019EE2 -:1027800001360196CFE7019A561C252C4FD147936D -:10279000459353782A2B02D11A3B45930136341CBA -:1027A00021780B1C303B092B09D8479B013401933E -:1027B0000A23019A5343303B59184791F0E7874E5B -:1027C0000322301C08F0FEFC002808D0801B0126E4 -:1027D0008640301C459B0134184301934590661C8C -:1027E0002478672C10D8652C00D384E05B2C5AD059 -:1027F00005D8002C00D1E2E0252C18D07DE0632C18 -:102800005FD0642C46D078E0702C34D007D86E2C82 -:102810005FD041D8692C70D10023469341E0752CDC -:1028200038D0782C2DD0732C67D1022347E06B6809 -:10283000002B0EDD2B681A78A24200D0BDE00133D8 -:102840006A682B60499B013A019301336A6049939E -:1028500097E78621C023490002AA52185B00D3588B -:10286000381C291C98470028E4D04898002800D03C -:102870009FE00138A5E0459B01932023019A134373 -:102880004593459B01938023019A9B0013434593F5 -:10289000102302E00A2300E00823469304236E2C51 -:1028A0000DDC03230BE0311C05A808F06BFD459BF4 -:1028B000061C01934023019A1343459301234B9334 -:1028C0001FE0459B01934023019A13434593002346 -:1028D000F5E74599CB0600D553E7039B499AC8070E -:1028E00004D5191D03911B681A804AE7191D03912D -:1028F0001B681A6045E70523E1E703234B93073381 -:1029000046936B68002B04DD459B01935B0618D54D -:102910001FE08621C023490002AA52185B00D35849 -:10292000381C291C98470028EED09EE7499A01924E -:10293000013249926A68013A6A60002A13DD013364 -:102940002B602B6824491A7809688A185278120774 -:10295000ECD44B9B022B13DC381C45A92A1C03AB7F -:10296000FEF7BAFE1FE08621C023490002AA5218D2 -:102970005B00D358381C291C98470028E1D074E725 -:10298000042B06DC381C45A92A1C03ABFEF702FF0A -:1029900009E0134B002B00D1F3E6381C45A92A1C93 -:1029A00003AB00E000BF012807D0022800D0E8E612 -:1029B0005BE7AB895B0604D501E0489801E00120A4 -:1029C0004042A7239B009D44F0BDC04664FDFFFF2D -:1029D0002FB50200A9B50200F40000202DB00300BD -:1029E0000000000038B5051C0020074C2060081CC2 -:1029F000111C1A1CF2F78EFC431C03D12368002B18 -:102A000000D02B6038BDC046D42F002010B5041C68 -:102A100008F014FD011C201CDDF7A6FC10BD38B524 -:102A2000051C03300C1C00F013FE2060457020686C -:102A3000023038BDF8B54578871C041C291C381CA9 -:102A4000DDF75CFC061E0BD1291C381CDDF738FCB9 -:102A500065192070AE70201CDDF70CFC061C02E02E -:102A6000201C00F01CFE301CF8BD08B5DDF7F0FBA3 -:102A7000007808BD08B5DDF7EBFB407808BD08B568 -:102A8000DDF7E6FB023008BD10B50C1CDDF7E0FBFE -:102A900043780230236010BD436870B5CC180368DA -:102AA00001269C4218D9067BB607F60F13D10723DF -:102AB00040349C430834051C211C806800F0DEFD76 -:102AC0000122002803D12B7B13432B7304E02C60DD -:102AD000A860161C00E00026301C70BD037B70B59A -:102AE000041C0E1C151CDB0703D5237B9B0706D497 -:102AF00014E0111CFFF7D0FF002805D1F5E763684B -:102B00002568AB420AD2ED1AA3686268311C981896 -:102B10002A1C08F07AFB63685D19656070BD10B50A -:102B2000041C002900D10131002321606360081CCE -:102B300000F08EFD0122A060237B002801D1134309 -:102B400002E0934302229343237310BD38B50D1C5A -:102B5000041C0131FFF7E3FF656038BD002382608C -:102B600001224360037B0160934392181343037374 -:102B70007047037B10B5041C9B0702D4806800F0EB -:102B80008EFD0023A36010BD002301224360037B60 -:102B9000934303737047007BC007C00FC0B27047F8 -:102BA000027B0023D20700D48368181C7047027B85 -:102BB0000023D20700D44368181C704738B5037B44 -:102BC000041C00209B0711D423680D1CA068C918A1 -:102BD00000F054FD002804D10122237B134323730A -:102BE00004E02368A060ED182560C01838BD38B532 -:102BF000037BDB0701D500200AE00D1C041CFFF756 -:102C00004BFF0028F7D06368A068E9186160C0181E -:102C100038BD38B5037BDB07DD0F002B01D000206A -:102C200009E00121041CFFF737FF0028F7D0A36853 -:102C300062689D54A06838BD10B50C1C0121FFF7D7 -:102C4000D6FF002800D0047010BD38B5051C081C44 -:102C50000C1C08F0F3FB211C021C281CFFF73EFF94 -:102C600038BDF8B5037BDB0701D5002019E04768C4 -:102C70000C1EBC4200D93C1C161C051C002A0ED0A0 -:102C8000111CFFF709FF0028EFD0A968A019081848 -:102C90003A1B091908F0B9FA6B689E196E60A868AA -:102CA0000019F8BD10B5141C0122FFF7DAFF002847 -:102CB00000D0047010BD10B5141C0122FFF7D1FF25 -:102CC000002800D0047010BD037BDB07DB0FDBB2F4 -:102CD000002B06D14268914201D9436001E0521AAB -:102CE00042607047037B70B5DB0714D44368994298 -:102CF00011D28E189E4201D341600CE0151C0A1CB3 -:102D0000041C816888189A1A521B891908F07DFAE8 -:102D100063685D1B656070BD38B5041C0D1C002226 -:102D200001794020E6F7CEFDE3682B60A3685843A5 -:102D3000686023790020AB6038BD416838B5C2684F -:102D40008C68031C0020A24207D29C68551C08799D -:102D5000A218C968DD60E6F7D7FD38BD7FB500254C -:102D60001C1C081C02230E1C0095111C0122DDF7FF -:102D70003BFC206803A9E9F70FFD0078012E03D181 -:102D8000291CDDF799FD02E06168DDF765FE04B0FE -:102D900070BD826810B5C3689468011C0020A3420E -:102DA00005D2D268980082580133101CCB6010BD48 -:102DB000F0B585B001900E1C171C0293E0F758FD8A -:102DC000019BB34254D2019B1C1F002F02D13368D8 -:102DD000039304E0381C316801F0D4FD0390351CE6 -:102DE0000434AC420FD2002F01D1216804E02168E5 -:102DF000381C01F0C7FD011C1920039AE5F746FABB -:102E0000029B9842ECD0043DAC4214D2002F01D179 -:102E10002A6804E0381C296801F0B4FD021C19205E -:102E20000399E5F733FA029B9842ECD023682A68AD -:102E300022602B60D4E72368326822603360019BF4 -:102E4000EA1A331B9B10013B921004349A4207DAB2 -:102E50000198291C3A1C029BFFF7AAFF0194AFE7D7 -:102E6000311C201C3A1C029BFFF7A2FF2E1CA7E777 -:102E700005B0F0BD08B50B1C0968021CC86889685C -:102E8000E8F774FA08BD38B5041C081CE5F770F9BA -:102E9000051C281CE5F7BAF9011C201C002902D0EA -:102EA000DDF7E8FEF5E738BD08B5031C0A1CC0686D -:102EB000996802F021FB08BD38B5051C102000F010 -:102EC000C7FB041C291CDEF729F8201C38BD73B58C -:102ED00000240D1C1E1C081C0094111C0123221C24 -:102EE000DDF782FBA54203D1281CFFF7E5FF05E0D3 -:102EF000201CFFF7E1FF3168FFF7C5FF76BD38B54D -:102F0000041C0D1CFFF7D8FF0023A4009D4206D02F -:102F1000A34204D0E958C268D1500433F8E738BD61 -:102F200008B5031C8068D968FFF7E9FF08BD83680E -:102F30000B60C368136070478160704738B5041C2C -:102F40000B1C151CA1681A1C00680023DEF77AFF11 -:102F5000E3688000C55038BD70B5146801291DD9DB -:102F60001025211C0378A94316D0082C08D1302B3A -:102F70001BD1202243781A43031C6F2A27D109E072 -:102F8000022C0BD1302B10D1202243781A43031C82 -:102F9000622A1CD1831C1AE0302B08D0002C04D1EB -:102FA0000A23136001E0002C09D0031C0FE0202647 -:102FB0004178831C31437829F5D1156007E06F29EA -:102FC00001D1673902E06229EAD160391160181A2B -:102FD00070BD10B57F244018431E14401C700C1A9D -:102FE0001C19002C05DD8024D2096442013B1443E6 -:102FF000F4E710BD30B50268051C00207F2411786D -:10300000C3010C4049B2E01801320029F6DB2A6006 -:1030100030BD13B5421C019202780C1C031C082A17 -:1030200010D8101CF6F7FAFC1D100E0508080E0E3D -:103030000A000533019314E00333FBE701A8FFF70F -:10304000D9FF0EE0192A01D80233F3E701A8FFF7F0 -:10305000D1FF01A8FFF7CEFF002C02D0019B18186A -:103060000190019816BD10B50C1C0221FFF7BFFDA1 -:10307000230A0A330370447010BDF8B50478002C9D -:103080002AD11E1C0D1C83684168171C041C8B422E -:103090000FD30C235943C068C031012200F0FBFA62 -:1030A000002802D10123237016E06368E06010332A -:1030B0006360A368E1685A1CA2600C225343CB18DA -:1030C0001A682D02290A150E2D060D431D603A7847 -:1030D0005E60DA70069A9A60F8BD10B50C1C052186 -:1030E000FFF785FD03230370431C05301C7001337B -:1030F00024128342FAD110BD70B5041C161C0025A1 -:1031000083690135DB09FCD16B1C081C191CFFF716 -:103110006EFD08230370291C0130A269FFF759FFD7 -:103120006569A369AB4206D30835A900E06900F0E0 -:10313000A5FA6561E061A369E269591C9B00A16180 -:103140009E5070BDF0B5046A89B0231C40330393D0 -:103150001D78071C0E1C082D08D1A16CE06CDDF752 -:1031600003F9011C301CFFF77EFF69E0092D0DD12A -:103170000022E06CA16C231CE0F7C6FB021CC30715 -:103180000ED54110301CFFF7A8FF59E00A2D0CD1D5 -:1031900000940122E06CA16C0023E0F741FC021CCA -:1031A000381C311CFFF7A8FF4AE02B1C0B3B012BFE -:1031B0003FD804A8A16CFFF7B2FC04A8E16CA26C94 -:1031C000FFF78CFC201C02F0DFF8039B1B78AB425E -:1031D000F3D00B3B0020012B36D9059906980A291C -:1031E00002D8DDF7C1F801E0DDF788F8041E0DD044 -:1031F0000B3D6B425D410523301C03215D1BFFF736 -:10320000F6FC4470240A057084700EE00698059957 -:103210000B2D03D1221CE8F707FE01E0E8F71CFEA6 -:10322000021C311C381CFFF767FF04A8FFF7A1FC44 -:1032300009E0081C0221FFF7DAFC01234570037046 -:10324000201C02F0A1F8012009B0F0BD13B5013037 -:10325000019001A80C1CFFF7CDFE2060019816BD5F -:10326000002310B50B60C2185278DC00A2400C6835 -:10327000013322430A60042BF5D1053010BD07B598 -:1032800001A9FFF7EDFF01980EBD10B502780023EC -:10329000032A06D10C1CFFF7F2FF0123400018435C -:1032A0002060181C10BD38B50D1C0024A84204D2A3 -:1032B00001210134FFF7ADFEF8E7201C38BD08B549 -:1032C0000121FFF7A6FE08BD08B50021FFF7A1FE0A -:1032D00008BD13B50130019001A80C1CFFF78AFE50 -:1032E00001A8FFF787FE019B18182060181C16BD67 -:1032F00013B5041C00680378002B02D10130206054 -:103300000DE0192B02D91A318B4203D00121FFF7AE -:1033100080FE04E001A9FFF7DCFF2060019816BDE4 -:1033200037B51C1C431C0193037801A81A3B0B60A2 -:10333000151CFFF75FFE286001A8FFF75BFE019BED -:1033400018182060181C3EBD07B501A9FFF7C1FF82 -:10335000019BC01A43425841C0B20EBD10B58068EF -:10336000002804D0446800F09AF9201CF8E710BD4A -:1033700073B5051C01A98068E8F794FDEB68019A14 -:10338000061C002093420CD2F618301C00F042FDBF -:10339000841B211C301C0122E8F746FDEB681C1938 -:1033A000EC6076BD73B51D1C061C0023081C111CA7 -:1033B00002220093131CDDF717F90C2000F048F9E6 -:1033C00006602B68041C43606868E4F7D1FEA060C7 -:1033D000201C76BD704708B5DEF772FB4068FFF72A -:1033E0004EFB08BD08B5830702D000F083FC07E060 -:1033F000002803DB01234000184301E000F095FCA6 -:1034000008BD70B5041C0E1C151CDEF759FBC36A01 -:10341000181E06D0201C311C2A1C984743425841D4 -:10342000C0B270BD022803D149000138084300E052 -:103430000020704708B5DEF74FFFF0F72DFDDEF7EF -:1034400089FF0028F9DB08BD08B5406902F092FB4E -:1034500008BD08B5406902F086FB08BD038870B559 -:103460000469032B09D10023C568AB4205D09E0037 -:10347000A659964208D00133F7E78B004069E25025 -:1034800002F069FB012000E0002070BD38B50C1C83 -:1034900089B2051C018042608360032905D1C3689D -:1034A00000219A00006907F0C4FE211F4B424B41E6 -:1034B0006869591C02F031FB68690021EAF724FAB7 -:1034C00038BDF0B5041C85B040690F1C02F079FBD3 -:1034D000606902F03BFB2388042B15D1606902F080 -:1034E00038FB6368051C60695E6902F030FB0022EE -:1034F00061680092498B031C019102920397301C72 -:1035000005212A1CDFF718FC05B0F0BD38B5051CF5 -:10351000182000F09DF8041CC560A80000F098F881 -:103520002061281C02F0DEFA6061201C38BD10B555 -:10353000041C006900F0B3F86069002102F0DFFAB2 -:10354000201C00F0ACF810BD08B5102000F092F877 -:10355000072203789343063A1343037008BD0378A8 -:1035600010B55B07041C5B0F052B06D0081CA36875 -:10357000111C6268E5F7C4FC06E003686168D802C4 -:10358000400DE268E5F706FD23889B0601D5E2F7CA -:1035900047FA10BD38B5141C802252000A400D1C99 -:1035A000111E01D021686268FFF7D9FF0223EA09E2 -:1035B0001A409A40E9B2A218E8F726FB38BD8368A2 -:1035C000C268934203D25A1C8260187801E001203D -:1035D00040427047036810B5041C002B02D04068BD -:1035E00000F05DF8201C00F05AF810BDFC30C160FE -:1035F0000261704738B5041C012500236A1ED2B24F -:103600009200A218FF32507C7F2806D102339B0023 -:103610001855201CE4F712FA38BD7E280AD17F2203 -:1036200002339B001A55201CE4F708FA00230135E9 -:10363000EDB2E3E70028FAD0990061180872907C97 -:1036400001334872D07CDBB28872127DCA72EEE719 -:1036500010B50021041CE3F709FC002804D1002C5C -:1036600002D0201CE5F71AFB10BD08B50021E3F7D6 -:10367000FDFB08BD08B5FFF7EBFF08BD10B5012243 -:103680000C1CE3F7F3FC002804D1002C02D0201C12 -:10369000E5F704FB10BD08B5E3F7E8FC08BD08B585 -:1036A000E3F768FC08BD00B50B7905280FD8F6F7DD -:1036B000B5F9030E05050709081C09E05B0003E0E6 -:1036C000584200E0D84343000120184300E00020A6 -:1036D00000BD08B50123097949001943E4F7D6FD77 -:1036E00008BDF0B585B000AF7A6052003B6053185A -:1036F000061CB960FB605D1C042B09D86A46AB0050 -:103700000E33DB08DB00D31A9D4600256C4605E02E -:10371000A800FFF7AAFF041EF0D0051C201CB36808 -:10372000396808C0FB689A0007F066FDB968231C79 -:10373000013170687A68E4F721FC041C002D02D086 -:10374000281CFFF7ACFF201CBD4605B0F0BD38B506 -:103750008368041C5D1C85604068DEF711FCDEF7A1 -:1037600099FA854201DB0023A3600121A368606808 -:103770005B0019430422DEF719FC38BD0B6870B5F5 -:103780008668DC00B34209D2C26801331219156899 -:10379000002D01D0042D03D10834F3E7002200E00E -:1037A0000B60101C70BD011C08B50C318068FFF760 -:1037B000E5FF031E00D0186808BD1FB5011C041CDE -:1037C0000C318068FFF7DAFF031E11D02279012A3D -:1037D0000BD0022A0BD01A6802A902925B68022061 -:1037E00001930393E6F76EFA02E0186800E0586868 -:1037F00004B010BD0B6810B504334C6800220328D8 -:1038000000D18A68181C211C0123E0F727FB10BD9A -:103810000B6810B504334C680022032800D18A6875 -:10382000181C211C0223E0F719FB10BD0B6810B512 -:1038300004334C680022032800D18A68181C211C1C -:103840000023E0F70BFB10BD10B50C7A031C002021 -:10385000012C05D11F2B03D1181C4968E0F748FB48 -:1038600010BD38B5051C1020FFF7F2FE041C291C02 -:10387000E0F730FC201C38BD38B5051C8068FFF728 -:10388000F0FF2B68416803606B68041CDB08DA00FA -:1038900007230B401343436001232A791A40111C6C -:1038A00002799A430A4302218A4302712A79CA4063 -:1038B00013409A00037949188B4313430371AB6893 -:1038C000E968DA00C06807F097FC201C38BD406842 -:1038D000C008704738B5151C041C01220430E1F7FC -:1038E000DFF84560201C38BD10B5041C00220223FF -:1038F0000430E0F7B3FA201C10BD04307047802379 -:10390000F0B55B0587B01D69E0F756FC037805AF9D -:10391000FD2B0BD1E0F750FC03783B70E0F74CFC3B -:10392000041CE0F755FC019500901BE0E0F750FC0B -:1039300003783B70E0F74CFC041CE0F73DFC6B4265 -:10394000009001930EE03378002B05D0E801201899 -:10395000311C8022E1F712FD01358036039B9D4228 -:10396000F1D1029C009B9C4210D0019B201CE318CB -:10397000029300F021FA201C00F01EFA80235B0560 -:103980001B69029EDB0903930025E7E7201C00F07A -:1039900013FA201C391C0122E1F7F0FCE0F782FC4D -:1039A00007B0F0BD38B5051C07F048FD0022011C2A -:1039B000131C281CE0F782FD041E05D0281CFFF70D -:1039C00025F8211CE0F704FF38BDF0B5071C85B0D1 -:1039D0000E1C00680968F9F751FF3B68041C356844 -:1039E000181C211C0393F6F787FF291CF6F760FCCF -:1039F00000210290201CF6F7FBF9002805D00024D6 -:103A0000002D24DA8024240621E001236A460021C7 -:103A10001370201CF6F7F2F9431E9841009B4042B8 -:103A200003400021281C0093F6F7E8F9431E984153 -:103A30006B461B7883420AD0201C291CF6F7BCFA7F -:103A4000FE21041C89050298F6F756FF02900298A1 -:103A50000021F6F7CDF9002809D0291C0398F6F7C4 -:103A600027FC0025002816DA80252D0613E0029891 -:103A7000F9F7BAFB051C291C0298F6F73DFFFC215B -:103A80008905F6F7CFF9002805D0FE21281C890505 -:103A9000F6F792FA051C3D60346005B0F0BD08B53C -:103AA000FF23DB05C91803239943E0F72DFF08BD69 -:103AB00010B5041C4160002901D1816003E0C800F9 -:103AC000FFF7D8FDA060072322681340236001237D -:103AD000237010BD072310B5046841602340C9005E -:103AE00019430723016019430170826010BD0378F8 -:103AF00010B5041C9B0702D48068FFF7D0FD072394 -:103B0000216800220B40012123600B4349188B439D -:103B100062602370A26010BD002310B5041C016018 -:103B200043608800FFF7A6FDA06010BDF0B50368F4 -:103B300087B0041C0E1C0292002B04D1131CDB075F -:103B40005CD5E1F7E7F8311C0220E4F7ADF943104A -:103B5000181C21680593F6F705F800270D1C049141 -:103B6000AB000393039AA3689B181A680192002A7A -:103B700006D1029AD20741D5002F2FD11F1C2DE06C -:103B8000019A042A03D1002F1BD11F1C19E00198B0 -:103B9000311CDEF72DF8002813D0029B9B070ED5B1 -:103BA0006368681C013B63602168F5F7DBFFA6686A -:103BB00089008B59002B00D00423039AB35001983D -:103BC0001DE0681C2168F5F7CDFF049B0D1E9D428A -:103BD000C6D1029BDB0711D5002F05D06368301CCE -:103BE000013363603E600AE0201CE1F793F805981A -:103BF0002168F5F7B7FF0D1C0491B1E7002007B06D -:103C0000F0BD002370B501688B4216D086689D0018 -:103C100075192C680133002CF6D0042CF4D04268BE -:103C2000013A4260181CF5F79DFF89008B59002B63 -:103C300000D004232B60201C00E0002070BD10B5D4 -:103C4000041C8068FFF72BFD002323606360A360E2 -:103C500010BDF0B587B004920EAA12780F1C059221 -:103C60000FAA12781C1D0392039B061C0C99201CA2 -:103C70000D9AEAF7CBF83B68051E9D4203D9FFF782 -:103C8000E7FC30603D603568039B01950093201C84 -:103C9000059B0C990D9A02F01BFE049B1860281CD2 -:103CA00007B0F0BD08B5043002F0B5FD08BD012233 -:103CB000031C104004D058100AD4431E984109E058 -:103CC0009968002906D0187910404042104301E05D -:103CD000012040427047D3B50F1C061CE1F76CF879 -:103CE0000123041C0093321C3B1C043002F086F9B3 -:103CF000201CD6BD08B543001A1C424002D4012046 -:103D0000184302E0C117FFF7E6FF08BDD3B50F1C4B -:103D1000061CE1F751F80023041C0093321C3B1CE5 -:103D2000043002F06BF9201CD6BD08B5830F03D117 -:103D300040000133184302E00021FFF7E7FF08BD10 -:103D4000F0B585B0041C0F1C161C0393E1F734F882 -:103D5000039B051C00932168331C3A1C043002F0BD -:103D6000D9F9236818182060281C05B0F0BD08B5E3 -:103D7000C30701D5401002E0043002F037FD08BD52 -:103D800008B5C30703D54010F6F754FF02E004302E -:103D900002F07FFD08BD08B50220E7F717FA08BD5D -:103DA00038B5051C0C1CE7F729F9281C211CF5F770 -:103DB00013FAE7F713F938BD10B5041CE7F71EF93D -:103DC000201CF5F7E9F9E7F709F910BD80235B0539 -:103DD0001B69013B184043425841C0B2704710B5BF -:103DE00003787F22191C914312D0134040221342C2 -:103DF00002D093435208FAE7421C10783F21041C7A -:103E00008C43802C04D19B01014001320B43F4E729 -:103E1000181C10BD3F22013003789343802BF9D04A -:103E20007047002210B5814208D93F2401390B7830 -:103E3000A343803B5C1EA341D218F4E7101C10BDC5 -:103E4000021C4118002010B58A4208D23F24137882 -:103E50000132A343803B5C1EA341C018F4E710BDB0 -:103E600010B5041CE1F70EFF031C201C002B00D032 -:103E7000203010BD10B5041CE1F710FF031C201CFE -:103E8000002B00D0203810BD3038092802D920235B -:103E9000984307387047002210B543889A420CDADD -:103EA00003230021534344680132E1544468E41879 -:103EB00061704468E3189970EFE7E1F725FF10BDE2 -:103EC00070B5468804AC257801248E420AD90234A4 -:103ED0006143446864186270002442685354436824 -:103EE00059188D70201C70BD4368F7B5051C9800EB -:103EF000FFF7AEFB0026071C69688E4210D2B300A4 -:103F00000193EB18D868E4F781F9041E04D1381C3A -:103F1000FFF7C5FB201C08E0019B0136F850EBE7DA -:103F2000A86800223B1CE4F729F8FEBD1FB54868CD -:103F3000012201A9DEF76EF80020029B019A013BE5 -:103F4000D318934204D3197800020843013BF8E7E1 -:103F5000FFF7EBFE05B000BD002803DAFF23DB0509 -:103F6000C01801E0C00DC0059C23DB0583428041E1 -:103F700040427047102230B58DB00692063A00924A -:103F800000220B1C051C01920292039206A907AAAB -:103F900008AC05A80594E2F7CDF8011C281C02F036 -:103FA0003CFD0598A04201D0FFF779FB0DB030BD74 -:103FB00007B512216A46E4F75FF80098431E98415E -:103FC000C0B20EBD406870474160704773B5141CA5 -:103FD0006A46551D0B1C291C7F22013D22402A7078 -:103FE000E409F9D16E46491B9847731B04339C4280 -:103FF00006D080212A5D49420A4302550134F6E782 -:10400000327901AB5D1B425573BD4379012B09D059 -:104010008368C918C36881605A8C914200DD598455 -:104020000023837170474279036A032A02D8591822 -:10403000016203E0026BC9180162D018704710B525 -:104040000C1C0121FFF7EFFF047010BD10B5427981 -:10405000836A032A02D85B18836205E0426A046B14 -:104060009A18CB188362A01810BD10B50C1C012142 -:10407000FFF7ECFF047010BD38B5151C041C0121BE -:10408000FFF7C3FF2A1C201C1B21E2F7B1FB38BD40 -:1040900038B50D1C041C0121FFF7B7FF2A1C201C9A -:1040A0001C21E2F7A5FB38BD38B50D1C041C01210D -:1040B000FFF7ABFF2A1C201C1D21E2F799FB38BD3E -:1040C000012138B5151C041C4942FFF79EFF2A1C2C -:1040D000201C2321E2F78CFB38BD38B50D1C0121D3 -:1040E000041C4942FFF791FF2A1C201C2421E2F7FF -:1040F0007FFB38BD38B50D1C0121041C4942FFF778 -:1041000084FF2A1C201C2521E2F772FB38BD08B56C -:104110002821E2F76DFB08BD08B52921E2F768FB0D -:1041200008BD38B50D1C041C0021FFF76EFF2A1CCA -:10413000201C2A21E2F75CFB38BD38B50D1C041C9D -:104140000021FFF762FF2A1C201C2B21E2F750FB05 -:1041500038BD38B50121141C051CFFF756FF0F2C84 -:1041600006D8211C5039C9B2281CFFF77EFF04E095 -:10417000281C1A21221CE2F73BFB38BD012138B56F -:104180004942141C051CFFF740FF0F2C06D8211CC8 -:104190004039C9B2281CFFF768FF04E0281C22211F -:1041A000221CE2F725FB38BD38B5041C151CFFF7AF -:1041B0005CFF0322A36A201C03339343A362042100 -:1041C000FFF744FF056038BD38B543790D1C002466 -:1041D000032B06D9836A033CE41AC3699200D358BF -:1041E000E4180321FFF732FF4470240A057084703D -:1041F00038BDF8B5069C151C079AC91A1F1C630028 -:10420000061C2402C91A002A04D00239FFF7FDFE59 -:10421000013501E0FFF7F9FE3A1CE9B2301C2243F8 -:10422000E2F7E6FAF8BD08B53820FFF723FA08BD33 -:1042300010B5041C81618800FFF70AFAE06110BD27 -:1042400010B5041CC069FFF72AFA201CFFF727FAF3 -:1042500010BD8079431E9841C0B2704783685918D9 -:104260008160704738B5041C0D1C0021FFF7CDFE9E -:104270006379012B05D0032B03D8A26AE369AD0053 -:10428000EA5038BD38B50D1C0121041C4942FFF726 -:10429000BCFE2A1C201C6821E2F7AAFA38BD38B5FA -:1042A0000D1C041C0121FFF7B0FE2A1C201C6921F3 -:1042B000E2F79EFA38BD012110B5041C4942FFF710 -:1042C000A4FE201C6A21FFF7D0FE10BDF7B50D1C1F -:1042D0000121061CFFF799FE2B1C10333F2B06D83B -:1042E000291C8039C9B2301CFFF7BFFE33E014210E -:1042F000301CFFF7BAFE6B465C1D211C2A1C7F2771 -:10430000ED11013C3A406B1C2270012BF6D8231CA6 -:104310004020013504D1024208D1013C277005E05C -:10432000024203D00022013B013C1A706D46091B7A -:10433000301CFFF78BFE00232A1B0432934206D069 -:104340008026E15C76423143C1540133F6E72A7995 -:1043500001AB1C1B0255F7BD38B50D1C041C012117 -:10436000FFF753FE2A1C201C1621E2F741FA38BD44 -:1043700038B5041C0D1C0121FFF747FE201C172136 -:10438000FFF773FE0322A36A201C03339343A36247 -:104390000421FFF75BFE056038BD10B5041C012148 -:1043A000FFF733FE201C1821FFF75FFE10BD38B564 -:1043B0000D1C041C0021FFF728FE2A1C201C1E21B6 -:1043C000E2F716FA38BD38B50D1C041C0121FFF7C1 -:1043D0001CFE2A1C201C1F21E2F70AFA38BD10B56A -:1043E000041C0121FFF711FE201C2021FFF73DFED8 -:1043F00010BD012110B5041C4942FFF706FE201C28 -:104400002121FFF732FE10BD38B50D1C0221041C1E -:104410004942FFF7FAFD2A1C201C2621E2F7E8F9A1 -:1044200038BD032110B5041C4942FFF7EEFD201CE6 -:104430002721FFF71AFE10BD10B5041C0121FFF75C -:10444000E4FD201C3021FFF710FE10BD10B5041C48 -:104450000221FFF7DAFD201C3121FFF706FE10BD17 -:10446000012110B5041C4942FFF7CFFD201C322169 -:10447000FFF7FBFD10BD10B5041C0021FFF7C5FDC3 -:10448000201C3321FFF7F1FD10BD38B5041C0D1CB5 -:10449000FFF783FF201CFFF7EEFF291C201CFFF70E -:1044A000B3FF38BD10B5041C0021FFF7AEFD201C82 -:1044B0003421FFF7DAFD10BD10B5041CFFF76DFFC6 -:1044C000201CFFF7EFFF201CFFF7ABFF10BD38B536 -:1044D0000D1C041C0021FFF798FD2A1C201C35210F -:1044E000E2F794F938BD70B50E1C0121041C494255 -:1044F000151CFFF78AFD201C3621002E00D1372124 -:104500002A1CE2F783F970BD70B50E1C0121041C52 -:104510004942151CFFF779FD201C3821002E00D1DF -:1045200039212A1CE2F772F970BD38B50D1C041C44 -:104530000421FFF76AFD2A1C201C3D21FFF744FEE1 -:1045400038BD38B50D1C041C0021FFF75EFD2A1C88 -:10455000201C3F21FFF738FE38BD38B50D1C041C68 -:104560000021FFF752FD2A1C201C4021FFF72CFEE2 -:1045700038BD012110B5041C4942FFF746FD201C3F -:104580004121FFF772FD10BD10B5041C0021FFF79B -:104590003CFD201C4221FFF768FD10BD38B50D1C05 -:1045A000041C0121FFF731FD2A1C201C4321FFF7C9 -:1045B0000BFE38BD012108B54942FFF726FD08BDB5 -:1045C00010B5041C0021FFF720FD201C4421FFF73B -:1045D0004CFD10BD38B5041C0D1CFFF7F1FF201C6D -:1045E0000F21E2F73DFA291C201CFFF73BFE0421B6 -:1045F000201C4942FFF709FD201C3E21FFF735FD35 -:1046000038BD10B5041C0021FFF7FFFC201C45211C -:10461000FFF72BFD10BD38B50C1C0021051CFFF762 -:10462000F4FC211C3039281CC9B2FFF71EFD38BD2F -:1046300070B5051C0C1E222C05D00026232904D1A0 -:104640000136033C01E001261F240121281C4942B8 -:10465000FFF7DBFC211C2939C9B2281CFFF705FD37 -:10466000002E07D0281C0021FFF7CFFC281CD621E4 -:10467000FFF7FBFC70BD38B50C1C0121051C091BA4 -:10468000FFF7C3FC281C5021221CE2F7B1F838BD0B -:1046900038B50C1C0121051C091BFFF7B6FC281CB2 -:1046A0005121221CE2F7A4F838BD38B50D1C0121B8 -:1046B000041C4942FFF7A9FC2A1C201C5221E2F7E6 -:1046C00097F838BD38B50D1C041C0121FFF79DFC7F -:1046D0002A1C201C5321E2F78BF838BD022110B5AB -:1046E000041C4942FFF791FC201C5421FFF7BDFC3C -:1046F00010BD38B50D1C0221041C4942FFF785FC92 -:104700002A1C201C5521E2F773F838BD38B50C1C63 -:104710000121051C091BFFF778FC281C5621221CCF -:10472000E2F766F838BD38B50D1C0121041C49427A -:10473000FFF76BFC2A1C201C5721E2F759F838BD03 -:1047400038B50C1C0121051C091BFFF75EFC281C59 -:104750005821221CE2F74CF838BD38B5051C0C1C5A -:104760000139FFF752FC281C5921221CE2F740F8BE -:1047700038BD70B5151C061C0C1C8918FFF745FCCC -:104780002A02301C22435A21E2F732F870BD38B5B4 -:104790000D1C041C13430121002B04D1FFF735FC31 -:1047A000201C602104E04942FFF72FFC201C6121FE -:1047B0006A69FFF7F9FC38BD70B50E1C0499041C3A -:1047C0000B43D5B2002B06D10121891AFFF71DFC3E -:1047D000201C622104E0D143FFF717FC201C632159 -:1047E0007269FFF7E1FC291C201CFFF73EFC70BD3D -:1047F00013B50C1C0092019300216422231CFFF7C7 -:10480000F8FC13BD13B50C1C012100920193494221 -:104810006622231CFFF7EDFC13BD012110B54942B0 -:10482000041CFFF7F2FB0123201CA3715B21FFF79F -:104830001CFC10BD38B5051C0C1C4942FFF7E5FBFC -:10484000281C0221FFF702FC5C234470037038BD72 -:1048500010B5041C0021FFF7D8FB0421E268201CDE -:10486000137E0B4313765931FFF7FFFB10BD012177 -:1048700010B5041C4942FFF7C8FB0421E268201C64 -:10488000137E0B4313765A31FFF7EFFB10BD83689D -:104890000633836070478368053B8360704770B55B -:1048A00000221E2B02DD1A1C1E3A07E0E2258418A6 -:1048B000ED00641924787F2C0DD10132D2B2F5E7D6 -:1048C0000132D2B29A420ED0E2268518F600AD1916 -:1048D0002D78FF2DF4D0E22664188518F600E4B296 -:1048E000AD192C70ECE770BD08B50222E3F712FA9F -:1048F00008BD08B50122E3F70DFA08BD816808B5C7 -:10490000031C081E09D00139181C996001234900B5 -:10491000194340680422DDF749FB08BD7FB5061C3A -:104920000024081C111C01221D1C0094131CDBF721 -:104930005BFE2868292102AAE3F79EFB029BA342A3 -:1049400005D0201C211C02AA00F024F80DE00C2048 -:10495000FEF77EFE06602B68041C43602868DDF7C6 -:104960000FFBDDF797F9A060201C04B070BD08B5FF -:1049700000F005F908BD002108B50A1C0B1CE3F77F -:10498000FDFA08BD07B50022019101AB0121E3F753 -:10499000F5FA0EBD536810B50C1C591E8B41191841 -:1049A0009B00D31A08331068221CE3F7E7FA10BD06 -:1049B00007B56A46E3F790FB01990098002901D0FA -:1049C000DFF766F90EBDF8B500F0D7F8FEF795FFF2 -:1049D0000025071C7B689D4215D2BB68EE009C59E0 -:1049E000002C0ED0042C0CD0E408201CFEF747F855 -:1049F00003785F2B05D0BB68201C9E197168E3F714 -:104A000023FA0135E6E7F8BD10B50C1CF5F79AF965 -:104A1000002902DA002C04DC04E0002902D0002C7A -:104A200000DA0919081C10BD08B5002804DB0029AC -:104A300006DACB43C01803E0002901DB401A01303D -:104A4000F5F79AF808BDF0B50E1C171C041C017987 -:104A50008288C907C90F87B0C9B21D1C5208C38814 -:104A60000091301C391CDBF7BFFD2379DB070AD529 -:104A7000B200AA1803A8391CFFF72CF8A368301C51 -:104A8000291C03AA18E0A3885B08032B16DCE28824 -:104A9000934213D1012B06D0022B08D0002B09D151 -:104AA000A36898470EE0A368286898470AE0A368BF -:104AB00003CD06E0A36807CD984703E0301C291C0E -:104AC000A368984707B0F0BDF0B5061C1C1C002376 -:104AD0000125081C0F1C111C726885B00093131C63 -:104AE000DBF782FDB3681D43002F01D1A84736E0F4 -:104AF0002068012F03D1E4F797F9A8472FE0022F90 -:104B000009D1E4F791F9071C6068E4F78DF9011CFD -:104B1000381CA84723E0032F0ED1E4F785F9071CC2 -:104B20006068E4F781F90290A068E4F77DF90299E2 -:104B3000021C381CA84712E0E4F776F9071C6068ED -:104B4000E4F772F90290A068E4F76EF90390E06868 -:104B5000E4F76AF90299031C039A381CA847F16824 -:104B6000E1F792FD05B0F0BD07B5019001A800F096 -:104B700035FC01A800F032FC0EBD8068704770471C -:104B800008B5031C0A1C0B20191C0023DEF75AF978 -:104B9000E4F7F0FA08BD08B5011C0B20DFF718FE9A -:104BA000E4F7E8FA08BD10B5041C06F047FC011C48 -:104BB000201CDFF74FFCFF38431E9841400010BD1A -:104BC00070477FB56846E2F7FFF80123029840007E -:104BD000184307B000BD7FB56846E2F7F5F801233A -:104BE00001984000184307B000BD38B5051C081CEB -:104BF000E3F7BEFA041C201CE3F708FB011E04D0F7 -:104C0000281D0122FEF792FFF5E738BD10B5041C00 -:104C1000E4F750FC201CE4F7D7FB2368036010BDC9 -:104C200038B5041C0D1CE4F745FC201CFFF7EEFF13 -:104C3000041C291CFFF7D9FF201C38BD70B5051CCA -:104C40000E1CE4F737FC281CE4F7BEFB041C311CE7 -:104C5000E4F77EFC2B68201C236070BDF7B50D1CAB -:104C60000190002A04D00868E4F750FC2C6807E0A3 -:104C70000C68201CE4F71EFC201CE4F7A5FB041CB8 -:104C80000126019B9E4215D2B300E858844203D10D -:104C9000201CE4F791FC0BE0E3F76AFA071C381CD0 -:104CA000E3F7B4FA011E03D0201CE4F777FCF6E723 -:104CB0000136E6E72B68201C1B682360FEBD08B5A3 -:104CC0000022FFF7CBFF08BD30B58468C368656874 -:104CD0009900AB420AD2E26801335258002A03D04D -:104CE000042A01D0C36002E00431F2E70022101C64 -:104CF00030BD08B50122E4F7F7FC08BD08B5002275 -:104D0000E4F7F2FC08BD08B504300122FEF70EFFFF -:104D100008BDF7B500240F1C051C1E1C081C0094C0 -:104D2000111C0123221CDBF75FFCA74205D1381CB4 -:104D3000391CE4F7BBFC056013E0211C201CE4F7E0 -:104D4000B5FC041C3068E3F713FA061C301CE3F7CB -:104D50005DFA011E03D0201CFFF7D5FFF6E7201CEB -:104D60002560FEBD08B5031C0022081C191CE4F7D1 -:104D7000F9FC08BD08B50022E4F7F4FC08BDF7B55E -:104D80001C1C0125002A02D1431EE418023D00220A -:104D90000023002906D000230027E356DE0F00235E -:104DA0007242BB41002181420ED0160E00961E02B7 -:104DB0000196267817023E43321C009F019E64191B -:104DC0003E43331C0131EEE7101C191C03B0F0BD4B -:104DD00007B50193002906D1131C01A9021C181C58 -:104DE00006F00AFA06E0013804D301AB1B5C13702D -:104DF0000132F8E707BD38B50C1C51282AD00ED86F -:104E000048281FD004D800281AD0422818D037E0EC -:104E10004C2833D0502831D0492831D12EE0682891 -:104E200010D006D8642821D0662819D0622827D14E -:104E300006E06C2822D0712807D0692820D11DE017 -:104E4000A3541DE0520013531AE0D1006118D81783 -:104E50000B604860D200A2181360DB1753600FE0AC -:104E6000181C9500F5F7E6FE285109E0D200181C41 -:104E70008C18F7F71FFD2060616001E0920013516C -:104E800038BDF7B56B46DF1D3A1C051C0C1C00F045 -:104E900060F93B78061C002B12D0281C211C00F066 -:104EA00085F900280AD00378023B022B06D8042398 -:104EB000281C3370211C00F08BF901E000233370B3 -:104EC000F7BD37B56B46041CDD1D2A1C00F041F907 -:104ED0002A782378002A07D0002B01D0072B01D194 -:104EE000002308E0022306E0013B052B04D80378E9 -:104EF000002B01D10233037037BD70B5051C0E1CA9 -:104F0000101C191C1C1C00F014F90378002B01D193 -:104F1000B36802E0012B04D1F368281C211C9847D8 -:104F200008E04288022B01D1336800E07368281C36 -:104F3000211C984770BD10B58468C3686268011C65 -:104F40000020934205D29A1C920012590133101C82 -:104F5000CB6010BD08B50B1C0968021C081C496811 -:104F60000830E6F703FA08BD08B5031C0A1C083030 -:104F7000596800F0C1FA08BD436808300B60106042 -:104F8000704708B5FEF78BFB08BDC168031C0029FC -:104F900005DD42688068824209DB00200DE00020C8 -:104FA00081420AD05A6894469A68944505DD58684B -:104FB000420041180120596010437047426808B50B -:104FC0008368C1689B1A5B18581C002900DD581EB5 -:104FD000F4F7D2FDC343DB17184008BDF0B5002736 -:104FE00085B003901D1C081C03230E1C0097111C88 -:104FF0000122DBF7F9FA1020FEF72AFB039B041CC1 -:10500000036001234760C36028689E4203D1DCF738 -:1050100041FEA0600CE0DCF73DFE60606868DCF7F4 -:1050200039FEA060032E03D1A868DCF733FEE060F0 -:10503000201C05B0F0BD136810B5002B0ED1141C58 -:10504000EE2901D1406806E0C02901D1806802E064 -:10505000BF2903D1C068FEF74DFE206010BD38B5F2 -:105060000D1C041CDCF72CFD291C036A0422201CE7 -:10507000984738BD70B50E1C151C041CDCF720FDCC -:10508000311C036A2A1C201C984770BD38B50D1CC2 -:10509000041CDCF715FD291C036A0022201C98471C -:1050A00038BD38B50D1C041CDCF70AFD2A1C8369C9 -:1050B000211C1F20984738BDF7B5061C30200D1C59 -:1050C000171C0193FEF7D6FA041C06708560C760B2 -:1050D000072E1AD8301CF4F7A1FC04060C0E10128F -:1050E000150626230CE02B786A780A3B1B02134333 -:1050F0000AE0932307E0282302E0942303E02A2315 -:10510000FF3301E095235B0023616B461B79202070 -:1051100063760423E384FEF79BFAE062201CFEBD65 -:1051200010B5041CC06AFEF7BAFA201CFEF7B7FAE5 -:1051300010BD30B50022041C058DAA4207D2E06ADA -:10514000D300C01843688B4202D00132F5E700203B -:1051500030BD70B5061C0D1C141CFFF7EAFF0023C0 -:10516000002818D1F18C338D8B4208D30631C90049 -:10517000F06AFEF783FAF38CF0620633F384308D25 -:10518000F36A421CC0001818002332850370437074 -:10519000438045600133237070BD08B54368002B20 -:1051A00001D0181CFAE7FFF7C4FF08BD38B5436803 -:1051B0000C1C181E0BD05D68002D07D0181C211C7C -:1051C000FFF7B7FF2B1C0028F5D000E0281C38BDE6 -:1051D00073B50E1C44686368002B12D06B46DD1D4E -:1051E000201C311C2A1CFFF7B4FF2B78002B03D0A6 -:1051F000042303706468EEE70378022B01D10133C6 -:10520000037073BD08B5DCF7A9FDF5F7F3FCFEF7F5 -:1052100071FD08BD08B5DCF7A1FDF7F7E5FFF5F76F -:10522000E9FCFEF767FD08BD08B5DCF797FDF7F769 -:105230004BFFF5F7DFFCFEF75DFD08BD026910B519 -:10524000531C2ED00A2A04D1C3690133C361012340 -:1052500006E0036A092A02D10733DB08DB000133C9 -:10526000041C03624369036183694361A368406866 -:1052700098472369A0610D2B09D1033B2361636922 -:105280000A2B04D16061A36860689847A061A36994 -:10529000013306D163695A1C03D00A2B01D00A23BB -:1052A000A36110BD10B500280FD0C368041C002BEB -:1052B00001D040689847201C4430FDF75AFC606BD1 -:1052C000FEF7EDF9201CFEF7EAF910BDF7B5071C53 -:1052D00054200E1C01921D1CFEF7C7F9041E04D1B8 -:1052E000281E50D0301CA8474CE0019B0022836050 -:1052F000C56001230A25C36103620363076042623C -:1053000082624660C562271C1420FEF7AEF944375E -:1053100060632021381CFDF702FC636B002B04D175 -:10532000201CFFF7BFFF00202DE0381CFDF733FCE9 -:105330000028F5D1636B1880019B301C9847019BB6 -:105340002061301C9847019B6061301C984722699E -:10535000A061531C04D06369591C06D10D2A01D1E8 -:1053600025610BE00A2A04D108E0421C06D10D2B6E -:1053700001D1656102E00A2B00D0A561201C01214A -:10538000E5F714F8201CFEBD08B50021E5F70EF87E -:1053900008BD73B50C1C051C01CC161CE5F75EFBA3 -:1053A0000023691E0093221C331CE5F79BFB76BD8E -:1053B00013B50C1C411E0020131C0090221D2068F8 -:1053C000E5F790FB16BD13B50C1C411E0120131C04 -:1053D0000090221D2068E5F785FB16BD30B50268F8 -:1053E000051C00207F240132531E1978C3010C4094 -:1053F000201C49B218430029F4DB2A6030BD10B5E7 -:1054000044680C6081681160C2681A6010BD08B5FC -:105410004368984708BD0120404270474A43F8B5A9 -:10542000071C1E1C141C0025B54209D00698391C07 -:10543000221C05F0E1FE069B01351B190693F3E7DC -:10544000F8BDF7B5B0CA00200191011CFDF757FD6A -:10545000061C002F0ADA013DAC4211DC019AAB00B8 -:10546000301CD158DBF706FCED19F5E7AC4207DA42 -:10547000019AA300301CD158DBF7FCFBE419F5E7D7 -:10548000301CFEBD70B5049D041C161C1B2803D1E6 -:105490000022AE422ED110E0192808D01C280CD1D1 -:1054A0002E1C151C0A1C1D24191C131C05E02E1C87 -:1054B000151C0A1C1A24191C131C2A1EB24200D9DE -:1054C000321C081C191C05F088FE1B2C02D144421A -:1054D000604109E0002290420CDB0132002809D132 -:1054E000AE4203D0AE424041C2B203E01A3C601E5D -:1054F0008441E2B2101C70BDF7B50025071C0E1CDC -:105500002C1C0192B54209D0AB00F8580199DCF788 -:105510006FFB431E984101352418F3E70120640016 -:105520002043FEBD10B5021C2324002388B003A82D -:1055300001A94460C160133C116884600374019345 -:1055400002930392E5F74CFF019808B010BDF0B547 -:10555000141C1268051C8BB00E1CCB000430002AF2 -:1055600028D1062119430191DFF79AFA002801D0CA -:1055700043682FE005AB079018742968181C05953F -:1055800006960894E5F72CFF2768002F23D1212EDB -:1055900021D0281C212102AAE2F76EFD029B002BDC -:1055A00019D0019B0120391C02AA0493FFF7F2F9DC -:1055B000206010E0062165681943002D05D1022204 -:1055C000DFF76EFA002806D003E00122DFF768FA61 -:1055D0004560002323600BB0F0BD37B51D1C041CD3 -:1055E0000023081C111C01220093131CDAF7FCFF96 -:1055F0000820FEF72DF82B68436004603EBD30B5EF -:10560000141C126887B0031C002A0AD101A841604B -:105610008260191C01320193C4600274E5F7E0FE58 -:1056200019E0806B002816D006236568C900043095 -:105630001943002D06D10222DFF732FA00280AD0E2 -:10564000256008E00122DFF72BFA002803D0636809 -:1056500043600023236007B030BDF0B5051C0F1C6C -:105660002C210023012489B003A88160161C29681D -:1056700001AA0374019302934460C2600395E5F7A5 -:10568000AFFE019B201C042B07D12869DCF718FA18 -:10569000391CC36A321C2869984709B0F0BD70B53F -:1056A0001923051C002488B003A8436001AE0B3306 -:1056B00029688360C6600474019474600395E5F7FB -:1056C0008FFE0198A0420DD0042806D12869DCF78E -:1056D000F7F9436A2869984704E0201C211C321C12 -:1056E000FFF758F908B070BD08B5FFF71BFF431E60 -:1056F0009841C0B208BD13B5081C1C1C111C002326 -:1057000002220093131CDAF76FFF03CCE6F7E4F9EB -:1057100016BD10B50C1CDCF7D3F9211CE6F71CFAFA -:1057200010BD38B50D1C041CDCF7CAF9291CE6F7BE -:10573000E1F9031E00D02369181C38BDF0B5856857 -:105740008BB0161C029352004B19041C019398183D -:1057500053180F1C0393052814D8211CAD002A1CD4 -:105760000C3105A805F048FD05AB5819039B0299BB -:105770009A0005F041FD60680199321C05ABE2F723 -:10578000FDFB1DE08000FDF763FF211C051CA368E5 -:105790000C319A0005F030FDA36802999800039B34 -:1057A00028189A0005F028FDA3686068F918321CD3 -:1057B0002B1CE2F7E3FB041C281CFDF770FF201CE8 -:1057C0000BB0F0BD10B5884213D20378303B092BE3 -:1057D0000FD8002313600A23146863430478013050 -:1057E000303C1B191360884203D00378303B092BEF -:1057F000F1D910BDF7B50025994218D31E1CCC1A5B -:10580000089B019200900027AB4201DD271C2C1C55 -:10581000009B01991D19281C321C05F0DEFC002894 -:1058200005D0BC4202D0089BE418F1E70025281CF3 -:10583000FEBDF8B5061C1020151C0F1CFDF708FF57 -:10584000041C06608560002F0FD0291C381CDAF775 -:1058500037FD6060681CFDF7FBFE391CE0602A1C08 -:10586000061C05F0C9FC00237355201CF8BD13B5B8 -:10587000012A0AD10C1C01A9E6F714FB019B206048 -:10588000636062230020A36005E0002301200B6019 -:105890004B60013B8B6016BD08B501220023E6F783 -:1058A0005FFB08BD012208B552420023E6F758FB12 -:1058B00008BD012208B5131CE6F752FB08BD012202 -:1058C00008B552420123E6F74BFB08BD08B5031C9F -:1058D0000A1C0220191CE6F785FC08BD08B5031C4C -:1058E0000A1C0020191CE6F77DFC08BD08B5031C46 -:1058F0000A1C0120191CE6F775FC08BDF0B50C1C4C -:1059000095B0042803D001235B42069309E0C868E0 -:10591000DCF7C0F90690002800D189E0069B002B37 -:10592000F1DB2068DCF7CCF8061C6068DCF7C8F80F -:10593000051EB54201D0606806E0A068DCF7C0F83B -:105940000790A84202D0A068E6F7ACF90DA920683C -:10595000E6F7A8FA0EA908906068E6F7A3FA0FA97F -:105960000B90A068E6F79EFA0E9B0D9A0990002610 -:1059700093425DD80E9B0D9F002B0BD1002E04D0BF -:10598000301C09990F9A05F037FC0F9B03930123F4 -:10599000049302E0002304930393089D049B069A5A -:1059A000934236D0002F34D00E9B281C0A9301233B -:1059B000391C00930B9A0A9BFFF71CFF05900028E7 -:1059C00027D00A9B059A5F427B41D31805935F1B42 -:1059D000002E05D0039B291CF0183A1C05F00CFC86 -:1059E000039BFF18002E04D0F01909990F9A05F0B7 -:1059F00003FC0E9A0F9B9446FB180393059B0D9A8C -:105A000063441D1C089B9918049B4F1B013304938E -:105A1000C4E7002E05D0039B291CF0183A1C05F0A2 -:105A2000EBFB039BD919002E09D1049B002B01D15C -:105A3000206808E010A8FDF789F8129E9AE70798F9 -:105A400010A9E6F7BBF915B0F0BD08B50122E6F7DD -:105A5000ABFC08BD012208B55242E6F7A5FC08BD23 -:105A6000F0B589B0071C0D1C081C03A9E6F71AFA4B -:105A70000024061C039904A8FDF768F8069B01930F -:105A8000039B9C4205D2305DB847019B18550134F9 -:105A9000F6E7281CDCF714F804A9E6F78FF909B03B -:105AA000F0BD13B5041C01A98068E6F7FBF9E368B3 -:105AB0000199021C00208B4205D2D05C0133E360C7 -:105AC00001234000184316BD1FB5041C0122081C09 -:105AD00001A9DCF79FFA201C0199029AE7F7F0FE72 -:105AE00004B010BD38B5041C2420FDF7C3FD051C0F -:105AF0004461A000FDF7ACFDA861281C38BD10B5BD -:105B0000041C002902D0C068FDF7C9FDA069FDF79B -:105B1000C6FD201CFDF7C3FD10BD38B5041C0D1ECD -:105B2000012D07D10121436949429A00806905F09E -:105B300080FB07E0022905D14068FDF789FD636815 -:105B4000E060A36000232560636038BD7047806813 -:105B50007047C06870470368012B03D842688369A7 -:105B60008900CA50704742684B42013A51181940A7 -:105B70004160704770B505684468012D02D861180E -:105B800041600CE00E19C3684660022D07D11B1955 -:105B900059188B4203D01A70120A0133F9E770BD0D -:105BA000026810B54368012A03D8023343601030FD -:105BB00003E0C2689C1C4460D0180170090A41705F -:105BC00010BD016A10B5041C002904D0B0231B02CB -:105BD0001943FFF7E5FFBD21E36909021943201CC2 -:105BE000FFF7DEFF10BD30B504684368012C03D811 -:105BF00004334360103003E0C4681D1D4560E018A5 -:105C000001708270090A120A4170C27030BD08B575 -:105C10001143DB001943FFF7C3FF08BD08B5072A8E -:105C200001D8D20003E04023083AD2001A430729E2 -:105C300002D98023083919430A438C21C901114331 -:105C4000FFF7AEFF08BD38B583698900CC584368BB -:105C5000051CE41AE023043C21051B02490D1943ED -:105C6000FFF79EFF2B680120022B07D1E40AE40214 -:105C700004D080231B01E4186042604138BDF8B5B0 -:105C8000061C8069920014587268A41A043C6510BE -:105C9000002B15D1D023FF271B02090219433D40D9 -:105CA000301C2943FFF77CFF01233268181C022AAD -:105CB0001FD1BC431DD00134FF346042604118E065 -:105CC000F02389011B0219438023A212DB00134039 -:105CD0008022920119432303144080222D051202D1 -:105CE0009B0E22432D0D301C19432A43FFF77BFFE7 -:105CF0000120F8BD38B583698900CC584368051C7C -:105D0000E41AF023043C61021B02490D1943F823F5 -:105D100062101B0292B21A43FFF765FF2B68012045 -:105D2000022B07D1A40DA40504D08023DB03E418C3 -:105D30006042604138BDF0B51D09002495421BD278 -:105D4000521B6C00061C151C0919002D0DD00C8867 -:105D5000012D02D94F883F043C430F271F40FC40D0 -:105D6000013D348002310236EFE75300C01802389B -:105D7000048860424441141B201CF0BDF0B5059C12 -:105D8000121B94460022271C161C002F08D08C5A88 -:105D90009D5A013F6519AE198652360C0232F4E75E -:105DA000059B62465C00031909191C1C002A07D0D8 -:105DB0000D88013AAE1926800231360C0234F5E71F -:105DC000624652009A18002E02D00123138002323C -:105DD000101A4010F0BDF7B50025089C2E1C271C9A -:105DE0000193121B002F0AD04B5B013F9C46019B85 -:105DF00066445B5BF61A465336140235F2E76400DC -:105E00000319151C1F1C0919002D07D00C88013D12 -:105E100036193E80023136140237F5E75200023A55 -:105E20009A18824204D31388002B01D1023AF8E772 -:105E30000232101A4010FEBD0239814202D30B8893 -:105E4000002BF9D00231081A4010704710B5002815 -:105E500006D0041C8068FDF722FC201CFDF71FFC07 -:105E600010BD38B5051C0C1E012C00D80224A868F2 -:105E7000002803D02B689B08A3420CD22B789B07E9 -:105E800009D46100FDF7FAFB03232A68A40013403C -:105E90001C43A8602C6038BD38B5051C0C20FDF7EC -:105EA000D7FB01212B78041C0B401A1C03788B4371 -:105EB00013430222934303702B682168980803233D -:105EC00082000B40134323606B686360AB68002B58 -:105ED00001D1A36009E04000FDF7BAFBA0602B6888 -:105EE000A9689A08520005F087F9201C38BD10B542 -:105EF0004B00C018D218002908D00238023A038893 -:105F000014881B1B04D406D10139F4E7081C03E0F4 -:105F10000120404200E0012010BD38B5051C0C1CDA -:105F20000221FFF79EFF2B780122002C03DA134396 -:105F30002B70614202E0211C93432B7000236B60A5 -:105F4000002907D06B685A1C6A60AA685B009952E6 -:105F5000090CF5E738BDFC230278134003700323D6 -:105F6000026813400360002343608360704708B5F4 -:105F7000002805D003789B0702D48068FDF78FFBCB -:105F800008BD38B50C1C4968051CFFF76AFF0121E4 -:105F90002378A8680B401A1C2B788B4313432B7073 -:105FA0006368A1686B6063685A0005F025F938BD25 -:105FB00008B5002901D1416001E0FFF7AEFF08BD3F -:105FC00038B50D1C041CFFF7C6FF291C201CFFF769 -:105FD000EFFF38BD38B5012504788160AC436D19F9 -:105FE0002C4304700324AA400568191C2C4022434A -:105FF000026000224260FFF7DBFF38BDF8B5041CE9 -:106000001F1C06AB1D780421161CFFF72AFF2378FE -:106010000122002D07D0002F05DA1343237000233F -:106020007242BB4103E093432370321C3B1C0021AE -:106030006160111C19430CD061681D04481C60602C -:10604000A06849000A52100C190C05432A1C0B1CAD -:10605000EFE7F8BDF7B50D1C01210378EA0F8B437C -:106060001343FF220370D2012B0C061C134002D1F4 -:10607000002373604DE09342FAD07F236C00240E1E -:106080005B42E318F4D4002B02D1FFF746FF40E057 -:10609000221C6F3AD117090F8A1880216D02121144 -:1060A0006D0A090400920D43162B05DC9623002788 -:1060B0001C1BE5403C1C08E00F273B40173B963C6F -:1060C0001F40E3171B0F1C192411301C0099FFF708 -:1060D000C8FE009B736063000193002C04D0B0687D -:1060E00000211A1C05F0A5F8002F08D02B1CBB407E -:1060F000B2680199013453521023DF1BFD40009B0D -:1061000064005B009C4204D0B26815532D0C02342D -:10611000F8E7F7BDF7B5041C0D1C1E1C8B18D10049 -:10612000090901310193FFF79CFE23780122002E1B -:1061300001D0134300E0934323700023281C6360C5 -:10614000019B984231D20278131C303B092B07D9AE -:10615000113B192B03D9131C613B192B25D80A338A -:10616000089A934221D26268A6689446311C9BB279 -:106170000092009A002A0CD00A88171C089A92B242 -:106180007A43D318009A0B80013A1B0C009202311B -:10619000EFE762465200B218002B01D013800232A2 -:1061A000961B761066600130CAE7401BFEBD406852 -:1061B00043425841C0B2704770B50D1C4168021C83 -:1061C000002903D16B68081C002B1AD02B78147897 -:1061D000DB07E007DB0FC00FDBB2C0B2181A10D12B -:1061E0006B689668AA68994206D30130994205D82F -:1061F000301CFFF77CFE01E001204042E30700D5A0 -:10620000404270BD10B5041E8C4201D0FFF7B9FEAC -:10621000012223789343237010BD10B5041E8C42D5 -:1062200001D0FFF7AEFE01212378DA07D20F8A1AD8 -:106230000A408B431343237010BD7FB5041E8C426C -:1062400001D0FFF79EFE6268002A0BD1201C0121BD -:10625000FFF707FE0122A3681A80237862601343C8 -:10626000237020E00E26012523786E442B420AD0AD -:10627000A068AB4323703580011C0095331CFFF7E9 -:10628000AAFD60600FE0511C201CFFF7EAFDA0682A -:106290003580331C0095011C6268FFF76FFD237881 -:1062A00060601D4325707FBDF0B50D1C496887B047 -:1062B000041C161C002901D0002A03D1291CFFF759 -:1062C00060FE4FE0FFF7CDFDA968331CA0686A6847 -:1062D000FFF731FD6060029001202B780340191C0C -:1062E000237883430B43237003423BD00E230021CA -:1062F00002AA9B186A68300919800392039A914296 -:1063000010D081420ED04A0094466746AA68BA5A15 -:10631000002A05D00121039A1980904205D314E088 -:106320000131EBE7039A90421CD2A9684000405A21 -:106330000F210E400E390D1CB5402E1C013E0642A9 -:1063400000D01980198800290CD0029A0120A16878 -:10635000002A01D1088004E00090029A081CFFF78F -:106360000DFD606007B0F0BD73B5151C061C0C1C5C -:1063700088686B6849689268994204D306D8FFF729 -:10638000B6FD002802DA231C2C1C1D1C2A78237859 -:106390005340DB070DD46368301C591CFFF761FDC7 -:1063A0006B68B0680093A1686268AB68FFF7E6FCB1 -:1063B0000BE0301C6168FFF754FD6B68B068009318 -:1063C000A1686268AB68FFF706FD01217060237861 -:1063D0000B401A1C33788B431343337073BDF7B5EE -:1063E000171C041C0D1C88687B68496892689942D8 -:1063F00006D30026994207D8FFF779FDB04203DAA9 -:106400002B1C01263D1C1F1C3A782B785340DB07C0 -:106410000DD56B68201C591CFFF723FD7B68A06815 -:106420000093A9686A68BB68FFF7A8FC0BE0201C12 -:106430006968FFF716FD7B68A0680093A9686A6821 -:10644000BB68FFF7C8FC60602B782178002E08D06D -:10645000DA070123D20F9A1A99431A400B1C1343EF -:1064600003E00122134091430B432370F7BDF0B5C5 -:106470004B68141C52688BB0051C0E1C934201D251 -:10648000261C0C1C0123327871681A4201D1227833 -:1064900013405918281CFFF7E4FC2278B368111C3C -:1064A00003937368A8680193A368049363683478BE -:1064B000079361400023C90702D4E307DB0FDBB277 -:1064C000E407E40FE1B20F1C8446D207D20FD4B226 -:1064D0005A4292B208924A4292B20992624292B2EF -:1064E0000692019A02910594561E721C2AD0039AB4 -:1064F000099912884A40BF180199079A521A9219AD -:106500000699B24206D8049A1188069A5140049A14 -:1065100002320492059A013E521805923A1C0599DE -:106520003F0C0A4008994A4092B2D3186246138041 -:10653000059A1B0C120C059202229444039A023213 -:106540000392D2E7019A51004118002B02D0012397 -:106550000B800231FFF770FC029B012223401C1CC0 -:106560002B78686093431C432C700BB0F0BDF0B5E2 -:106570004B68161C52688BB0051C0C1C934201D250 -:10658000341C0E1C0123227861681A4201D1327832 -:1065900013405918281CFFF764FCA368A8680393EC -:1065A000636824780193B36832780493736807931F -:1065B00001231C4200D11340E407E40FE1B20F1C99 -:1065C0008446D207D20FD4B25A4292B208924A42BB -:1065D00092B20992624292B20692019A0291059495 -:1065E000561E721C28D0039A099912884A40BF1877 -:1065F0000199079A521A92190699B24206D8049A3A -:106600001188069A5140049A02320492059A013E7A -:106610005218089905923A434A4092B2D3186246FA -:106620001380059A3F0C120C059202229444039A9F -:106630001B0C02320392D4E7019A51004118002B3F -:1066400002D001230B800231FFF7F6FB0122029BEF -:1066500068601C432B7893431C432C700BB0F0BD37 -:10666000F0B54B6889B0041C0E1C151C002B02D021 -:106670005368002B02D10023636072E0814207D18E -:10668000081CFFF709FC071CB5420AD1051C08E0ED -:106690000027824206D1101CFFF7FEFB051C071CD9 -:1066A00000E03E1C6B687268201C9918FFF7D9FB4C -:1066B000236800219A085200A06804F0BAFDA3687C -:1066C0000393B368039A059373680493AB680193CB -:1066D0006B680293049B5B00D1185B420693002316 -:1066E000069A02988A1800282CD0059B0020009357 -:1066F000049B9C466346002B14D013881B180793F9 -:10670000009B1B88181C019B1B8843430798C018DB -:1067100001235B429C44009B10800233000C0093D9 -:106720000232E7E70B1C002801D008808B1C039A7B -:1067300002319B1A029A5B10013A0292019A0232CC -:106740000192CDE70122636033782978594023789C -:10675000114201D1934300E013432370381CFFF72B -:1067600075FB09B0F0BDF8B54B68002B03D00127CD -:1067700013783B4202D00023436036E05368151C77 -:10678000041C002B03D1391CFFF7C7FB2DE0081CAC -:10679000FFF782FB061C281CFFF77EFB391C051C3B -:1067A000201CFFF7BAFB6B68002B11D0AB681B886D -:1067B000DB0704D5201C211C321CFFF751FFA86801 -:1067C0006A68011C0123FFF7B6FA6860002806D149 -:1067D000301CFFF73BFB281CFFF738FB05E0301CA3 -:1067E000311C321CFFF73CFFDDE7F8BD4368011C9C -:1067F0005A00002310B58468A218023A901C844203 -:1068000003D210881B040343F7E7181C0B78DB073F -:1068100000D5404210BDF0B59C4685B01D1C002936 -:1068200000D09D1800248368261C019343680293BE -:1068300001230393029B002B29D0019B24041B8876 -:1068400010361C43072E1BDD0778A3B2FF0706D5C1 -:10685000FF279F43039BFB189BB21F0A0397002946 -:1068600004D06F1E3B70674506D110E02B70634665 -:106870006F1C9B189F420AD0083E240A3D1CE1E78A -:10688000019B02330193029B013B0293D2E705B0C7 -:10689000F0BDF8B586684368051C00205C0034191B -:1068A000023CA31C9E420CD28F21C905F3F7F2FED5 -:1068B000071C2088F4F7BEF9011C381CF3F77CFB99 -:1068C000EEE72B78DB0702D580231B06C018F8BD46 -:1068D000F0B58BB0099310AB1B78119E071C049187 -:1068E000141C0593002E03D00B1C023B1E2B02D957 -:1068F0000020307089E04368002B12D1301C331C1B -:10690000002A07D02278181C002A03D01A700134FC -:106910000133F7E730230370002301300370801B3D -:1069200073E05B00181C0393FCF792FEB968039AAE -:10693000029004F061FC06960196039A029B94462D -:1069400063441D1C00210793029B023D9D420DD311 -:106950002B88090419430891081C0499F3F77CF863 -:10696000049928800898F3F7FDF8EDE730313929CC -:1069700002D9099B3A3BC918019B5D1C1970029B07 -:10698000079A934204D21A88002A06D10233F7E705 -:10699000059B002B13D0012303E0059B002B0CD09B -:1069A0000023069AAA1A032A05D16946019A097D8D -:1069B000951C51700695002B01D10195BDE70298F9 -:1069C000FCF76DFE002C0CD0201C04F037FD2B1CB6 -:1069D00020181D1CA04204D9013802781A70013316 -:1069E000F7E73B78DB0702D52D232B700135321CEE -:1069F0006B1E9A4206D211781878013B10705970BC -:106A00000132F6E70023A81B2B700BB0F0BD08B5D0 -:106A1000081C111CEDF766FA08BD70B5061C081CB1 -:106A20000D1C04F00BFD041E03D009CE291C221CF2 -:106A30009847201C70BDF0B58BB0029312AB1B7849 -:106A40000D1C03930F2302A9071C5B18002A01D118 -:106A500000220EE0002D03DA2D226D421A7012E0A2 -:106A6000119A920701D52B2203E0119A5207EFD514 -:106A700020221A70002D06D130221F2406ABDA73B3 -:106A800002ABE41818E00AAC281C0299F3F76AF884 -:106A90000E1C281C0299F2F7DFFF331C051C303353 -:106AA000092E02DD109B0A3BF318013C237006AB54 -:106AB0009C4201D9002DE7D140250F21119B1D409B -:106AC00002ABC9180B78002D0FD00025AB4213D0B4 -:106AD0000122039B01920093381C119BE7F7AAFC4B -:106AE000139B051C013B139306E0002B04D006AA60 -:106AF000944201D9013C23700AAB1A1B039B381C3A -:106B00000093139B211C0193119BE7F793FC28181A -:106B10000BB0F0BDF0B51E1C8DB012AB1B78071C7E -:106B20000393151C2B23B20702D47307DB0F5B0101 -:106B3000149A04AC00920193081C2B1C211C2022E7 -:106B4000DEF746FCC343051CDB171D40F30507D5E4 -:106B50006B1C1F2B04DC2522625500221D1CE254F5 -:106B6000402000233040984212D022782F2A12D899 -:106B70000122211C00930192381CE7F75BFC0921DC -:106B8000139B041C013B139302AB013DC91804E0A5 -:106B9000211C041C01E0211C1C1C039B381C0093BD -:106BA000139B2A1C0193331CE7F744FC20180DB0FB -:106BB000F0BD0EB403B503AA02CA0192E7F7AEFD19 -:106BC00002B008BC03B018470123884202D0037802 -:106BD00058424341181C7047037842780A3B1B0215 -:106BE000134302300B607047838BC26A01339BB240 -:106BF0008383918C994200D29384704738B5051CE9 -:106C00000C1C101C191C2A68049BFEF755FAEB6A31 -:106C1000A4004360AB6AE05038BD13B5041C081CE7 -:106C200001A9FFF7D9FF206B0199FDF7C0FB13BD48 -:106C3000F0B587B0051C0C1C04920593002B03DDF6 -:106C400008220B7E13430B766B461B8AE383EB6AA9 -:106C50001B78002B06D1286B211C049A059BFDF79D -:106C600096FD33E00026371CEA6A138D9E4223DA34 -:106C7000D26AF300D31803931B78033B012B19D876 -:106C800000230293029A238D9A4213DA029BE26A4E -:106C9000DB00D3181A78042A09D1039A5B6851687B -:106CA000994204D15288286BFDF753FA0137029BB1 -:106CB0000133E6E70136D7E7002FCCD0059B286BE0 -:106CC0000093211C3A1C049BFDF776FD07B0F0BD34 -:106CD00073B51D1C0B781A32061C93420ED1081C8A -:106CE00001A9FCF7F6FA019B041E9C4209D0301C56 -:106CF000211CA847201CFCF7E2FAF4E7002B00D087 -:106D0000A84773BD30B5041C85B0081C03A9FCF767 -:106D1000A7FA6379051C012B08D1E36A201C5B7E6E -:106D20000399009302222B1CFFF768FF039BA26AC2 -:106D30009B009958201C2A1C1423E7F795FE05B0E8 -:106D400030BD7FB5041C081C03A9161CFCF788FA8B -:106D50006279051C012A05D10096201C03992B1C81 -:106D6000FFF74CFF281CFCF7AAFA039BA16A9B00C3 -:106D70005D58021C291C201C0C23E7F775FE2869AE -:106D800004B070BD10B5C36A041C5A7EFFF7D9FF6A -:106D9000011C201CE7F730FE10BD1FB50368002B57 -:106DA0000DD100290BD00B78192B08D9041C03AB8B -:106DB000081C02AA01A9FCF7B3FA029B23601FBDBD -:106DC00038B5051C081C0C1CFCF779FA011C281CA2 -:106DD000E7F7EEFF281C211CE7F7EAFF38BD10B5E6 -:106DE000041CE7F7E5FF206BFDF703FB10BD10B5B2 -:106DF000041CE7F7DDFF206BFDF732FB10BD38B553 -:106E0000051C141CA14204D0281CE7F7D1FF011C6B -:106E1000F8E738BDF0B5041C85B0081C0D1C171C24 -:106E2000FCF74DFAFCF750FA03A9FCF719FA63795D -:106E3000061C012B08D1E36A201C5B7E039900939A -:106E40003A1C2B1CFFF7DAFE039BA26A9B009958A1 -:106E50000022201C131CFFF7EBFE301CFCF72FFA5E -:106E6000011C201CE7F7A4FF206BFDF78DFB00221F -:106E7000206B0121131CFDF7BBFC05B0F0BD38B53C -:106E8000041C0D1E954204D1006B0F21DFF7E8FDB5 -:106E900025E00B78A82B0DD1006B0F21DFF7E0FD6B -:106EA000281CFCF751FA002819D1281CFCF70CFA11 -:106EB000011C0CE0A92B10D1081CFCF705FA011CE1 -:106EC000201CE7F775FF0378011CAA2B07D0201CB4 -:106ED000E7F76EFF206B032103E0E7F769FF02216C -:106EE000206BFDF72DFC38BD70B50E1C151C041C65 -:106EF0000F21006BDFF7B4FD311C2A1C201CFFF7AB -:106F0000BEFF70BD38B5151C041CE7F751FFFCF738 -:106F1000DBF92A1C011C201CFFF7B1FF38BDF8B5B6 -:106F2000051C161C1F1C0C1E02D0E7F741FF012494 -:106F3000BE4206D0311C281CE7F73AFF0134061C7C -:106F4000F6E7286B211CFDF796FBF8BD10B50C1C6D -:106F5000131C0021221CFFF7E2FF10BDF8B5041C32 -:106F6000171CE7F725FF051CBD4213D0A91C201CE8 -:106F70006E78E7F71DFF0721051C206B312E06D028 -:106F80000821342E03D00921332E00D00A21FDF729 -:106F90004FFBE9E7F8BDF8B5051C161CE7F708FF3D -:106FA000041CB4420DD0A11C281C6778E7F700FF31 -:106FB0000521041C286B2F2F00D00621FDF738FB7C -:106FC000EFE7F8BDF8B5051C161CE7F7F1FE041C49 -:106FD000B4420DD0A11C281C6778E7F7E9FE032115 -:106FE000041C286B372F00D00421FDF721FBEFE7AD -:106FF000F8BDF8B5051C161C1F1CE7F7D9FE041CCC -:10700000B44209D0211C281CE7F7D2FE391C041C0D -:10701000286BFDF70DFBF3E7F8BD08B50223FFF77A -:10702000E8FF08BD08B50123FFF7E3FF08BD08B579 -:107030000023FFF7DEFF08BD10B5041CE7F7B8FE1C -:10704000206B0621FDF7E7FA10BDF7B5041C0D1CF7 -:10705000171C06690193731C0361BD420CD0291CE7 -:10706000201CE7F7A5FE051EBD42F6D0206B019956 -:10707000321CFDF749FAF0E7311C206BFDF7F2F8FE -:10708000F7BD08B50023FFF7E0FF08BD08B50123F1 -:10709000FFF7DBFF08BDF0B5041C85B00D1C081C14 -:1070A000111CFCF700F9291C0290201CE7F780FE58 -:1070B000029B061C032B06DD012303932369019326 -:1070C0000133236102E00023039301930127029A15 -:1070D0007B1C934246DA3378012B18D17078B11CAF -:1070E00036380B2811D8F2F799FC21100610101031 -:1070F00010100A0C080E1A2519E01B2517E01C2594 -:1071000015E01D2513E01E2511E01F250FE02225A7 -:10711000812B06D0301CFCF717F9023D002800D166 -:107120000335301CFCF7CBF8011C00E01925201CAE -:10713000E7F73EFE029B0237061C9F4205DA206BF2 -:10714000FDF77AF9206BFDF7ADF9206B291CFDF7EF -:107150006FFA029B9F42BADA206B0021019AFDF779 -:10716000D3F9B4E7039B002B18D02569206B6B1C67 -:107170002361291CFDF7ABF9206B0199FDF772F82B -:107180000121206BFDF76AF8206BFDF774F9206B85 -:10719000FDF766F9206B291CFDF764F805B0F0BD1A -:1071A000F7B5041C0D1C171C914203D3111CE7F703 -:1071B000FFFD37E00669731C03610B78702B15D156 -:1071C000081CFCF781F8011C201CE7F7F1FD311CBD -:1071D0000190206BFDF7A9F9201C01990022E7F727 -:1071E000EBFE281CFCF76BF8051C09E0E7F7E0FD57 -:1071F000311C051C206BFDF798F9206BFDF730F969 -:10720000201CFFF7F1FC201C291C3A1CFFF7C8FFCB -:10721000206B311CFDF7DEF9A38B206B013BA383B0 -:10722000FDF7A7F9F7BD13B5041C019101A855217D -:10723000FCF75EF80199021C201CFFF7B1FF13BD9B -:107240007FB5041C081C03A9151CFCF709F8637919 -:10725000061C012B06D10095201C03990722331C24 -:10726000FFF7CCFC206BFDF7BAF8039BA26A9B00EA -:107270009D580022201C131C291CFFF7D9FC2969EA -:10728000206BFDF769F8301CFCF719F80378011C36 -:10729000B53B581E834100225B421940201CA2715D -:1072A0000223E8F765F9286904B070BD10B5C36A18 -:1072B000041C5A7EFFF7C4FF011C201CE7F79CFB4F -:1072C00010BD914292411140002208B5131CE8F70D -:1072D0004FF908BDF0B5051C0E1C171C85B0BE4249 -:1072E00033D0301CFBF7EBFF041EBC4225D03378B3 -:1072F000A22B22D10378A02B1FD1301CFBF7E4FF77 -:107300000190201CFCF720F80026B04203D1201C7D -:10731000FBF7DAFF061C03A90198FFF75DFC286B59 -:107320000399FDF750F8281C311C01220023E8F7CF -:107330001FF9201CFBF7C3FF03E0281C311CE7F7F3 -:1073400037FD0023061CAB71C9E705B0F0BDF0B5F1 -:10735000041C056985B003936B1C03610F1C006B53 -:10736000291C161CFDF7F9F8201CFFF73DFC002E28 -:107370000DD1206B0321FCF771FF391C201CE7F7AE -:1073800017FD0321206B4942FCF768FF07E00A9BC9 -:10739000201C0093391C321C039BE8F7ADFA206BCC -:1073A000FDF70EF9206B0F21DFF75AFB206B291C2C -:1073B000FCF758FF0B99201CE7F7FAFCA38B206B16 -:1073C000013BA383FDF7D5F805B0F0BDF0B5061C71 -:1073D00087B0081C0D1CFBF772FF03900378022294 -:1073E000191C914369290AD1512103A8FBF780FF99 -:1073F0000022031C0092301C291C039A14E0682B05 -:1074000020D104A9FBF765FF5121059005A8FBF7E2 -:107410006FFF041CFBF753FF049B984207D1301CFD -:10742000291C231C059A0094E8F766FA12E0201C38 -:10743000059FFBF744FF00940190291C301C3A1C67 -:10744000231C05E000230190291C301C1A1C00930A -:10745000FFF77DFF07B0F0BD08B516221723E8F748 -:107460005DFC08BD08B50E220F23E8F757FC08BDE8 -:10747000F8B5041C0D1C081C111C161CFFF7A4FBFE -:10748000002802D0206B002139E02B789A2B30D1D4 -:10749000281CFBF719FF051CFBF711FF0278131CD2 -:1074A0006333DBB2012B13D8FBF70EFF071C291C3B -:1074B000201CE7F77DFC201C391C321CFFF79FFCC9 -:1074C000311C381C246BFBF7EEFE411C201C16E01F -:1074D000201C291CBE2A03D1BB3AFFF79BFC10E0FD -:1074E000E7F766FC011C201CE7F762FC206B022119 -:1074F00005E0291C201CE7F75BFC0121206BFDF750 -:10750000C7F8F8BDF8B5051C0C1C081C111C161C8E -:10751000FFF75AFB071E04D00021281C0A1C0B1C75 -:107520001CE0201CFBF7D0FE041CFBF7C8FE027811 -:10753000131C6333DBB2012B05D8FBF7C5FE211CFE -:10754000021C281C09E0281CBE2A04D1211CB83AC0 -:10755000FFF760FC04E0391C221C331CFFF7DFFC42 -:10756000F8BD38B5041C4D780231E7F721FC206BDB -:1075700003212F2D03D00421302D00D00521FDF74C -:107580004AF838BD38B5041C0D1C081C111CFFF747 -:107590001BFB002802D0206B002116E02B784A2B21 -:1075A0000DD1281CFBF790FE011C201CE7F700FC06 -:1075B000011C201CE7F7FCFB206B022105E0291CC5 -:1075C000201CE7F7F5FB0121206BFDF733F938BDEF -:1075D000F0B5061C87B00D1C141C002903D1012135 -:1075E0003068216022E000220B780192562B0CD1EA -:1075F000081CFBF769FE051CFBF761FE211CFFF769 -:10760000EBFA002DEBD0012301932B78002BE6D071 -:107610000A3B281C0F2B0CD805A9FFF7DDFA019BAC -:10762000002B01D1059B236030680599FCF72AFEE9 -:1076300054E002A9FBF74DFE019B051C002B02D173 -:10764000211CFFF7C9FA01242F1C6442029B9F42B0 -:107650000AD0381C05A9FFF7BFFA071C0598FBF7ED -:1076600009FA01342418F1E7201C03A9FBF7D7F924 -:107670002F1C041C029B9F4215D0AF4202D92E231F -:1076800023700134381C04A9FFF7A6FA05A9071CCA -:107690000498FBF7F9F9059A011C201C03F0ACFDD6 -:1076A000059BE418E6E70398FBF7C4F9011C306872 -:1076B000FCF7E8FD019B002B10D0281CFBF7FFFD19 -:1076C000041C029B9C4209D005A9201CFFF784FAE8 -:1076D0000599041C3068FCF76AFEF2E707B0F0BDBC -:1076E00037B5041C0D1C006B0021FCF7EFFD206B6F -:1076F0000F21DFF7B5F9201C291C01AA3030FFF754 -:1077000067FF201C0199E7F777F937BD08B50378C3 -:10771000012B04D1407810384342584107E0032B35 -:1077200004D1FBF7ACFD431E984100E0002008BDEA -:1077300008B50378012B02D140780E3803E0032B03 -:1077400004D1FBF79CFD4342584100E0002008BDF6 -:10775000F0B5041C85B0081C0E1C151C0193FFF726 -:10776000E7FF002850D1301CFFF7D0FF002852D18E -:107770003378192B55D9301C03A9FBF7AAFD3378B0 -:10778000071C7B2B20D1002D22D12669731C23617D -:10779000381CFBF794FD039B984208D00122391C4A -:1077A0006A40201C331CFFF7D3FF071CF0E72A1C9C -:1077B000391C019B201CFFF7CBFF051C311C206BE3 -:1077C000FCF750FD281C37E07C2B0CD1002DDCD1C0 -:1077D0000398874230D0391C201C2A1C019BFFF7DC -:1077E000B7FF071CF4E77E2B07D10122201C6A405B -:1077F000391C019BFFF7ACFF1EE0962B11D1301C0A -:10780000FBF7A2FD002806D0002D06D1206B0199C0 -:10781000FCF75DFE01E0002DF8D1301CFBF74FFDB9 -:107820000AE0311C201CE7F7C3FA061C291C206B58 -:10783000019AFCF758FE301C05B0F0BDF0B5041CF1 -:107840000D1C066989B01F1C731C0493B31C0361D3 -:10785000311C006B0592FCF705FD206B0499FCF7C9 -:107860009DFE201C291C0022E7F7A6FB281CFBF725 -:1078700026FDFBF724FD059B984224D1201C391CD2 -:10788000E7F796FAE36A1B78032B05D10E9B206B72 -:10789000991CFCF70AFF3BE0042B05D10E9B206BE3 -:1078A000991CFCF726FF33E0052B05D10E9B206BBE -:1078B000991CFCF738FF2BE0206BFCF7C9FF206B0D -:1078C000FCF7CEFD24E00378BF2B09D105A9FBF717 -:1078D00000FD0022011C331C201CFFF739FFCAE702 -:1078E00007A9FBF7F6FCFBF7EAFC0390FBF7E7FCC4 -:1078F000011C201CE7F75CFA206BFCF745FE0E9B91 -:10790000201C5D1C00950399079A3B1CFFF796FF0E -:10791000206B311CFCF7DBFD206B0499FCF7A2FC0B -:10792000206BFCF747FE09B0F0BDF7B5041C081C3E -:107930000F1CFBF7C4FCFBF7C7FC25690022AB1C3E -:10794000011C2361201C2B1CFFF702FF6E1C391C3D -:107950000190201CE7F72CFA311C206BFCF7B7FDD7 -:10796000291C206BFCF77EFC0121206B4942FCF7AF -:1079700075FC0199201CE7F71BFA311C206BFCF702 -:1079800071FCF7BDF8B50569161C6B1C012203617B -:107990002B1C041CFFF7DCFE071C5821206BFCF796 -:1079A00083FB311C381CFFF70FF9061E09D1391C67 -:1079B000201CE7F7FDF9206B0121321C331CFCF77A -:1079C00017FF206B0121FCF735FF291C206BFCF70A -:1079D00049FCF8BDF0B589B00792038B07690493A1 -:1079E000438B7E1C0593C38B07830693BB1C0361EB -:1079F000838B4683C383041C081C0D1CFBF75FFCB0 -:107A00000290FBF75CFC0390281CFFF791FE002816 -:107A10001ED12369281C019301332361FFF776FEF1 -:107A2000002803D1206B311CFCF751FD206B01991C -:107A3000FCF718FC0299201CE7F7BAF9206B311CFF -:107A4000FCF710FC201C291C0122019BFFF780FE83 -:107A50006B461B8A079A23836B469B8A63836B461C -:107A60001B8BE383039B934203D0201C191CE7F775 -:107A70009FF9206B391CFCF7F5FB09B0F0BDF0B5A0 -:107A8000041C236985B000930133081C2361039112 -:107A90000192FFF74DFE061E07D00398FBF70FFC7F -:107AA0000390FBF70CFC039030E0256903986B1CF6 -:107AB0002361FFF72BFE321C03992B1C071C201C93 -:107AC000FFF746FE011C0390201CE7F771F9061C26 -:107AD0000390002F60D10199FFF776F8002809D1B3 -:107AE000206BFCF7B6FB00280CD1206B0099FCF74B -:107AF000EEFC07E0301CFBF7E2FB0199FFF764F8AE -:107B00000028EDD0206B291CFCF7ACFB039B019AED -:107B1000934241D003A84821FBF7EAFB071C0398D6 -:107B2000B84232D0FBF7D0FB0390FFF701FE051EF1 -:107B300007D00398FBF7C3FB0390FBF7C0FB039050 -:107B4000EDE726690398731C2361FFF7DFFD331C03 -:107B5000029003992A1C201CFFF7FAFD011C0390D8 -:107B6000201CE7F725F9029B0390002B14D1206B12 -:107B7000FCF76FFB002803D1206B0099FCF7A7FCF2 -:107B8000206B311CFCF76EFBC9E7019B9F4203D0C1 -:107B9000201C391CE7F70CF9206B0099FCF762FBFD -:107BA00005B0F0BD70B50B78161C0A3B4A781B0275 -:107BB0001343B53B5A4253410C1C8371321C051CC4 -:107BC000FFF71DF9201C311CFBF76DFB032803D1C7 -:107BD000286B0B21FCF72CFD70BDF0B587B001912F -:107BE0000B78041C0D1C012B01D0532B02D10595E1 -:107BF000002509E00026502B1AD1081CFBF764FB76 -:107C00000590FBF75CFB051C05A83921FBF770FB11 -:107C10000026071C0598B8420AD00378012B27D10B -:107C200043784A2B24D10136FBF749FB0590F1E755 -:107C30000198FBF744FB01900778012F1AD1437894 -:107C4000312B17D1206B311CFCF740FB206B02213C -:107C5000FCF782FB206B391CFCF70DFD201C291C56 -:107C6000303005AAFFF7B4FC206BFCF724FB4CE096 -:107C70000336D9E7311C206BFCF728FB01A83E2115 -:107C8000FBF736FB0027019E0090009B9E420FD21F -:107C9000301CFBF719FB05A9FEF79EFF206B059929 -:107CA000FCF75AFB301CFBF70AFB0137061CECE71C -:107CB000206B391CFCF7DFFC201C291C303002AA89 -:107CC000FFF786FC019D009B9D421BD2281C03A947 -:107CD000FBF7FFFA04A9FEF77FFF0499051C206B50 -:107CE000FCF7DDFA039B9D4202D1201C049906E0BB -:107CF000281C05A9FEF770FF051C201C0599E6F756 -:107D00007BFEE0E7206BFCF7ABFB07B0F0BD026841 -:107D100013783E2B05D83C2B05D2212B07D13E23CF -:107D200001E0402B03D101320260181C00E040202A -:107D30007047F7B5051C0668741C20780194DDF7C0 -:107D400079FFA71B031C01340028F6D12868391CD1 -:107D50000A22DBF7D9FD019B40102B60FEBD73B5F5 -:107D6000E4F704FD00906846FFF7D1FF0025061CEC -:107D7000009B01241A78002A28D001941878DDF796 -:107D800059FF002803D06846FFF7D3FF041C009B6F -:107D90001A780023732A13D1231C012410E0002B2E -:107DA00006D1009B301C197801AAE1F78BFD031C5A -:107DB000019A013C501E4519524215405D1900239D -:107DC000002CECD1009B01330093D1E768002043E5 -:107DD00076BD4368F7B51C1E1BD0051C0021181C7E -:107DE000E1F770FF0026041C6B689E4211D2B300BD -:107DF0000193EB189868E0F709FA071E04D1201CDC -:107E0000FDF7BFF83C1C04E0019B0136E3189860C5 -:107E1000EAE7201CFEBD08B5E0F7AAF908BD08B5E1 -:107E2000031C0A1C0C20191CE0F730FA08BD38B5F9 -:107E30000124A04200D04C680868E0F799F9051CBD -:107E4000281CE0F7E3F9021E05D0211C0520E0F70D -:107E50001DFA041CF4E7201C38BD08B5011C0220E3 -:107E6000E0F722F808BD08B51A23E8F7B9FD08BD08 -:107E700008B51923E8F7B4FD08BD10B50C1C02289D -:107E800002D106CC093007E0096862680B20E0F7F0 -:107E9000FDF9011C0A20A268E0F7F8F910BD0023E3 -:107EA00010B5C25C002A06D0CC5C002C03D0A242E4 -:107EB00010D10133F5E70024CB5CA34207D1013494 -:107EC000002A04D0101CDDF7CDFE6040C4B20120B2 -:107ED000204000E0002010BD10B5131CC468002233 -:107EE000A04710BD002108B50A1CFFF7F5FF08BD2B -:107EF00007B5019101AA0121FFF7EEFF0EBD08B5FC -:107F0000E9F742FA08BD08B5D9F7DAFDE9F784FACE -:107F100008BD38B5041C0D1CFFF7F5FF002803D081 -:107F2000201CD9F7CDFD041C291C201CE3F7E2FD21 -:107F300038BD13B5041C4068E0F768F9021E0BD089 -:107F4000A3680220591CA16001215B000B43694614 -:107F500000930192E1F7B6FE16BDF8B5071C0C20A0 -:107F60001D1C0E1CFBF774FB0760041C2868E0F75F -:107F7000FFF860600020012E02D96868D9F78AFEF8 -:107F8000A060201CF8BD08B5DBF756FC01234000BB -:107F9000184308BD136870B5002B10D14568AC1CA0 -:107FA000A4002458AB420AD09E00A6598E4204D1A8 -:107FB00002339B001B58136001E00133F2E770BDF0 -:107FC00008B54B680A1C02339B005958EAF752F96E -:107FD00008BD002313B5041C0093081C111C1A1CB7 -:107FE000D8F702FB0420FBF733FB046016BD10B585 -:107FF000141C081C111CEBF767FF201C10BD00208F -:10800000F8B5824219D01C1C151C0E1CEBF738FF6A -:10801000002803D10B23013823600EE0771C75196B -:10802000EBF73AFF7B1E3C1E1870AC4204D0EBF716 -:1080300027FF01370028F3D1A01BF8BD836810B5D6 -:10804000041C5808FBF756FE0123A2681340A360E6 -:1080500010BD10B5041C0430EAF70AFA012160686B -:1080600002F061F9FBF746FE10BD10B5041C0430A8 -:10807000EAF7FEF90121606802F063F9FBF73AFEC6 -:1080800010BD10B5041C0430EAF7F2F90121606854 -:1080900002F065F9FBF72EFE10BD38B50021051C76 -:1080A0000320E1F70FFE041C281DEAF7E1F96868D8 -:1080B000012102F038F9FBF71DFE0121A06068687C -:1080C00002F03FF9FBF716FE0121E060686802F05C -:1080D00046F9FBF70FFE2061201C38BD08B540684B -:1080E000F0F75CFBFBF706FE08BD08B54068F0F74B -:1080F000A7FBFBF7FFFD08BD08B5DDF7C7F8FBF7E9 -:10810000F9FD08BD08B5EAF75FFB407B40B208BD4A -:10811000031C013B5A42534141205B4218407047C7 -:10812000202304304B60423308608B60002070478E -:1081300010B5FFF7E7FF021CA0240023C132FF3275 -:10814000E405920013510133011C181C0138C0468C -:10815000C046C046C046C046C046C046C046C046EF -:10816000C046C046C046F1D1A222D200A058C840A5 -:10817000184010BD08B50120EAF74EFD08BD0223E6 -:1081800010B584171C40013B1C1B802342021B04BA -:10819000520AC0151A43C3B2963B5918002901DD93 -:1081A0008A4005E00B1C00201F3303DB49420A41D3 -:1081B000101C604310BD002307B5081C0093111C60 -:1081C0001A1CD8F711FAEAF7B1FE0EBD0423591AAA -:1081D000033B8B40191C031C421D1878084003D137 -:1081E00001339342F9D100E00120704708B501281E -:1081F00003D14868D9F7C4FE00E0002008BD10B5DF -:108200000421041CFFF7E2FF031C0420002B06D10D -:10821000201C0321FFF7DAFF431E9841023010BDF6 -:10822000002210B5036902764269C36093420FD2FF -:108230001B78827E0377002A01D005230BE0041C03 -:10824000181CEAF741FFFFF7DAFF0130607603E020 -:10825000202303771B3B437610BD05235A43521856 -:10826000182A03D100790007C00F08E0D308C0180E -:108270004379072002401341181C0123184070471E -:1082800083795A4352185308C018C37904209200C6 -:1082900002401341181C0F231840704730B51C1CB6 -:1082A00083795A43042352189500F021520880180C -:1082B000221C1D402941AA40C3790B401343C371BE -:1082C00030BD08B54279837900215A4301325210FA -:1082D000073002F0AEFF08BD08B50379DB0705D50E -:1082E000FFF7BBFF09235843C0B201E0FFF7C8FF07 -:1082F00008BD02790523D20700D48379181C704782 -:1083000008B5FFF7F6FF01234000184308BD0279C6 -:108310000523D20700D44379181C704708B5FFF72E -:10832000F6FF01234000184308BDF0B50B6887B085 -:1083300048680C1C0293D9F7ADFC0090A068D9F7EF -:10834000A9FC0190E068D9F7A5FC071C2069D9F7C2 -:10835000A1FCFE43C543F617ED1737400540291C25 -:10836000381C0497EAF7BEFE009B019ADC43E41731 -:108370001C40019B0390DB43DB171A4002980592D7 -:10838000FFF7B7FF049B009A9F18874200DD071C88 -:108390000298FFF7BCFF019BEE18864200DD061C29 -:1083A000049A3B1B9A4203DC059BF31A9D4204DDB1 -:1083B0000398FFF786FF00E00134BC4211DA059D07 -:1083C000B542F9DA2A1C0298211CFFF785FF009AB2 -:1083D000031CA11A019A0398AA1AFFF75FFF01353F -:1083E000EEE7039807B0F0BDF7B5061CFFF781FF75 -:1083F000071C301CFFF78BFF00900099381CEAF730 -:1084000071FE00240190009B9C4211DA0025BD42C0 -:108410000CDA291C221C301CFFF75EFF291C031CF0 -:10842000221C0198FFF73AFF0135F0E70134EAE733 -:108430000198FEBD08B5FFF7D7FF08BDF7B5061CCC -:10844000FFF757FF0090301CFFF761FF0190019983 -:108450000098EAF747FE0024071C019B9C4213DAB0 -:108460000025009B9D420DDA291C221C301CFFF7C1 -:1084700033FF0923291C1B1A221C381CFFF70EFF8F -:108480000135EEE70134E8E7381CFEBD08B5FFF71B -:10849000D5FF08BDF7B5051C0C1C0E1C8379009395 -:1084A00043790193009B9E4212DA0027019B9F4271 -:1084B0000CDA3A1C311C281CFFF7E2FE3A1C031CA4 -:1084C000311B281CFFF7EAFE0137EFE70136E9E729 -:1084D0001C1B009B9C420DDA0026019B9E4207DA82 -:1084E000321C281C211C0023FFF7D8FE0136F4E7BC -:1084F0000134EEE7F7BDC368426970B5041C9342CE -:108500000BD1037E052B08D1C37E181E4DD0201C35 -:10851000FFF786FEA068FFF7D4FEA0680121FFF7F1 -:10852000B9FF227E637E9A4216D2207FEAF7CCFD05 -:108530000025061C0421237E725DCB1A1A41131CF0 -:108540000122134008325343A0682A1C0135FFF76B -:10855000A5FE052DEED124E09A4222D1E36861699F -:108560005A1CE2608A4206D1202323771B3B6376A4 -:108570000023237615E058782077EAF7A5FDA17E41 -:10858000051C002904D0FF232376FA3B637608E01C -:10859000FFF71CFE40422076281CFFF730FE01301A -:1085A0006076237EA0680133237670BDF7B500297D -:1085B00029DB0E1C041C437901938579013DB542EA -:1085C00010DB0027019B9F42F8DA3A1CA91B201CF4 -:1085D000FFF756FE3A1C031C291C201CFFF75EFE09 -:1085E0000137EFE70025B5420DD00027019B9F42E0 -:1085F00007DA3A1C201C291C0023FFF74FFE013725 -:10860000F4E70135EFE7F7BD70B5041C0D1CFFF76B -:1086100070FE4342061C201C9D4201DDB54206DB74 -:10862000FFF775FE011C301CEAF75CFD0CE0FFF75C -:10863000DBFE041C002D03DB291CFFF72BFF02E0EF -:108640006942FFF7B3FF201C70BD10B5041C081C65 -:10865000D9F720FB011C201CFFF7D6FF10BD10B579 -:10866000041C081CD9F716FB4142201CFFF7CCFF65 -:1086700010BDF0B587B00D1C0490FFF73AFE0190D5 -:108680000498FFF744FE4342041CAB4200DA2B1C63 -:10869000A34200DD231CDA43D2171A4005921A19AF -:1086A0000392A24200DD03945B420093DB43009AF5 -:1086B000DB171A400198211C0092EAF713FD0025F0 -:1086C0000290009B9D420DD00026019B9E4207DA3E -:1086D000311C02982A1C0023FFF7E0FD0136F4E765 -:1086E0000135EEE7059D009B059A9B1A5F19039BD8 -:1086F0009D4213DA0026019B9E420CDA311C04983D -:108700002A1CFFF7E9FD311C031C3A1C0298FFF7F5 -:10871000C5FD0136EFE70135E5E70137A7420BDA82 -:108720000025019B9D42F8DA291C02983A1C00237F -:10873000FFF7B4FD0135F4E7029807B0F0BD10B5BE -:10874000041C081CD9F7A6FA011C201CFFF791FF96 -:1087500010BD10B5041C081CD9F79CFA4142201C1E -:10876000FFF787FF10BDF8B5071C081CEAF7ACFC43 -:108770000025061C00240423325D5B1B1A41131CD8 -:108780000122134008325343381C221C291C013497 -:10879000FFF784FD052CEED10135052DEAD1F8BD9A -:1087A00013B5041C01A94068E3F7F6FFA26801991C -:1087B00000238A4207D2815CE068FFF7D4FFA368F8 -:1087C0000133A360E368181C16BDF7B50025042A21 -:1087D00011D1041C0E1C406801A9E3F7DDFF2B1C1E -:1087E000071C0199321C2068D9F72CFB395CA06862 -:1087F000FFF7B9FFA568281CFEBD38B5051C05208C -:10880000011CEAF76FFC041C291CFFF7ACFF201CBD -:1088100038BD10B518C96210E10701D58158CB5891 -:108820008018984710BD10B5041C0430EBF70EF902 -:108830000121606800F09EFDFBF75CFA10BD10B5E9 -:10884000041C0430EBF702F90121606800F09FFD81 -:10885000FBF750FA10BD10B5041C0430EBF7F6F826 -:108860000121606800F0A0FDFBF744FA10BD10B5CF -:10887000041C0430EBF7EAF8606800F09DFDFBF79C -:1088800039FA10BD10B5041C406800F0D3FD002873 -:1088900002D1201CEBF7A2F8201DEBF7D7F8606897 -:1088A000EEF7ECFCFBF726FA10BD012803D1CB88CC -:1088B0005B00184300E00020704710B5041C02F074 -:1088C000BDFD011C201CEBF7FFFA10BD08B501200F -:1088D000EBF750FD08BD08B50020EBF74BFD08BDD8 -:1088E000F0B585B00390081C0D1CFFF702FD0526AE -:1088F000042803DC281CFFF7FCFC061C281CFFF7DF -:1089000006FD0527042803DC281CFFF700FD071CD3 -:10891000039B0293002301930093009BB34224DA4C -:108920000024BC420FDA221C281C0099FFF7D4FC5B -:10893000029B1B19187101238340181C019B0134F1 -:1089400003430193EDE7FB43DB173B40042B05DCBE -:108950000021029AD21811710133F7E7009B01330D -:108960000093029B05330293D7E7F343DB171E40C6 -:1089700005237343039A0433D318042E08DC002222 -:1089800001361A705A709A70DA701A710533F4E76A -:108990006A46039B92881A8405B0F0BD73B5061C25 -:1089A000081C0D1C002402F049FD221C011C231C84 -:1089B000281C0094EAF790FE0123011C0093301C50 -:1089C0009622231CECF7C4F973BD70B5051C081C76 -:1089D000161CD9F75FF9041C301CD9F75BF9211C70 -:1089E000021C281CECF7D4FA01234000184370BD88 -:1089F00004231A1CA0210320C132FF329200C905B2 -:108A000001335050112BF4D17047704710B5041C3E -:108A100043694268991800F077F8E36A002B04D1A3 -:108A2000A369002B07D0984705E0A069002802D071 -:108A3000211C1C31984710BD10B5041C00F06CF8C7 -:108A40000023A361E36210BD10B5041CECF710FB1A -:108A5000201C02F0BCFA201C10BD38B5051C0C1CF3 -:108A600000F05AF86C61286900F0D5F90119281C4A -:108A700000F04AF838BD00207047F8B5071C0E1CFE -:108A80000D1C8C18A54209D001353B686A1E5B6A33 -:108A90001178381C9847431CF4D12C1CA01BF8BD3E -:108AA000F8B5071C0E1C0D1C8C18AC4209D03B6895 -:108AB000381C9B6A9847431C02D028700135F4E7A4 -:108AC0002C1CA01BF8BD0020704700207047002020 -:108AD00070470020704738B50D1C041C4069F8F73A -:108AE00093F8281C6169F8F7FBF938BD10B5041C30 -:108AF0004069F8F789F8606900F0A4F810BD08B57E -:108B000003689B68984708BD08B50A1C031C011D33 -:108B1000006900F048F908BD08B5011D006900F0C2 -:108B20005EF908BD704718234A1C5A4382189268A0 -:108B300010B55943002A05D14118CB68002B08D045 -:108B4000984706E04318D868002802D0191C103155 -:108B5000904710BD10B5041C02F039FA201C10BD5E -:108B600038B50D1C041C0430EDF722F9E56338BD5F -:108B700008B5043000F0FFF908BD38B50C1C051C21 -:108B8000111C0430221E0AD018231A1C4A43AA18AA -:108B9000D4604A1C53430022EB189A600132EDF76F -:108BA00053F938BD08B5043000F0D8F908BD10B548 -:108BB0000C1C0430EDF78CF9201C10BD036870B557 -:108BC0001B6900210122041C9847061C731C0DD050 -:108BD000236800211B690222201C9847051C23687A -:108BE000201C1B69311C00229847281C70BD08B549 -:108BF000431E012B01D9002804D180239B014B6027 -:108C0000002005E0F7F756FF0923036001204042EA -:108C100008BD08B50120F7F753FF7047704708B546 -:108C2000FFF7FCFFFFF7F9FFEDF73EFA08BD08B5C7 -:108C3000002801D000F00AF8FEE708B5002102F094 -:108C4000D4FB08BD08B5F8F721F808BD00B59BB006 -:108C500002A8032100F064F808A8022100F060F8DF -:108C60000EA8012100F05CF814A8102100F058F8BB -:108C7000059B039A96201A60099A0C9B1A600F9A1A -:108C8000129B1A60159A179B01921A6000F058F80F -:108C9000069B039A96201A60099A0B9B1A600F9AFA -:108CA000119B01921A60159A189B1A6000F048F8FF -:108CB000DEE70FB4012008B5F7F702FF70B50D1C11 -:108CC000041C161CEDF712F96B1C07D0201C0021A8 -:108CD00000F05EF9201C311C00F054F970BD08B59D -:108CE0000322FFF7EBFF08BD08B5FFF7E7FF08BD5C -:108CF00070B50D1C041C161CEDF7F8F86B1C0ED09B -:108D00006368002E01D0E26800E02269201C012186 -:108D1000136000F03DF9201C002100F033F970BD14 -:108D200008B50022FFF7E4FF08BD38B5041CECF7D6 -:108D300037FF051CECF734FF401BA042FAD338BDC7 -:108D400008B5FA239B005843FFF7EFFF08BD38B57D -:108D5000041C0D1C03681B68984763681D6038BDC0 -:108D600038B50368041CDB68984763685A68236851 -:108D7000002A02D19B68984714E05B681568984701 -:108D800063682D1A002D08DC5A68916859601B68C9 -:108D9000002BEAD050689847E7E75A6821681068C6 -:108DA0000B69984738BD70B50D1C72B64B60002337 -:108DB00046680A607468002C05D02168511A02D4F4 -:108DC000231CA468F7E7002B05D1036875601B69B5 -:108DD000101C984700E09D60AC6062B670BD08B59D -:108DE00072B6426853688B420CD19B68536002682C -:108DF000002B02D1936898470BE0126918689047DE -:108E000007E0131C002B04D09A688A42F9D18A68C3 -:108E10009A6062B608BD08B503685B68984708BDEC -:108E2000F7B50192B1221F1C03684910D200995076 -:108E30008021012289005A50191C0024061CFC3193 -:108E4000CC601A607D1E019BAC4213DA1919301CEC -:108E50000022ECF77DFC00280AD0301CECF772FDF4 -:108E6000071C301CECF73AFD251C002F1ADA18E01D -:108E70000134E7E75919301C0122ECF769FC00289E -:108E800003D0301CECF72AFD0CE0089B3D1C002BA6 -:108E900008D031680B1CFC339A68002AFAD00022F3 -:108EA0009A603D1C281CFEBDF8B5171CB1221D1C84 -:108EB0000368D200491099508022002492009C50EF -:108EC0000122061C9A60AC4211DA395D301CECF7C5 -:108ED00029FC002809D0301CECF700FD301CECF711 -:108EE00031FD00280EDA041C0CE00134EBE7069B90 -:108EF0002C1C002B06D0301CECF70AFD002801D0FA -:108F000001246442201CF8BD82B00190C046C046D6 -:108F1000C046C046C046C046C046C046C046C04621 -:108F2000C046C046C046C046019B013B0193002B92 -:108F3000ECD102B070472F23C046C046C046C046A1 -:108F4000C046C046C046C046C046C046C046C046F1 -:108F5000C046C046013B002BEED1704703681A1C87 -:108F6000FC32D1680129FAD10021D160A322D200BC -:108F70009858C0B270470368FC33D8680138434240 -:108F80005841704708B5007840B200F05FF808BD5E -:108F9000002901D0012907D10023A022C356D20500 -:108FA000C133FF339B0099507047002310B5036015 -:108FB00043600A78041C2F2A15D14A789A4212D0AD -:108FC000481C191C206023681A782F2A02D101330B -:108FD000236005E0002A03D0013301312360F2E76A -:108FE000EDF746F86060201C10BD0068704708B5BA -:108FF0004368181E05D000F042F80138434258413A -:10900000C0B208BD10B5041CFFF7F1FF031E00D06D -:109010006368181C10BD08B54368181E04D000F022 -:109020002EF843425841C0B208BD10B5041CFFF7EA -:10903000F2FF031E03D06268131E00D0131F181C1A -:1090400010BD4068431E9841C0B27047A023800005 -:10905000DB05C018E02310B50C24DB00C2588900E2 -:10906000A243C250C2581143C15010BD10B5041CD8 -:10907000ECF7D2FF201C01F0AAFF201C10BD007BE2 -:10908000704770477047002070477047704710B5B1 -:10909000041CEFF7A9FC201C10BD10B5041CEFF751 -:1090A000A3FC201C10BD10B5041CF0F743F90023ED -:1090B000201C237510BD3ADF704708B50368002BEC -:1090C00001D0081C984708BD13B5041C7D30FF3043 -:1090D000002100F075F8201CA530FF30002100F0C1 -:1090E0006FF8201CCD30FF30012101F088FE13BD48 -:1090F0001FB5041C009202A80822019302F07CF81C -:10910000039A029B5010D20701D52258D358201839 -:109110000099019A98471FBD08B5EDF731FC016031 -:109120007047021C002310B5AC320432141F2468AF -:10913000002C01D00133F8E72A339B00C318596093 -:10914000201C10BD021C002310B5AC320432141FC9 -:1091500024688C4201D00133F8E72A339B00C318FE -:109160000020586010BD021C002310B5D432043218 -:10917000141F2468002C01D00133F8E734339B001E -:10918000C3185960201C10BD021C002310B5D43236 -:109190000432141F24688C4201D00133F8E73433C1 -:1091A0009B00C3180020586010BD4068704710B580 -:1091B000041CEDF7BFFD201CEFF716FC201C10BDB2 -:1091C0000630C17770470123807918407047C06826 -:1091D000431E9841704710B5041CEDF7EDFD201CAF -:1091E000EFF702FC201C10BD38B58388041C5A0719 -:1091F00008D59A0631D4DA0604D52169626901F0EE -:1092000027FC2AE004221343A380A3889A0705D5EC -:10921000A0682169626901F065FC09E02069616963 -:10922000DB0703D5E268A368984701E0A368984785 -:10923000A388DA060ED5A06900280BD0231C021CD7 -:10924000103322CA22C38368A361EFF7CDFBEEF788 -:1092500023FADAE704229343A38038BD031C72B6D5 -:10926000C068002807D08268DA60002A00D11A613D -:10927000DA8A013ADA8262B670478068002801D043 -:10928000C069FBE77047F7B50122041C0D1C076994 -:10929000EDF7B0FD00281FD1E38A092B1CD86B46DF -:1092A0000C3006CD06C3EFF77BFB0099019A051C35 -:1092B00000F0CDF872B6002F03D1E368AB60E56033 -:1092C00002E0BB68AB60BD60AB68002B00D12561DC -:1092D000E38A0133E38262B6F7BD07B500916946C0 -:1092E0000192FFF7D0FF07BD38B5051CFFF7C5FF9A -:1092F000281CFFF7B3FF041E0BD0211C0022281CE2 -:10930000EDF778FD201CEFF76FFBEEF7A5F90028CD -:10931000EED138BD10B5041CEDF792FE201CEFF71E -:1093200063FB201C10BD836B806A1B681840431EC2 -:1093300098417047836B37B51B68826A1A4218D010 -:109340000121041C6425EDF7C5FE68430321A061DB -:10935000201CEDF7BFFE68430521E061201CEDF7FE -:10936000B9FE4543A1882562684604220123EEF731 -:1093700061F837BD012904D0022906D10369C0690B -:1093800001E08369C068181A00E08069704701290C -:1093900004D0022906D18369C06801E00369C0696D -:1093A000181A00E0C06970470139036A012901D821 -:1093B0004269D31A181C7047F7B58369C268041C48 -:1093C000981AF3F777FAE2692369061C981A0F1CBA -:1093D000F3F770FA636900900191206A181AF3F7A5 -:1093E00069FA321C0D1C041C3B1C301C391CF2F7A2 -:1093F00017FC061C0F1C00980199021C0B1CF2F7AD -:109400000FFC021C0B1C301C391CF1F7A3FC2B1C9D -:10941000061C0F1C221C291C201CF2F701FC021C3C -:109420000B1C301C391CF1F795FCF4F7AFF8F3F77F -:109430000BFAFEBD01238079184070470223807922 -:10944000184070470122837993438371704737B581 -:10945000041C009101926D46EDF7CEFF231C06CD52 -:1094600006C30023201CA3603EBD72B601650B68D5 -:10947000002B03D143658365086007E05A6D002A1D -:1094800001D0131CFAE758658365426562B67047E0 -:10949000036D002B12D072B6826D436D002A01D08D -:1094A000536501E0026D1360436D002B01D0826DA6 -:1094B0009A65002343658365036562B6704708B506 -:1094C0000B1C111C1A1C0123EEF79EF808BD38B5C1 -:1094D000051CEFF30884C36B006C1C1B6B6C1B1A20 -:1094E000A3420CD21F2320349C43002801D0EFF765 -:1094F0007BFA201CEFF754FA041928646C6438BD19 -:1095000010B50C1C8047A047EEF78EF910BD08B5CA -:10951000EEF78AF908BD38B5141C031C101C0D1C8D -:109520009847201CA847EEF77FF938BD08B5EEF73D -:109530009BF8EEF7B1F8FAE710B5041C006801F0EB -:10954000C1FA201C10BD70B5061C081C0D1C01F0D2 -:1095500075FF041C0530EFF723FA306001F0A5FA1F -:109560003068291C4480621C043001F045FE70BD47 -:1095700038B5041C0B6800680D1C984205D001F03A -:10958000A1FA2868206001F093FA201C38BD00235E -:10959000994207DB02680223D05E0023884201DD86 -:1095A00051180B79181C704710B582604A43041C8F -:1095B0004160002A0ADDFE2390005B059A4201DD2E -:1095C00001204042EFF7ECF9206001E00023036046 -:1095D000201C10BD4B688A6870B543605343041C5F -:1095E0000D1C8260002B12DDFE229E005205301CF5 -:1095F000934201DD01204042EFF7D2F900232060C1 -:109600002A68D158C1500433B342FAD101E0002393 -:109610000360201C70BD4068704700290DDB002AE4 -:109620000BDB4368994208DA83689A4205DA4B43B8 -:109630009A1803689200D05800E00020704710B5D7 -:1096400000290CDB002A0ADB4468A14207DA84689F -:10965000A24204DA4C430168A2189200535010BD94 -:1096600010B5041C0068002801D0EFF7BDF9201CDC -:1096700010BDF0B58A684B6893B001900C1C9A42FB -:1096800001D000F0A1FD042A01D000F09DFD111CC5 -:109690000FA8FFF789FF24680F9FA36A66690293EA -:1096A000E36AE56B0393A36B02990493636A301C2E -:1096B0000593A3690693E3690793636B0893F0F737 -:1096C000E9FF291CF0F7E6FF03990990301CF0F739 -:1096D000E1FF0499F0F7DEFF011C0998F1F70CF99E -:1096E0000699061C0598F0F7D5FF291CF0F7D2FF64 -:1096F000011C301CF1F700F90799051C0598F0F7DB -:10970000C9FF0499F0F7C6FF011C281CF0F754FCB0 -:109710000699051C0898F0F7BDFF0399F0F7BAFF0A -:10972000011C281CF0F748FC0799051C0898F0F765 -:10973000B1FF0299F0F7AEFF011C281CF1F7DCF82D -:109740003860A36A66680293E36AE56B0393A36BD0 -:1097500002990493636A09900593A3680693E368EA -:109760000793636B089380231B06F018F0F792FFB2 -:10977000291CF0F78FFF03990A90301CF0F78AFF3D -:109780000499F0F787FF011C0A98F0F715FC069979 -:10979000061C0598F0F77EFF291CF0F77BFF011CE3 -:1097A000301CF0F709FC051C05980799F0F772FFCB -:1097B0000499F0F76FFF011C281CF1F79DF806993A -:1097C000051C0898F0F766FF0399F0F763FF011C8A -:1097D000281CF1F791F80799051C0898F0F75AFF33 -:1097E0000299F0F757FF011C281CF0F7E5FB7860A1 -:1097F000A36966680293E369E56B0393A36B301C6E -:10980000049363690593A3680693E3680793636B06 -:1098100002990893F0F73EFF291CF0F73BFF0399EC -:109820000A90301CF0F736FF0499F0F733FF011C63 -:109830000A98F1F761F80699061C0598F0F72AFFD7 -:10984000291CF0F727FF011C301CF1F755F8079988 -:10985000051C0598F0F71EFF0499F0F71BFF011C8B -:10986000281CF0F7A9FB0699051C0898F0F712FFD1 -:109870000399F0F70FFF011C281CF0F79DFB0799D7 -:10988000051C0898F0F706FF0299F0F703FF011C8A -:10989000281CF1F731F8B860A36966680293E369A0 -:1098A000E56A0393A36A0299049363690593A36825 -:1098B0000693E3680793636A089380231B06F018F6 -:1098C000F0F7E8FE291CF0F7E5FE03990A90301C3A -:1098D000F0F7E0FE0499F0F7DDFE011C0A98F0F7BE -:1098E0006BFB0699061C0598F0F7D4FE291CF0F7CF -:1098F000D1FE011C301CF0F75FFB0799051C059891 -:10990000F0F7C8FE0499F0F7C5FE011C281CF0F71B -:10991000F3FF0699051C0898F0F7BCFE0399F0F7D1 -:10992000B9FE011C281CF0F7E7FF0799051C0898F1 -:10993000F0F7B0FE0299F0F7ADFE011C281CF0F71D -:109940003BFBF860A36A26690293E36AE56B039325 -:10995000A36B02990493236A0593A3690693E369B1 -:109960000793236B089380231B06F018F0F792FEF1 -:10997000291CF0F78FFE03990A90301CF0F78AFE3D -:109980000499F0F787FE011C0A98F0F715FB069979 -:10999000061C0598F0F77EFE291CF0F77BFE011CE3 -:1099A000301CF0F709FB0799051C0598F0F772FECB -:1099B0000499F0F76FFE011C281CF0F79DFF069933 -:1099C000051C0898F0F766FE0399F0F763FE011C8A -:1099D000281CF0F791FF0799051C0898F0F75AFE2C -:1099E0000299F0F757FE011C281CF0F7E5FA3861E0 -:1099F000A36A26680293E36AE56B0393A36B0A905C -:109A00000493236A301C0593A3680693E3680793C5 -:109A1000236B08930299F0F73DFE291CF0F73AFEFC -:109A200003990B90301CF0F735FE0499F0F732FEE5 -:109A3000011C0B98F0F760FF0699061C0598F0F7DB -:109A400029FE291CF0F726FE011C301CF0F754FFFC -:109A50000799051C0598F0F71DFE0499F0F71AFE0A -:109A6000011C281CF0F7A8FA0699051C0898F0F7C5 -:109A700011FE0399F0F70EFE011C281CF0F79CFA6A -:109A80000799051C0898F0F705FE0299F0F702FE09 -:109A9000011C281CF0F730FF78612668A369E56B8C -:109AA0000293E36902990393A36B049323690593DB -:109AB000A3680693E3680793236B089380231B0630 -:109AC000F018F0F7E7FD291CF0F7E4FD03990B907F -:109AD000301CF0F7DFFD0499F0F7DCFD011C0B985A -:109AE000F0F76AFA0699061C0598F0F7D3FD291CD1 -:109AF000F0F7D0FD011C301CF0F75EFA0799051C49 -:109B00000598F0F7C7FD0499F0F7C4FD011C281C67 -:109B1000F0F7F2FE0699051C0898F0F7BBFD0399D3 -:109B2000F0F7B8FD011C281CF0F7E6FE0799051CAC -:109B30000898F0F7AFFD0299F0F7ACFD011C281C66 -:109B4000F0F73AFAB861A36926680293E369E56A17 -:109B50000393A36A029904932369301C0593A368B5 -:109B60000693E3680793236A0893F0F793FD291C93 -:109B7000F0F790FD03990B90301CF0F78BFD0499E2 -:109B8000F0F788FD011C0B98F0F7B6FE0699061C4D -:109B90000598F0F77FFD291CF0F77CFD011C301CB7 -:109BA000F0F7AAFE0799051C0598F0F773FD0499D4 -:109BB000F0F770FD011C281CF0F7FEF90699051C52 -:109BC0000898F0F767FD0399F0F764FD011C281C65 -:109BD000F0F7F2F90799051C0898F0F75BFD029978 -:109BE000F0F758FD011C281CF0F786FEF861636A47 -:109BF00026690293E36AE56B0393636B301C04935D -:109C0000236A059363690693E3690793236B0893BB -:109C10000299F0F73FFD291CF0F73CFD03990B90EA -:109C2000301CF0F737FD0499F0F734FD011C0B9858 -:109C3000F0F762FE0699061C0598F0F72BFD291C2B -:109C4000F0F728FD011C301CF0F756FE0799051CA3 -:109C50000598F0F71FFD0499F0F71CFD011C281C66 -:109C6000F0F7AAF90699051C0898F0F713FD039977 -:109C7000F0F710FD011C281CF0F79EF90799051C50 -:109C80000898F0F707FD0299F0F704FD011C281C65 -:109C9000F0F732FE0B903862636A26680293E36A3B -:109CA000E56B0393636B02990493236A05936368DE -:109CB0000693E3680793236B089380231B06F01831 -:109CC000F0F7E8FC291CF0F7E5FC03990C90301C38 -:109CD000F0F7E0FC0499F0F7DDFC011C0C98F0F7BC -:109CE0006BF90699061C0598F0F7D4FC291CF0F7CF -:109CF000D1FC011C301CF0F75FF90799051C059891 -:109D0000F0F7C8FC0499F0F7C5FC011C281CF0F71B -:109D1000F3FD0699051C0898F0F7BCFC0399F0F7D1 -:109D2000B9FC011C281CF0F7E7FD0799051C0898F1 -:109D3000F0F7B0FC0299F0F7ADFC011C281CF0F71D -:109D40003BF97862636926680293E369E56B0393E4 -:109D5000636B029904932369301C0593636806932F -:109D6000E3680793236B0893F0F794FC291CF0F742 -:109D700091FC03990C90301CF0F78CFC0499F0F7DF -:109D800089FC011C0C98F0F7B7FD0699061C059894 -:109D9000F0F780FC291CF0F77DFC011C301CF0F76B -:109DA000ABFD0799051C0598F0F774FC0499F0F7D2 -:109DB00071FC011C281CF0F7FFF80699051C089897 -:109DC000F0F768FC0399F0F765FC011C281CF0F71C -:109DD000F3F80799051C0898F0F75CFC0299F0F776 -:109DE00059FC011C281CF0F787FDB86263692668DE -:109DF0000293E369E56A0393636A04932369059315 -:109E000063680693E3680793236A089380231B061D -:109E1000F0180299F0F73EFC291CF0F73BFC03997F -:109E20000C90301CF0F736FC0499F0F733FC011C61 -:109E30000C98F0F7C1F80699061C0598F0F72AFC73 -:109E4000291CF0F727FC011C301CF0F7B5F8079926 -:109E5000051C0598F0F71EFC0499F0F71BFC011C8B -:109E6000281CF0F749FD0699051C0898F0F712FC2C -:109E70000399F0F70FFC011C281CF0F73DFD079932 -:109E8000051C0898F0F706FC0299F0F703FC011C8A -:109E9000281CF0F791F8F8622669636AA56B0293B3 -:109EA000A36A02990393636B0493236A059363691E -:109EB0000693A3690793236B089380231B06F0186E -:109EC000F0F7E8FB291CF0F7E5FB03990C90301C38 -:109ED000F0F7E0FB0499F0F7DDFB011C0C98F0F7BC -:109EE0006BF80699061C0598F0F7D4FB291CF0F7CF -:109EF000D1FB011C301CF0F75FF80799051C059891 -:109F0000F0F7C8FB0499F0F7C5FB011C281CF0F71B -:109F1000F3FC0699051C0898F0F7BCFB0399F0F7D1 -:109F2000B9FB011C281CF0F7E7FC0799051C0898F1 -:109F3000F0F7B0FB0299F0F7ADFB011C281CF0F71D -:109F40003BF83863636A26680293A36AA56B0393A0 -:109F5000636B02990493236A0C9005936368301C29 -:109F60000693A3680793236B0893F0F793FB291CD0 -:109F7000F0F790FB03990D90301CF0F78BFB0499E0 -:109F8000F0F788FB011C0D98F0F7B6FC0699061C4B -:109F90000598F0F77FFB291CF0F77CFB011C301CB7 -:109FA000F0F7AAFC0799051C0598F0F773FB0499D4 -:109FB000F0F770FB011C281CEFF7FEFF0699051C4B -:109FC0000898F0F767FB0399F0F764FB011C281C65 -:109FD000EFF7F2FF0799051C0898F0F75BFB029971 -:109FE000F0F758FB011C281CF0F786FC78636369C6 -:109FF00026680293A369A56B0393636B049323699B -:10A00000059363680693A3680793236B08938023E3 -:10A010001B06F0180299F0F73DFB291CF0F73AFBFC -:10A0200003990D90301CF0F735FB0499F0F732FBE3 -:10A03000011C0D98EFF7C0FF0699061C0598F0F774 -:10A0400029FB291CF0F726FB011C301CEFF7B4FF9D -:10A050000799051C0598F0F71DFB0499F0F71AFB0A -:10A06000011C281CF0F748FC0699051C0898F0F71D -:10A0700011FB0399F0F70EFB011C281CF0F73CFCC8 -:10A080000799051C0898F0F705FB0299F0F702FB09 -:10A09000011C281CEFF790FFB86326686369A56A66 -:10A0A0000293A36902990393636A301C04932369A2 -:10A0B000059363680693A3680793236A0893F0F7F0 -:10A0C000E9FA291CF0F7E6FA03990D90301CF0F735 -:10A0D000E1FA0499F0F7DEFA011C0D98F0F70CFC98 -:10A0E0000699061C0598F0F7D5FA291CF0F7D2FA64 -:10A0F000011C301CF0F700FC0799051C0598F0F7CF -:10A10000C9FA0499F0F7C6FA011C281CEFF754FFAE -:10A110000699051C0898F0F7BDFA0399F0F7BAFA0A -:10A12000011C281CEFF748FF0799051C0898F0F759 -:10A13000B1FA0299F0F7AEFA011C281CF0F7DCFB2B -:10A14000F86321680998F0F7A5FA6168051C0A9878 -:10A15000F0F7A0FA011C281CEFF72EFFA168051CE0 -:10A160000B98F0F797FA011C281CEFF725FFE16820 -:10A17000051C0C98F0F78EFA011C281CEFF71CFF49 -:10A180000021041CEFF734FE002805D000210198BF -:10A190000A1CFFF709FA13E0FE20211C8005F0F7E6 -:10A1A00087F83E1C3C1C051C40362068291CF0F733 -:10A1B00071FA01C4B442F8D101980FA9FFF70AFA65 -:10A1C0000FA8FFF74DFA04E0002101980A1CFFF7E1 -:10A1D000EBF9019813B0F0BDF0B58BB00593161CE8 -:10A1E000059A0D1C4B6803908968002A01D00293E0 -:10A1F00001E00291191C029B7268934205D0002174 -:10A2000003980A1CFFF7D0F942E007A8B268FFF7ED -:10A21000CBF90027089B00939F4232DA002300937A -:10A22000009B099A93422ADA002300240193029B9F -:10A230009C421BDA059B281C002B02D0211C3A1CD7 -:10A2400001E0391C221CFFF7E8F9211C009A049058 -:10A25000301CFFF7E2F9011C0498F0F71BFA011C0F -:10A260000198EFF7A9FE01340190E0E7019B07A8F0 -:10A27000391C009AFFF7E3F9009B0133CFE7013760 -:10A28000C8E7039807A9FFF7A5F907A8FFF7E8F9BA -:10A2900003980BB0F0BD10B5041CEDF735FB201C86 -:10A2A000EEF7A2FB201C10BD836A80691B68184072 -:10A2B0004342584170470E23C25E1023C15E1223F1 -:10A2C000C35E494352435B438818C018704713B5B7 -:10A2D000041CEDF7FDFB211C231C36310A783433B6 -:10A2E000824204D11A78092A04D8013201E00022FE -:10A2F00008701A7035340A782178914209D01B7899 -:10A30000092B06D92270684692B21B210123EDF772 -:10A3100091F813BD08B5836A82691B681A4201D19E -:10A32000EDF79CFC08BD012904D0022906D11023B9 -:10A33000C05E05E00E23C05E404201E00E23C05E19 -:10A340007047012904D0022906D10E23C05E01E026 -:10A350001023C05E404201E01023C05E704712220D -:10A36000835E5842022900D0181C7047F7B5041CC0 -:10A370001023C05EF0F75EFC0E23E55E1222A35EA2 -:10A380006D425B420190281C0093F2F793FA061C81 -:10A3900000980F1CF2F78EFA021C0B1C301C391CA3 -:10A3A000F3F7F0F8F2F716FB2063061CF3F784F8D6 -:10A3B000071C301CF2F7D4FE802212069446019B43 -:10A3C000061C6344281C0193F0F734FC391CF0F799 -:10A3D00061F9051C0098F0F72DFC311CF0F75AF9D3 -:10A3E000011C281CEFF7E8FD011C0198EFF760FF46 -:10A3F000F2F74EFD0122A379E0621343A371F7BD8A -:10A4000010B58379041CDB0701D4FFF7AFFFE06AC6 -:10A4100010BD10B58379041CDB0701D4FFF7A6FF3C -:10A42000206B10BD35300078704752DF70477047A1 -:10A4300010B5041CEEF7D8FA201C10BD70B5041C32 -:10A44000161C1D1C03220723EEF72EF9201C311CBD -:10A45000022207231030EEF727F9201C291C0122C5 -:10A4600007232030EEF720F9201C0499042203234F -:10A470003030EEF719F9201C0599052203234030EE -:10A48000EEF712F9201C0699112201235030EEF745 -:10A490000BF9201C07990C2201236030EEF704F918 -:10A4A000201C08990B2201237030EEF7FDF8201CC8 -:10A4B0000999122201238030EEF7F6F8201C0A9940 -:10A4C0000A2201239030EEF7EFF8201C0B990622A8 -:10A4D0000323A030EEF7E8F8201C0C991A22012380 -:10A4E000B030EEF7E1F8201C0D9914220123C030A2 -:10A4F000EEF7DAF8201C0E9917220123D030EEF780 -:10A50000D3F8201C0F9916220123E030EEF7CCF887 -:10A51000201C109915220123F030EEF7C5F8601CBD -:10A52000119910220123FF30EEF7BEF8201C1130E4 -:10A53000129900220123FF30EEF7B6F8201C2130DB -:10A5400013991E220123FF30EEF7AEF8201C70BDD8 -:10A5500010B5041C006800F0B5FA201C10BD08B549 -:10A560000A1C002100F065FE08BD10B5041C086837 -:10A57000206000F09DFA201C10BD08B50368998882 -:10A58000981D5B885943FFF7EAFF08BD10B5041C0E -:10A590000023EDF751FC201C10BDF0B5071C89B05D -:10A5A0000EA800780591079038680490468800202E -:10A5B000B24200DB82E0049CA488A34200DB7DE081 -:10A5C0000D6803956D88AC46151C65440195854260 -:10A5D00074DD039DAD885919069181426EDD002A14 -:10A5E00005DA01990291B14207DD029605E0B11A40 -:10A5F0000291614501DD61460291002B05DA069961 -:10A600000191A14206DD019404E0E11A0191A94201 -:10A6100000DD01955542D01728400025039C0634E3 -:10A62000AB4202DA61464D425D4328182118D443FB -:10A63000E41722400024049803910630A34201DD70 -:10A64000341C5C43079BA2188418002B02D1059D83 -:10A650001E1C1BE00022101C019B9A422EDA0023D4 -:10A6600002998B4207DA0399CD5C002D01D0E554A5 -:10A6700001300133F4E7059B03991B6801325B88C5 -:10A68000CB1803933B685B88E418E5E7019B9E4287 -:10A690000EDA201C029A039900F0AEFD2B68039A93 -:10A6A0005B880136D31803933B685B88E418EDE7B9 -:10A6B000D843C0171840029B4343181C09B0F0BD93 -:10A6C00010B518C96210E10701D58158CB58801820 -:10A6D000984710BD10B5041CEDF748FD201CEEF79F -:10A6E00083F9201C10BD70B5051C041C74350121B4 -:10A6F000281CEDF767FC221C5A3213780133DBB2B9 -:10A700001370E17901318B4225D10023261C13708F -:10A71000626D58360221525E33882021934205DA59 -:10A72000201C19B25430FEF732FF011CE2790023DD -:10A73000281CEDF7F9FB626D33880221525E9342CB -:10A7400007DD231C00224C331A70201CEDF70CFE91 -:10A7500001E00133338070BD70B5051C061CC26D6D -:10A7600060350221525E2B88041C743620219342EE -:10A7700004DA19B25C30FEF70AFF011C0022301C1B -:10A78000131CEDF7D1FBE26D2B880221525E934240 -:10A7900007DD231C00224C331A70201CEDF7E4FD6A -:10A7A00001E001332B8070BD73B5041C061C251C11 -:10A7B0007436301C6835FFF7E0FE0023EA5E211C8A -:10A7C000002364310093301CFFF7E7FE002804D11A -:10A7D000231C70331B78002B04D1231C6A331B7895 -:10A7E000002B07D1231C00224C331A70201CEDF7DC -:10A7F000BBFD06E02A885BB29B182B8001237034D6 -:10A80000237073BDF0B5071C0021051C041C6A37BA -:10A81000406E7956408868350023EA5E4B1D1B1A4E -:10A82000201C261C85B07030039074369A4202DCDE -:10A830000378002B22D1002A04DD494209B2301CE2 -:10A84000EDF7C0FB0023EA5E211C0023301C0093BF -:10A850006431FFF7A2FE0023FB56002B05D1221C1A -:10A860004C321370201CEDF77FFD0123039A137007 -:10A8700000222B88BA56D3182B8009E0231C002213 -:10A880004C33301C1A70FFF778FE201CEDF76CFD7E -:10A8900005B0F0BD38B5051C4C35297800292BD002 -:10A8A000021C041C503213884E3406339BB21380B2 -:10A8B00024889C4220D80023041C1380022901D143 -:10A8C000FFF711FF2B78032B02D1201CFFF744FF69 -:10A8D0002B78042B02D1201CFFF766FF2B78052B69 -:10A8E00002D1201CFFF78EFF2B78062B04D100230A -:10A8F000201C2B70EDF738FD38BD13B5827A041C8F -:10A90000042A09D1818801236846ECF793FD0023CE -:10A91000A3722033E3720AE0EDF7A6FC201CFFF7D8 -:10A92000B9FFE37A5B00E372A37A0133A37213BD2C -:10A9300008B57430FFF721FE08BD031C10B5443183 -:10A9400014C914C310BD10B58379041C1B0706D5A8 -:10A95000806800F061FA0D23E35683420CD0201C7E -:10A96000EDF7AEFE0D2001212056EEF7A9FA0822E0 -:10A97000A379A0601343A371002010BD80210CC8EF -:10A980009B1A09069B080B4313607047031C70B5A4 -:10A990008208980702D1181E01D137E00132541CF9 -:10A9A00072B621C9A84219D20368002B13DA5B00E2 -:10A9B0005B08990041180E68002E01DAA94202D303 -:10A9C000A34208D30DE08021760076089B19090682 -:10A9D00019430160EDE79B00C018E3E762B6002071 -:10A9E00014E00232934203D992008218954204D8AF -:10A9F00003685B005B08036006E080211B1B0906FF -:10AA0000043A0B431360046062B6043070BDF7B5BE -:10AA10001D1C08AB1B88041C1030161C0F1C019356 -:10AA2000ECF7EAFC6A460023928827806680A560DE -:10AA3000201CE360A280E361A361FEBD10B58388A2 -:10AA4000041C9B0702D58068EDF7CEFF201C10BDCB -:10AA50007FB584690192051C6B4600910122002C90 -:10AA60000DD102AC221C03CB03C20C20EDF798FFE2 -:10AA7000061C02996268FEF7EAFCAE6114E0A16868 -:10AA8000002902D001320C1CF9E7092A0CDC02ADC6 -:10AA90002A1C03CB03C20C20EDF782FF061C02998F -:10AAA0006A68FEF7D4FCA6607FBD0323038070476D -:10AAB00010B5041CEDF7B4FF002802D1238802333F -:10AAC000238010BD10B5041CEDF7AAFF002808D1A3 -:10AAD0002388023B9BB22380012B02D1201CEDF77F -:10AAE00083FF10BD37B50D1C131C011D44692A1CC2 -:10AAF0000068A04737BD026808B594460A6800237D -:10AB0000944507D104300431102200F066FB434223 -:10AB10004341DBB2181C08BD704780235B05F7B5C5 -:10AB20001A695B690F1C133B1C1C5443211C061C37 -:10AB3000EDF78CFF231C251C483301933B1BEA587F -:10AB4000291C301CEDF7C4FF019B04359D42F5D153 -:10AB50000020FEBD10B5041CEDF7D6FF201CEDF75C -:10AB600043FF201C10BD704710B5041CEDF73CFFDF -:10AB7000201C10BD031CC068002804D0426ADA60A3 -:10AB80001A7A013A1A72704737B5041CE568002D2D -:10AB90001ED0EA78012A06D0022A09D1201C1830DA -:10ABA000EEF736F80AE0201C1430EEF70FF805E057 -:10ABB00092B268461E210123ECF73CFCE3689D42FB -:10ABC000E4D1201CFFF7D6FF281CEDF70DFFDDE7D1 -:10ABD00037BD0023036070470023037070471FB523 -:10ABE000041C009202A80822019300F005FB039ABE -:10ABF000029B5010D20701D52258D3582018009933 -:10AC0000019A98471FBD0289031C8A4202D18079AC -:10AC1000012305E0428900208A4202D1987902236B -:10AC2000184070470289031C8A4202D180790423AC -:10AC300005E0428900208A4202D198790823184011 -:10AC400070470289031C8A4202D18079102305E0F3 -:10AC5000428900208A4202D1987920231840704707 -:10AC6000038910B58B4207D183790124002A01D0D2 -:10AC7000234300E0A343837143898B4207D1837947 -:10AC80000221002A01D00B4300E08B43837110BDE9 -:10AC9000038910B58B4207D183790424002A01D09F -:10ACA000234300E0A343837143898B4207D1837917 -:10ACB0000821002A01D00B4300E08B43837110BDB3 -:10ACC000038910B58B4207D183791024002A01D063 -:10ACD000234300E0A343837143898B4207D18379E7 -:10ACE0002021002A01D00B4300E08B43837110BD6B -:10ACF000F0B587B0009107898DB2041CBD4200D128 -:10AD000047896B465E88022E25D0052E11D0012E74 -:10AD100073D1201C291C321CFFF7A2FF201C391CF8 -:10AD2000FFF771FF002868D0A18804A8321C331CEB -:10AD30000EE0201C291C0122FFF7AAFF201C391C51 -:10AD4000FFF770FF002858D0321C0123A18804A807 -:10AD5000ECF770FB51E0201C391CFFF754FF002872 -:10AD600016D0321CA188012302A8ECF763FB201C3B -:10AD7000291CFFF757FFA68800282ED0201C391C5D -:10AD8000FFF750FF002828D004A8311C042227E038 -:10AD9000201C291CFFF755FF00280ED1267B012E11 -:10ADA0000BD1201C291CFFF73DFF002821D0291CB6 -:10ADB000042204A8331CECF73DFB201C291C0022B4 -:10ADC000FFF74EFF201C291C0022FFF761FF201C0B -:10ADD000291C0022FFF774FF0FE0311C032204A896 -:10ADE0000123ECF727FB201C391C0122FFF768FF29 -:10ADF000E3E704A8291C0322DCE707B0F0BD0173D8 -:10AE0000704738B50D1C0121041C41560278281CDE -:10AE1000EEF72AF8657038BD407840B2704710B53B -:10AE2000041C0068FFF74EFE201C10BDF8B5D4438B -:10AE3000E4171440071CA01D1E1C0D1CEDF7B0FDEF -:10AE40003860FFF732FE3B681C7138684680002D81 -:10AE500004D00530291C221C00F0CEF9F8BD0A1CD4 -:10AE6000002110B5041C0B1CFFF7E0FF201C10BDD7 -:10AE700051DF704761DF7047F8B5061C0F1C041CDA -:10AE80001518AC4206D0BB1B195D201CEEF7A4F9C7 -:10AE90000134F6E7F8BD08B5FDF784FE08BD08B536 -:10AEA000FDF785FE08BD08B5C36A011C002B04D15F -:10AEB0008369002B06D0984704E08069002801D000 -:10AEC0001C31984708BD10B5041CEEF7F5F9201C9D -:10AED00000F07DF8201C10BD10B5041CEEF7FAF947 -:10AEE000201C00F074F8201C10BD08B50430FEF7DB -:10AEF00049F808BD08B50A1C031C02211C30002AB1 -:10AF000004D09A6300220221DA640132EEF724FDB4 -:10AF100008BD836980681B681840431E98417047CC -:10AF200008B54369011C002B04D10368002B06D02F -:10AF3000984704E00068002801D00431984708BD14 -:10AF400008B5012903D0022904D1383000E02030AF -:10AF5000FFF7E6FF08BDF0B585B01C1C0AAB061C68 -:10AF60000F1C03921D78EEF7FDF901235D4000955B -:10AF7000231C301C391C039AFDF796FF201A441E2F -:10AF8000A04105B0F0BDF0B585B01C1C0AAB061C95 -:10AF90000F1C03921D78EEF7E5F901235D40009543 -:10AFA000231C301C391C039AFDF73AFF201A441E5B -:10AFB000A04105B0F0BD0023CB565A1C05D08342FA -:10AFC00001D1486802E00C31F5E7181C704708B55C -:10AFD000F6F7B2F808BD08B5031C081C191CF5F7F4 -:10AFE0005BFD08BD011C002008B5021C031CFDF719 -:10AFF0000CFD08BD08B500210A22F7F72DF808BDA1 -:10B00000F7B58A89051C0C1C13075ED44B68002B0E -:10B0100002DC0B6C002B1ADDE76A002F17D000232F -:10B020002E682B6080235B011A4001D0626D15E011 -:10B03000281C216A0123B847021C431C0ED12B682F -:10B04000002B0BD01D2B01D0162B02D12E6000201F -:10B050005EE04021A3890B43A38159E0A3895B07EC -:10B0600006D56368D21A636B002B01D0236CD21A09 -:10B070000023281C216AE76AB847A389421C06D12D -:10B080002A68002A03D01D2A01D0162A19D10022CD -:10B09000626022692260DB0405D5431C02D12B6863 -:10B0A000002B00D16065616B2E600029CFD0231C7E -:10B0B0004433994202D0281CF6F748F80020606318 -:10B0C00026E040221343A38122E00F69002FBED067 -:10B0D0000B680F60DB1B01930023920700D14B69C3 -:10B0E000A360019B002BB2DD281C216A3A1C019B46 -:10B0F000A66AB047002806DC40220120A38940420E -:10B100001343A38104E0019B3F181B1A0193E8E756 -:10B11000FEBD70B568254B1E5D430E1C291C7431A5 -:10B12000F6F75AF8041E08D000212A1C0160466078 -:10B130000C30A060683200F07CF8201C70BD7047B5 -:10B14000704708B5F5F7D8FE08BDF7B54830041CC0 -:10B1500000260191002C12D0A5686768013F0CD42D -:10B16000AB89012B07D90E22AB5E013303D0281C1B -:10B17000019B984706436835F0E72468EAE7301CEE -:10B18000FEBDF7B5041C071C002601914834002CB5 -:10B1900016D06368A5680093009B013B00930DD413 -:10B1A000AB89012B08D90E22AB5E013304D0381CC9 -:10B1B000291C019B984706436835EDE72468E6E7BC -:10B1C000301CFEBDC9B28218904204D003788B4275 -:10B1D00002D00130F8E70020704730B500249442D7 -:10B1E00008D0035D651C0C5DA34201D0181B02E072 -:10B1F0002C1CF4E7002030BD002310B5934203D08F -:10B20000CC5CC4540133F9E710BD10B5814208D2BB -:10B210008B18984205D29B1A013A09D3995C815444 -:10B22000FAE70023934203D0CC5CC4540133F9E71E -:10B2300010BD031C8218934202D019700133FAE743 -:10B240007047936810B5013B9360002B05DA946951 -:10B25000A34208DBCBB20A2B05D01368581C106040 -:10B260001970C8B201E0F6F7C5FF10BDF8B5061CAD -:10B270000F1C141CD518AC4208D02178301C3A1C85 -:10B28000FFF7DFFF0134431CF5D100E00020F8BDDB -:10B29000F7B5171C01930A698B6800900C1C934248 -:10B2A00000DA131C221C3B6043321278002A01D0C2 -:10B2B00001333B6023689B0602D53B6802333B6049 -:10B2C000062523681D401ED0231C43331B785A1EBD -:10B2D0009341226892061CD53020E1184031C87095 -:10B2E000211C5A1C45310978A21840320233D17012 -:10B2F0000FE0221C0123009801991932089EB047E3 -:10B30000431C0ED00135E3683A689B1A9D42F0DB7E -:10B31000DAE7221C009801994332089DA847431C94 -:10B3200002D10120404220E006232068E1683A680B -:10B3300003400025042B03D18D1AEB43DB171D407E -:10B34000A3682269934201DD9B1AED180027AF42E2 -:10B350000ADA221C0123009801991A32089EB0478C -:10B36000431CDED00137F2E70020FEBD092208B5FC -:10B370008189031C0A400020092A02D1181CF5F714 -:10B3800043FC08BDF0B50A785E2A02D04B1C0024AD -:10B3900002E001244A788B1C011C451CFF350C700F -:10B3A0000131A942FBD1002A01D1581E1CE0012124 -:10B3B0000C1BE7B2875419785E1C2D2906D05D2935 -:10B3C0000FD000290FD00A1C331CF2E75D785D2DE9 -:10B3D000F9D09542F7DB023301328754AA42FBDBF6 -:10B3E000E9E7301C00E0181CF0BD08B54A424A41AC -:10B3F00080235200DB00F6F789FC08BD002070476F -:10B4000008B50E23C95EF6F7D5FF08BD021CC9B208 -:10B410001378002B03D08B4204D00132F8E7181CBC -:10B42000002900D1101C704702780B78002A03D045 -:10B43000013001319A42F7D0D01A70470023C25C24 -:10B440000133002AFBD1581E7047002330B59A42C1 -:10B450000DD0013AC45CCD5CAC4202D1934202D122 -:10B46000251C631B03E00133002CF3D1F8E7181C03 -:10B4700030BD0B7830B5722B0ED0772B07D0612BF7 -:10B480000ED182258420AD00012340001BE0C025A1 -:10B490000123ED00082016E0002504202B1C12E0FB -:10B4A0001623036000201BE0622C11D0782C12D0F0 -:10B4B0002B2C08D10F3CA0430C3C20430D3CA34354 -:10B4C0001C1C0223234301310C78002CECD105E035 -:10B4D00080246402F6E780242401F3E72B43136001 -:10B4E00030BDF8B5061C0C1C151C002904D1111C1C -:10B4F000F5F772FE041C18E0002A03D1F5F726FECA -:10B500002C1C12E000F06FF8A8420ED2301C291C4F -:10B51000F5F762FE071E07D0211C2A1CFFF76CFE00 -:10B52000301C211CF5F712FE3C1C201CF8BD38B560 -:10B53000141C4B1C02D10120404234E0938920228C -:10B540009343626BA381CDB26368002A0FD0A26BD4 -:10B55000934206DA2368013B23601D706368013360 -:10B560001FE0211CF6F708FE0028F3D0E3E721696D -:10B570002268002909D08A4207D9511E0878A842BA -:10B5800003D10133216063600DE02364231C443345 -:10B5900063630323A363231C4633E2631D702360AC -:10B5A0000123281C636038BD10B50C1C496B0029B1 -:10B5B0000ED0231C4433994201D0F5F7C7FD00207B -:10B5C000236C60636360834202D0E36B236009E015 -:10B5D000236920222360002301206360A389404265 -:10B5E0001343A38110BD0B1F1A68101F002A04DA31 -:10B5F000891804390B68D01804387047F8B5C0466C -:10B60000F8BC08BC9E467047F8B5C046F8BC08BCFC -:10B610009E4670470000000000000000000000008F -:10B6200071500100498A02000D8A020000000000EA -:10B6300000000000000000007B8A0200778A020000 -:10B64000A18A0200CB8A0200C78A0200CF8A0200C8 -:10B65000D38A02000000000000000000138C0200EA -:10B66000138C0200FCFFFFFF000000000000000040 -:10B6700000000000000000000000000000000000CA -:10B680000000000000000000138C02000000000019 -:10B690000000000000000000258B0200558B020016 -:10B6A0000000000000000000138C0200138C020058 -:10B6B000138C0200138C0200138C0200138C020006 -:10B6C000BD8B020000000000000000000000000030 -:10B6D0000000000000000000138C0200138C020028 -:10B6E000138C0200138C0200138C0200138C0200D6 -:10B6F000BD8B02000000000000000000FCFFFFFF07 -:10B700000000000000000000000000000000000039 -:10B710000000000000000000196001006D900200B0 -:10B72000000000000000000075610100B961010027 -:10B7300097AE02009FAE0200C0FFFFFF00000000B6 -:10B740007B8A0200778A0200A18A0200CB8A02006B -:10B75000C78A0200CF8A0200D38A020099610100E1 -:10B76000CB6101007992010069920100BCFFFFFFEB -:10B7700000000000A9610100DD610100000000007F -:10B780000000000000000000716C010085900200C4 -:10B7900087900200356D0100AF91020000000000AB -:10B7A000000000000000000083900200E992020007 -:10B7B000CF910200B96D0100D79102000000000096 -:10B7C000000000000000000083900200359302009A -:10B7D0002793020041700100159302000000000051 -:10B7E00000000000000000008390020015A302008A -:10B7F000A9A202000979010097A20200000000003E -:10B800000000000000000000839002008D7D010018 -:10B81000C17C01002FA4020031A40200000000003E -:10B8200000000000000000008983010085900200F4 -:10B83000879002006D810100D5A602000000000083 -:10B8400000000000000000008390020085900200CC -:10B85000879002008D9002008F900200000000008F -:10B86000000000000000000083900200298B01000E -:10B8700087900200098B010055AB02000000000018 -:10B8800000000000000000008390020089AB02006D -:10B890008790020067AB020069AB02000000000065 -:10B8A000000000000000000083900200859002006C -:10B8B000879002008B9002009B9002000000000025 -:10B8C00000000000000000002D610100ED6101009A -:10B8D00097AE02009FAE0200C0FFFFFF0000000015 -:10B8E0007B8A0200778A0200A18A0200CB8A0200CA -:10B8F000C78A0200CF8A0200D38A02005561010084 -:10B90000FF6101007992010069920100BCFFFFFF15 -:10B9100000000000656101001162010000000000EC -:10B920000000000000000000B9920100C7AE020054 -:10B93000A7AE0200000000000000000000000000B0 -:10B94000D5920100D9AE0200E2652F227F2B7A3C0E -:10B95000075C143326A6813CBDCBF07A8807703C87 -:10B96000075C143326A6913C4FBB610567ACDD3FF5 -:10B97000182D4454FB21E93F9BF681D20B73EF3F16 -:10B98000182D4454FB21F93F000000000000304313 -:10B9900000000000000030C30000000000000000B4 -:10B9A0000A000000D10200006C2403006F24030091 -:10B9B000792403007D2403008124030093240300E1 -:10B9C0009F240300A9240300B6240300C12403001C -:10B9D000CB240300D8240300E3240300F024030055 -:10B9E000FB24030006250300112503001C2503008A -:10B9F0002B250300362503004725030052250300AD -:10BA0000612503006D2503007825030082250300CE -:10BA10008D2503009B250300A9250300B7250300FE -:10BA2000C1250300CB250300D6250300E025030034 -:10BA3000EE250300F8250300032603000C2603006F -:10BA4000152603001E2603002726030030260300C8 -:10BA50003F2603004D2603005826030060260300FE -:10BA60006C260300742603007C2603008326030053 -:10BA70008A26030090260300962603009D260300D5 -:10BA8000A3260300A9260300AF260300B526030062 -:10BA9000BB260300C1260300C7260300CE260300F1 -:10BAA000D5260300DB260300E2260300E926030077 -:10BAB000ED260300F2260300F7260300FE2603000E -:10BAC000042703000C270300142703001A27030090 -:10BAD00020270300272703002E2703003527030014 -:10BAE0003D270300432703004A2703005127030093 -:10BAF00059270300612703006C2703007727030001 -:10BB00008727030097270300A9270300BA2703000C -:10BB1000CB270300D9270300E4270300F027030005 -:10BB200002280300162803002B2803003B280300EB -:10BB3000492803005C280300692803007D280300CE -:10BB40008828030096280300A4280300B0280300D7 -:10BB5000C6280300D0280300E0280300EF280300D4 -:10BB6000FD2803000A290300162903002A290300DF -:10BB7000372903004B2903005A29030061290300D8 -:10BB8000692903007029030079290300842903002F -:10BB900092290300982903009E290300A429030089 -:10BBA000AB290300B3290300B9290300C12903000D -:10BBB000C8290300D4290300DC290300E729030076 -:10BBC000ED290300FB2903000A2A0300112A0300C0 -:10BBD000172A0300202A03002C2A0300332A03001B -:10BBE0003A2A0300432A03004B2A0300582A030081 -:10BBF000622A03006C2A0300762A0300802A0300CD -:10BC0000872A03008D2A0300932A0300982A030041 -:10BC10009E2A0300AB2A0300B82A0300BF2A0300B0 -:10BC2000C52A0300CC2A0300D52A0300DB2A03001F -:10BC3000E12A0300E72A0300F12A0300FE2A030099 -:10BC4000052B03000B2B0300112B0300182B030003 -:10BC50001E2B0300252B03002B2B0300332B03008B -:10BC60003B2B0300422B0300492B0300542B030002 -:10BC70005C2B0300652B0300742B03007A2B03005D -:10BC8000822B0300882B0300932B03009B2B0300C4 -:10BC9000A22B0300AA2B0300B22B0300B82B030036 -:10BCA000BE2B0300C42B0300CB2B0300D22B0300BD -:10BCB000DA2B0300E12B0300EC2B0300F22B030033 -:10BCC000FA2B0300012C03000B2C0300182C03009B -:10BCD000212C03002A2C0300332C03003B2C0300EF -:10BCE000422C03004A2C0300522C03005B2C03005F -:10BCF000632C03006C2C0300752C03007C2C0300C8 -:10BD0000832C03008B2C0300942C03009D2C030038 -:10BD1000A62C0300AC2C0300B62C0300BD2C0300A2 -:10BD2000C52C0300CE2C0300D62C0300DF2C03000F -:10BD3000EC2C0300F72C0300012D03000D2D030054 -:10BD40001A2D0300222D03002A2D0300342D030099 -:10BD50003E2D0300482D0300522D03005C2D0300EF -:10BD6000672D03006F2D03007E2D0300882D030037 -:10BD7000942D03009F2D0300AB2D0300B62D03006F -:10BD8000BF2D0300C72D0300D12D0300DE2D0300BE -:10BD9000F22D0300012E0300172E0300242E0300B2 -:10BDA0002F2E03003C2E0300422E0300592E0300C9 -:10BDB000772E03007F2E03008B2E0300922E0300AC -:10BDC000962E03009B2E0300A22E0300A82E030034 -:10BDD000AE2E0300B42E0300BA2E0300C02E0300C3 -:10BDE000C72E0300CE2E0300D52E0300DD2E030048 -:10BDF000E42E0300EF2E0300F62E0300FD2E0300B9 -:10BE0000052F0300102F0300182F0300202F03001D -:10BE1000282F03002F2F0300372F03003F2F03008D -:10BE2000492F0300532F03005E2F03006A2F0300E6 -:10BE3000762F0300822F0300902F0300B32F0300FF -:10BE4000BE2F0300C92F0300D62F0300E32F0300EA -:10BE5000EF2F0300FB2F0300063003001030030018 -:10BE60001730030023300300293003003030030073 -:10BE700039300300443003004C30030055300300D8 -:10BE80005E30030068300300773003007E3003002B -:10BE90008F300300A1300300AA300300B430030048 -:10BEA000BB300300C7300300D0300300DE30030096 -:10BEB000E9300300EE300300F830030002310300E4 -:10BEC0000B31030017310300223103002E31030030 -:10BED000353103003D3103004B310300563103007F -:10BEE0005E31030066310300753103007D310300CC -:10BEF0008B310300923103009C310300AA3103000F -:10BF0000B1310300BC310300D1310300EC31030037 -:10BF1000FF3103000E3203001E3203002C320300F7 -:10BF20003B3203004F3203007032030091320300B2 -:10BF30009E320300AB320300B2320300B932030079 -:10BF4000C0320300C7320300CE320300D5320300F3 -:10BF5000DC320300E3320300EA320300F132030073 -:10BF6000F9320300013303000933030011330300E6 -:10BF70001933030021330300293303003133030055 -:10BF800039330300493303005133030059330300AD -:10BF9000613303006A330300733303007F3303000C -:10BFA0008B33030098330300A6330300B13303003F -:10BFB000BE330300CA330300D2330300E03303006F -:10BFC000E8330300EE330300F633030001340300CB -:10BFD00009340300123403001E3403002634030026 -:10BFE00031340300373403003D340300423403008E -:10BFF0004C340300553403005E34030067340300FF -:10C000007034030079340300823403008B3403005E -:10C01000943403009D340300A7340300B1340300BB -:10C02000BB340300C6340300D0340300DB34030008 -:10C03000E5340300F0340300FA340300053503004F -:10C0400010350300203503002D350300373503007C -:10C0500047350300503503005F35030068350300A2 -:10C060006E3503007F3503008E3503009E350300D7 -:10C07000AA350300B1350300BA350300C335030008 -:10C08000CC350300DA350300E1350300E935030060 -:10C09000F4350300003603000E36030016360300A5 -:10C0A0001E36030028360300303603003B360300FB -:10C0B00043360300503603005D3603006F3603003D -:10C0C00080360300933603009D360300A436030038 -:10C0D000AD360300B5360300BE360300C536030097 -:10C0E000CC360300D3360300DA360300E83603000B -:10C0F000FA360300FF360300053703000D3703004F -:10C100001637030027370300323703003D3703009B -:10C110004A37030058370300663703007E370300B1 -:10C120008E370300963703009E370300A6370300BF -:10C13000B3370300C5370300D2370300E0370300ED -:10C14000EF370300F4370300FB3703000238030026 -:10C150000A38030014380300203803002B3803008A -:10C1600030380300353803003A3803004238030002 -:10C17000543803005E380300683803007838030041 -:10C180008438030098380300AD380300BB3803003F -:10C19000C1380300C8380300CC380300D23803008C -:10C1A000DB380300E3380300EF380300FA380300FC -:10C1B00002390300083903000F3903001B3903005B -:10C1C000273903002D390300353903003D390300B9 -:10C1D00047390300523903005A390300623903001A -:10C1E0006E3903007C390300863903008D39030062 -:10C1F00099390300A3390300AA390300B0390300B9 -:10C20000BD390300C8390300D2390300DE39030009 -:10C21000E7390300F2390300FE390300083A03004E -:10C220000C3A0300113A0300183A03001F3A0300C6 -:10C23000243A0300293A0300303A0300373A030056 -:10C240003D3A0300433A0300493A03004F3A0300E2 -:10C25000563A03005B3A0300603A0300673A030072 -:10C260006E3A0300733A03007A3A0300803A0300FF -:10C27000863A03008A3A03008F3A0300953A030096 -:10C280009D3A0300A53A0300AC3A0300B33A030019 -:10C29000BA3A0300BF3A0300C63A0300CD3A03009E -:10C2A000D23A0300D93A0300E03A0300E73A030028 -:10C2B000EC3A0300F33A0300FA3A0300013B0300AF -:10C2C000083B03000E3B0300143B03001A3B030032 -:10C2D000203B0300263B03002A3B03002F3B0300C7 -:10C2E000373B03003E3B0300453B03004A3B030052 -:10C2F0004F3B0300563B03005B3B0300623B0300E4 -:10C30000693B03006F3B0300753B03007B3B03006D -:10C31000813B0300873B03008D3B0300933B0300FD -:10C320009A3B03009F3B0300A63B0300AB3B03008B -:10C33000B23B0300B83B0300BE3B0300C43B030019 -:10C34000CA3B0300D03B0300D63B0300DC3B0300A9 -:10C35000E33B0300E73B0300EC3B0300F23B03003D -:10C36000FA3B0300013C0300083C03000F3C0300C0 -:10C37000143C03001A3C0300203C0300263C03004D -:10C380002C3C0300323C0300363C03003B3C0300E2 -:10C39000423C0300493C0300503C0300553C030071 -:10C3A0005C3C0300633C0300683C03006F3C0300FB -:10C3B000753C03007B3C0300813C0300873C030089 -:10C3C0008B3C0300923C0300983C03009E3C03001E -:10C3D000A43C0300B33C0300BA3C0300C13C03008F -:10C3E000CC3C0300D33C0300DC3C0300E33C0300F3 -:10C3F000E83C0300ED3C0300F73C0300023D030072 -:10C400000D3D0300133D03001A3D0300283D0300CA -:10C410002E3D0300353D03003C3D0300433D03003A -:10C420004A3D03005B3D0300663D0300713D030090 -:10C430007A3D0300883D03008F3D03009B3D0300D0 -:10C44000A53D0300AE3D0300B83D0300C03D030021 -:10C45000CD3D0300DA3D0300E33D0300EE3D030064 -:10C46000F33D0300FB3D0300053E0300103E0300C7 -:10C470001A3E0300243E03002D3E0300383E030015 -:10C48000423E03004C3E0300533E0300603E030067 -:10C49000693E03006F3E03007B3E0300823E0300C3 -:10C4A0008B3E0300933E03009B3E0300A33E03002C -:10C4B000AF3E0300B73E0300C03E0300CD3E030085 -:10C4C000DD3E0300E73E0300F03E0300F83E0300BC -:10C4D000023F03000A3F0300163F0300203F030012 -:10C4E000283F0300373F0300443F030084D8020085 -:10C4F00002000200D105000080CA02000000000016 -:10C50000080000004D3103003CFF02000200000063 -:10C51000560100001CC502009CC50200BCDC0200E4 -:10C5200003000000030000000F00000001000000F5 -:10C530006E000000B6050000B60900007CC50200D0 -:10C54000BE09000068C50200CE09000008C502004F -:10C5500096090000F8C40200760900008E09000068 -:10C56000D6090000ECC40200BCDC0200030000009D -:10C5700007000000090000000100000080CA02005E -:10C580000000000005000000513F030064CE0200DF -:10C590003F0000000700000030C502003801000025 -:10C5A0003601000028D90200B60000008CC5020048 -:10C5B00064CE020017000000020000008CC60200DA -:10C5C00084D8020004000200A907000084D80200F9 -:10C5D000040002003D0700006CEB0200F4000000C4 -:10C5E000000000000000000000000000000000004B -:10C5F000000000000000000000000000D533020031 -:10C600003B2D0200000000000000000000000000C0 -:10C61000000000006CEB02007E0000002D0800000E -:10C620005D2D020000000000150700001109000048 -:10C63000000000000D0B00001508000000000000C5 -:10C64000192D02000000000000000000B0C502002B -:10C650006CEB0200820000002D080000B10B00000E -:10C660000000000015070000110900000000000094 -:10C670000D0B00001508000000000000192D02003D -:10C680000000000000000000B0C502005E060000CF -:10C69000C0C5020086060000CCC502006CEB02009B -:10C6A0009E0000003D0E0000CF2E020000000000A2 -:10C6B000150C0000510F0000000000002D100000BC -:10C6C000F90E000000000000000000000000000063 -:10C6D000000000006CC70200DA0000000302000046 -:10C6E00074E00200DB000000010200000000000016 -:10C6F0005E06000088C702000E06000048C7020060 -:10C7000016060000A0C702007E060000B8C702009F -:10C71000860600007CC702008E060000C4C7020027 -:10C720009E06000094C702002E02000054C70200BB -:10C730009606000060C70200DE060000D0C70200B7 -:10C74000A6060000ACC7020084D802000200010067 -:10C75000150D000084D80200020002009D0D0000AB -:10C7600084D80200040002001D0E000064CE020006 -:10C770005F0000000B000000F0C6020084D8020039 -:10C7800004000200850E000084D8020004000200AC -:10C79000750C000084D8020006000300C10C0000E4 -:10C7A00084D8020002000100212F020084D8020078 -:10C7B0000300FFFF3D0D000084D8020004000200CA -:10C7C000A92E020084D8020004000400752E020085 -:10C7D00084D80200020001003D0C00001E2303006B -:10C7E000C6200300482003002C230300EE1F030093 -:10C7F000AC210300B62103000C220300CE1F03006E -:10C80000881F0300462203009621030060220300D4 -:10C81000B4220300E0200300FA220300741F030087 -:10C82000D8230300482103007E220300821F030057 -:10C8300058220300982203002C200300B02103009B -:10C8400072230300E0220300D41F03004C200300E6 -:10C85000B423030088230300C81F03001C21030026 -:10C8600020240300F6220300CA2003003E23030015 -:10C870000E210300A422030010220300AC200300B9 -:10C880000822030052200300B01F0300AA22030065 -:10C890004220030080210300F82103006C230300E1 -:10C8A0008E2003007C1F0300D4220300D02003004D -:10C8B000C02103006C220300B22003008620030085 -:10C8C00076210300062303003A220300D22303004B -:10C8D000CC23030018200300122003005E20030075 -:10C8E00006200300B41F0300E82003004A230300CE -:10C8F000AE2203000C2303009E1F0300A8210300A7 -:10C90000322003000C240300F62003006A200300F9 -:10C91000DA20030080230300CC210300BA200300A7 -:10C920005A21030018240300EA2303002A220300EB -:10C93000E01F030038230300DA1F03003223030043 -:10C94000662103006823030092220300BA23030038 -:10C95000D6210300F22103005223030074200300B8 -:10C9600000230300942003008422030044230300D7 -:10C97000EC210300F823030078220300A221030026 -:10C98000FE21030002220300F0220300C222030062 -:10C99000282103009E220300BC220300E0210300A3 -:10C9A000DA2203003C210300941F0300402203000D -:10C9B0004E2103007E2003008A220300AC1F0300E7 -:10C9C000262303009A23030072220300E61F0300BC -:10C9D0009A2003002E210300BA1F03000C2003003D -:10C9E0007021030036210300C0230300C623030087 -:10C9F000EE200300142103005E2103003C2003000D -:10CA00008E1F030084210300C8220300CE220300EE -:10CA1000F41F0300FA1F030000200300E6210300B7 -:10CA2000342203007A21030066220300542103000C -:10CA3000422103005C23030022210300C21F0300E4 -:10CA4000E42203008A21030078230300F223030079 -:10CA500006210300C0200300642003009C21030082 -:10CA6000DE230300E4230300C6210300A02003000B -:10CA70001E2003002620030062230300EA22030095 -:10CA80006CEB02003E000000F9170000C5BE00007C -:10CA900000000000C117000079CD00000000000078 -:10CAA000BD1900009D170000000000006F58020033 -:10CAB00000000000000000007CCB0200E606000041 -:10CAC000D0EE0200EE06000064ED02008E060000CB -:10CAD000C8ED0200F6060000E8EE0200AE06000017 -:10CAE000ECED0200FE0600000CEF0200060700005D -:10CAF00080ED02000E070000E0ED020016070000C6 -:10CB0000C4EE0200B60600003CEF0200BE060000C4 -:10CB100098ED0200C60600008CED0200CE06000073 -:10CB200018EF02001E070000BCED02007E060000A8 -:10CB3000A4ED02002607000030EF02002E070000DF -:10CB400024EF020036070000F4EE02003E0700006A -:10CB5000B0ED020046070000DCEE02004E070000C8 -:10CB6000F8ED02005607000000EF02005E0700002B -:10CB700084EF020066070000D4ED020064CE0200DC -:10CB8000C700000018000000BCCA02006CEB0200E5 -:10CB90008E00000000000000A5330200000000002D -:10CBA0000000000000000000000000000000000085 -:10CBB000D53302008D1A00000000000000000000C4 -:10CBC000000000000000000084D802000200010004 -:10CBD000D5330200BCDC020001000000BCDC020016 -:10CBE00084D8020004000200312100008D340200CC -:10CBF000C3340200992C00005D340200533402005B -:10CC0000493402009128000084D80200020001008B -:10CC1000A1440000B94500005D460000000000008E -:10CC20000000000064CE02004F0000000900000078 -:10CC3000DCCC020084D80200020001007D2D00003F -:10CC40006CEB0200B20200000000000000000000D7 -:10CC500000000000000000000000000000000000D4 -:10CC600000000000000000000000000000000000C4 -:10CC700014CC02000000000024CC020084D8020082 -:10CC800002000200B12D00006CEB0200B3020000B4 -:10CC90000000000000000000000000000000000094 -:10CCA0000000000000000000000000000000000084 -:10CCB000000000000000000024CD02000000000081 -:10CCC00024CC020084D8020008000400A12D00003A -:10CCD00084D8020002000100912D000066060000C9 -:10CCE000D0CC0200C609000008CC0200B60000004B -:10CCF000C8CB0200BE000000C4CC0200A615000094 -:10CD000034CC020076050000C0EF0200AE14000033 -:10CD100090EF0200A6140000B4EF0200DE05000050 -:10CD20009CEF0200B94500005D46000000000000D5 -:10CD3000010000003CCD0200010000006CEB02008D -:10CD40008100000091380000AD38000000000000B4 -:10CD5000A7360200D33602000000000000000000E9 -:10CD600000000000000000000000000000000000C3 -:10CD700000000000000000003CCD020000000000A8 -:10CD80006CEB0200EF00000000000000000000005B -:10CD9000E336020000000000000000000000000078 -:10CDA0000000000000000000000000000000000083 -:10CDB0000000000000000000000000006CEB02001A -:10CDC000F40000000000000000000000000000006F -:10CDD0000000000000000000000000000000000053 -:10CDE000D53302004F3702000000000000000000B1 -:10CDF000000000000000000084D8020004000300CE -:10CE0000F5370200F9490300044A03000E4A030003 -:10CE1000BCDC02000100000064CE020084D80200E5 -:10CE200002000100793802006CEB0200790000007A -:10CE30009D3D00002941000000000000313E00003F -:10CE4000F13E00000000000079410000053D0000B7 -:10CE500000000000000000000000000010CE0200F2 -:10CE600034CF02006CEB0200880000009D3D000002 -:10CE70002941000000000000313E0000F13E0000AA -:10CE80000000000079410000053D000000000000A6 -:10CE900000000000000000000000000034CF02008D -:10CEA00084D80200020001009140000084D80200F2 -:10CEB00002000100A93E00000E060000A0CF020003 -:10CEC000160600001CCE02001E0600008CCF0200D9 -:10CED0002606000000D002002E06000028CF020027 -:10CEE00036060000A0CE02002E020000E8CF0200AD -:10CEF0003E060000ACCE020046060000F8CD02005F -:10CF00004E060000F4CF02005606000094CF020047 -:10CF1000D600000094DD0200DE000000A0DD02006B -:10CF2000E6000000ACDD020084D80200020001002F -:10CF30007540000064CE0200770000000E00000083 -:10CF4000B8CE02006CEB0200F4000000000000000C -:10CF500000000000000000000000000000000000D1 -:10CF60000000000000000000D5330200BB370200C3 -:10CF700000000000000000000000000000000000B1 -:10CF800084D8020004000300E54000006CEC0200BD -:10CF900080CF020084D8020002000100C93C0000DA -:10CFA00084D8020002000100293D00006CEB020061 -:10CFB000F1000000393D000000000000000000000A -:10CFC00000000000493802000000000000000000DE -:10CFD000E53C000000000000000000000000000030 -:10CFE000000000000000000084D8020004000300DC -:10CFF0001138020084D802000300FFFF893F0000BF -:10D0000084D80200040003002D3802006CEB0200FB -:10D010008F0000003148000091480000000000002F -:10D02000E54700009F3A02000000000000000000F9 -:10D0300000000000000000000000000000000000F0 -:10D0400000000000000000000000000007000000D9 -:10D05000130000002B00000059000000B300000086 -:10D060005B01000087020000CD040000F908000009 -:10D0700093100000951E00000B380000A165000011 -:10D080002DB80000D34B01007B530200652B040038 -:10D09000CF73070027460D00A59B170021E3290049 -:10D0A000A72E4A0084D80200000001006D4D000048 -:10D0B00028D90200AD020000D0D00200AF0200006B -:10D0C000B0020000B102000036010000B60200000C -:10D0D00064CE02002F0000000500000010D1020005 -:10D0E00080CA02000000000017000000D24A0300BE -:10D0F0003CFF0200050000008CD102007CD1020040 -:10D1000054D1020044D10200E0D00200BCD00200A1 -:10D110006E0000006E1500009606000070D102003F -:10D12000AE15000038D10200BE1500009CD10200EF -:10D130007615000064D1020084D8020000000000CF -:10D140002D47000080CA0200000000001D00000002 -:10D15000EA4A030080CA0200000000000300000049 -:10D16000084B030084D80200000000007553000043 -:10D1700084D80200020001008545000080CA020038 -:10D1800000000000080000004D31030080CA0200CA -:10D1900000000000080000004D31030084D80200A8 -:10D1A0000200010075470000AEC59D74CA1B0E5AEF -:10D1B00020BCBE4C00401C460000C842000020417C -:10D1C0001FB14F0A9595E62477CC2B3217B7D1388B -:10D1D0000AD7233CCDCCCC3D6CEB0200F300000021 -:10D1E0000000000000000000A55900000000000041 -:10D1F000000000000000000000000000000000002F -:10D20000000000000000000000000000000000001E -:10D210000000000084D8020004000200755B0000DA -:10D220006CEB0200F3000000015A00000000000057 -:10D2300000000000000000000000000000000000EE -:10D2400000000000D5330200915B000000000000E8 -:10D25000000000000000000068D2020084D8020034 -:10D2600002000100A15B000064CE02001F0000006C -:10D270000300000084D2020084D8020004000400ED -:10D28000415B0000660600005CD202006E060000F2 -:10D2900014D202007606000078D202006CEB020085 -:10D2A000F40000000000000000000000000000008A -:10D2B000000000000000000000000000000000006E -:10D2C000D53302006D5F0000000000000000000088 -:10D2D00000000000000000006CEB0200A000000055 -:10D2E00000000000E15F00000000000000000000FE -:10D2F000000000000000000000000000D533020024 -:10D30000E93E0200000000000000000000000000F4 -:10D310000000000084D80200040004003560000012 -:10D3200064CE0200170000000200000080D302005B -:10D330006CEB020099000000753F02008560000060 -:10D3400000000000D54D0000154F00000000000057 -:10D3500000000000000000000000000000000000CD -:10D36000000000000000000020D3020084D802006A -:10D37000040003002D3F02006CEC02006CD302009D -:10D380008604000078D30200BE05000014D302001A -:10D3900084D8020002000500AD6300006CEB0200BF -:10D3A000010000000000000000000000000000007C -:10D3B000000000000000000000000000000000006D -:10D3C000000000000000000000000000000000005D -:10D3D000000000000000000020080300735203005A -:10D3E00048080300A452030008080300095303007F -:10D3F00064090300875303002C080300CC53030087 -:10D4000018040300005403006C0303005754030086 -:10D41000600303008F5403002C040300C75403006F -:10D42000240000205555030030000020A1550300C2 -:10D430002C030300ED550300F80203002F560300F0 -:10D4400038030300AA560300240F03000E570300FD -:10D45000480F030046570300F40F0300E957030089 -:10D460000C0F0300755803003C0F03000A5903001A -:10D47000300F03006D590300CC0F0300195A03004D -:10D48000E80F0300C55A0300180F0300715B030087 -:10D4900050000020A65B0300E0150300C45B0300FE -:10D4A000EC140300715C0300581503000A5D0300CF -:10D4B00010150300355D030004150300C65D03006D -:10D4C000281603004F5E0300F8140300715E03008A -:10D4D000D0140300955E030008050300E35E03001B -:10D4E000AC060300125F0300A0040300415F0300C9 -:10D4F00070050300705F0300200603009F5F0300B8 -:10D50000A4060300CE5F03000C070300FD5F0300C9 -:10D51000680503002C600300180603005B6003002D -:10D520009C0603008A60030080050300B9600300C5 -:10D5300038060300E9600300BC060300196103001C -:10D54000A804030049610300780503007961030022 -:10D5500030060300A96103007C060300D9610300C3 -:10D560002806030009620300B406030039620300C1 -:10D570002005030069620300D0050300C7620300B1 -:10D58000880503001163030090060300676303002E -:10D590005C050300DB630300C80D0300396403006E -:10D5A000BC0D0300D7640300040E030022650300D2 -:10D5B000140A030078650300380D03006C6603004D -:10D5C0008C0D0300966603002C0D0300C16603005A -:10D5D000E809030050670300F4090300DB67030058 -:10D5E000200D03002C680300500A03007F6803002D -:10D5F000CC0C0300C5680300440D03000F69030051 -:10D60000D80C030042690300080A0300F76903000D -:10D6100020000020826A030004020300C76A03009E -:10D62000E80103005C6B0300C0EF0200C46B030061 -:10D63000A8EF0200156C0300B4EF0200466C030073 -:10D6400090EF0200896C03009CEF0200096D03005B -:10D650003C000020556D030094100300B66D0300DC -:10D66000B0100300696E0300F8100300B16E0300F0 -:10D6700004110300D96E030070140300A66F0300A9 -:10D6800088140300F56F03007C140300647003002A -:10D690001C1403000471030094140300957103002B -:10D6A00028140300EE710300341403001872030001 -:10D6B00068040300587203004010030073720300F3 -:10D6C00034100300F77203003011030043730300AA -:10D6D000701103007C73030084D802000000010075 -:10D6E000C566000028D9020087000000F0D60200BD -:10D6F00064CE02001F0000000300000000D70200FB -:10D700006E0000003E04000026050000E0CB020091 -:10D71000CE03000028CE02007D410200C14002007D -:10D72000DB400200F5400200534102007940020054 -:10D7300091400200A94002000F410200194102007D -:10D74000234102003B410200A2000000A7000000AC -:10D75000A70000007F00000080000000E200000041 -:10D760003C0000003C000000000000000000000041 -:10D77000E10000003C0000003B0000000000000051 -:10D7800000000000C80000000000000000000000D1 -:10D790003600000037000000C70000000000000055 -:10D7A00000000000360000003600000084D80200AF -:10D7B00002000300E948020084D8020002000300CE -:10D7C000F34802006CEB0200B00000000000000013 -:10D7D0001D490200000000000000000000000000E1 -:10D7E0000000000000000000D5330200FD480200E8 -:10D7F0000000000000000000000000000000000029 -:10D800006CEB0200F20000000000000000000000CD -:10D81000B97F0000000000000000000000000000D0 -:10D8200000000000000000000000000000000000F8 -:10D8300000000000000000000000000028D90200E5 -:10D840000B000000BC2E00206CEB0200F200000078 -:10D850000000000000000000C94A02002534020058 -:10D8600000000000000000000000000000000000B8 -:10D8700000000000000000000000000000000000A8 -:10D88000000000006CEB0200F2000000000000004D -:10D8900000000000474A020025340200000000009A -:10D8A0000000000000000000000000000000000078 -:10D8B0000000000000000000000000000000000068 -:10D8C0006CEB0200F200000000000000000000000D -:10D8D000498D000025340200000000000000000017 -:10D8E0000000000000000000000000000000000038 -:10D8F00000000000000000000000000028D9020025 -:10D900007E00000008D9020064CE0200170000006B -:10D910000200000018D902006E000000F6030000AB -:10D92000F603000014C602006CEB0200F5000000D4 -:10D93000B58F0000000000000000000000000000A3 -:10D9400000000000C98F000000000000000000007F -:10D9500000000000000000000000000000000000C7 -:10D9600000000000B70000001600000070D902009F -:10D970005E0000003CD802009E02000078F3020026 -:10D9800056010000C0FE0200F6030000FCD80200B1 -:10D990003E040000E4D60200E609000014F3020091 -:10D9A0002608000094DE0200B6050000A4C50200AF -:10D9B000160A0000A4DA0200660A0000200803002C -:10D9C000F60F000070140300960A000040100300D8 -:10D9D000A60A000068040300AE0A0000301103002C -:10D9E000FE140000C81103000E150000E80E03002D -:10D9F0006E150000B0D0020016160000F8120300E9 -:10DA00004615000030070300CE15000088E1020033 -:10DA10005E0A0000E4D60200DE09000014F30200F2 -:10DA200064CE02003F0000000700000060DA020040 -:10DA300084D8020000000000FD92000084D802009B -:10DA400000000000D74B020084D802000000000054 -:10DA50001593000084D80200000000002D93000000 -:10DA60006E000000160A00001E0A0000B0DA020074 -:10DA7000260A000030DA02002E0A000048DA02000E -:10DA8000360A000054DA02003E0A000098DA02006A -:10DA9000460A00003CDA020084D8020000000000C0 -:10DAA000C34B020028D902004201000020DA020024 -:10DAB00084D80200000000004D93000084D80200CA -:10DAC0000200FFFF8193000084D8020002000100E1 -:10DAD0000D4C020084D802000200FFFFBF4C020080 -:10DAE00064CE0200970000001200000068DB020014 -:10DAF00084D8020004000200D594000084D80200FB -:10DB000002000100B995000084D802000400020060 -:10DB10008195000084D802000200FFFFD19500002B -:10DB200084D8020004000200519500006CEB020052 -:10DB300003010000F9930000134D020000000000F3 -:10DB4000399600000D980000000000000000000061 -:10DB5000A59300000000000000000000000000008D -:10DB600000000000E0DA0200B601000008DB02005D -:10DB70000E060000FCDA020016060000C8DA0200F9 -:10DB8000BE070000F8DB0200C6070000D4DA02007E -:10DB9000CE07000014DB0200D60700001CDC0200E8 -:10DBA000DE07000004DC0200E6070000F0DA0200F5 -:10DBB000EE07000040DC0200F60700004CDC02002B -:10DBC0002E02000058DC02009606000010DC020065 -:10DBD0000608000034DC02000E08000020DB020012 -:10DBE0001608000028DC02004E060000BCDA020025 -:10DBF000AE000000B8DD020084D80200040002007C -:10DC00009D95000084D8020004000200F34C02003D -:10DC100084D8020004000200E195000084D80200CC -:10DC200004000200FD4C020084D80200040002003F -:10DC3000214C020084D80200040002003D4C020086 -:10DC400084D8020004000200754D020084D802004E -:10DC500004000200654D020084D8020002000100A9 -:10DC6000119600006CEB0200FF000000F993000029 -:10DC7000134D020000000000399600000D980000CE -:10DC80000000000000000000A5930000000000005C -:10DC9000000000000000000000000000E0DA0200C8 -:10DCA00084D8020004000400554F020064CE020034 -:10DCB000170000000200000000DD02006CEB020013 -:10DCC000B8000000ED9B0000759E00000000000001 -:10DCD000459C0000099D000000000000019E00001E -:10DCE000A19C0000000000000000000000000000F7 -:10DCF00000000000ACDC0200BCDC02000000000000 -:10DD00007E06000010DD02008E060000A0DC02008E -:10DD100084D8020004000200694F02006CEB02008C -:10DD2000AD000000459F0000DD4F02000000000034 -:10DD3000F59E00000000000037500200799F0000AF -:10DD4000259F00000000000000000000000000000F -:10DD500000000000000000006CEB0200F400000076 -:10DD600000000000000000000000000000000000B3 -:10DD7000000000000000000000000000D533020099 -:10DD80008B4F0200000000000000000000000000B7 -:10DD90000000000084D80200040002005F5002006E -:10DDA00084D80200060003007550020084D80200E7 -:10DDB000040002008D50020084D80200040002001A -:10DDC000A350020084D8020002000100A9A00000B4 -:10DDD00084D802000200010029A2000084D80200B9 -:10DDE00002000100F59F000084D802000400020038 -:10DDF000E1A1000084D802000200010031A000006F -:10DE000084D80200020001007DA3000084D8020033 -:10DE10000400020051A3000084D8020002000100A7 -:10DE20001552020084D80200020001000DA2000079 -:10DE300064CE0200E70000001C00000000DF0200CA -:10DE400084D802000200010061A2000084D8020010 -:10DE5000020001007DA2000084D80200020001003F -:10DE6000C9A0000084D8020002000100055202008F -:10DE700084D802000400020089A1000084D80200B6 -:10DE80000200010045A2000084D802000200010047 -:10DE90002952020028D902000401000030DE0200ED -:10DEA00084D8020002000100E9A0000084D802002A -:10DEB00002000200CDA2000084D80200020001008E -:10DEC00035A3000084D802000200010089A00000F0 -:10DED00084D802000200010051A1000084D8020091 -:10DEE000020001006DA0000084D8020004000200BE -:10DEF000B5A1000084D802000400020021A10000A6 -:10DF00006E000000260800002E08000056F8ADC084 -:10DF100036080000DA0FC9C03E08000000DE02002B -:10DF20005E0500000CDE020046080000B8DE0200BC -:10DF30004E080000ACDE020056080000E0DF0200E0 -:10DF40005E0800004CDE02006608000040DE0200B1 -:10DF50006E0800007CDE020076080000D0DD0200C2 -:10DF60007E08000024DE020086080000E8DD0200D2 -:10DF70008E08000088DE020096080000E8DE02003D -:10DF80009E080000DCDE0200AE08000018DE020081 -:10DF9000A608000070DE0200DE080000D0DE0200ED -:10DFA000E6080000F4DE0200D6080000A0DE020051 -:10DFB000B608000058DE0200BE080000C4DD020002 -:10DFC000C6080000C4DE0200CE08000064DE0200C5 -:10DFD000F6080000F4DD0200EE080000DCDD0200BF -:10DFE00084D802000200010099A200006329030006 -:10DFF0005C2903006B290300368603003A86030080 -:10E000003D86030044860300B28803004A8603006D -:10E0100056B0030053860300578603005C86030056 -:10E02000618603006886030070860300D930030010 -:10E030003CA30300598603009B4D0300FC31030001 -:10E040008F31030074860300FDA203007B8603006A -:10E05000718603004F38030029A503007F86030063 -:10E06000868603008A860300F22C03009086030054 -:10E070009686030078E002006CEB02007800000056 -:10E080004DAA0000000000000000000031AA0000BE -:10E090000000000000000000000000000000000080 -:10E0A0000000000000000000000000000000000070 -:10E0B0000000000084D802000300FFFFC7530200E5 -:10E0C000010200000202000040000000BF02000048 -:10E0D0000202000048000000BE0200000202000030 -:10E0E00080000000BD02000002020000800000006D -:10E0F000C002000001020000000000006CEB020002 -:10E10000F40000000000000000000000000000001B -:10E1100000000000000000000000000000000000FF -:10E12000D533020005AC0000000000000000000034 -:10E1300000000000000000006E000000CE1500008E -:10E14000D615000094E10200E6150000B4E00200DC -:10E15000DE15000060E102000E1600007CE1020006 -:10E1600084D802000300FFFFB153020064CE020016 -:10E170002F0000000500000038E1020084D80200F2 -:10E18000020001005DAA000028D90200B9020000C7 -:10E190006CE1020084D802000300FFFF93530200E9 -:10E1A000BCDC020008000000B400030014010300FE -:10E1B000740003003C00030034010300CC000300A2 -:10E1C000DC000300C4FF0200BCDC02000C00000005 -:10E1D000F40003007C010300F4FF02002C010300A3 -:10E1E000EC00030074010300E4FF02007C00030064 -:10E1F000D40003006C010300940003008C000300B2 -:10E200006CEB0200F600000069AF000000000000A7 -:10E2100000000000000000000000000000000000FE -:10E2200000000000000000000000000000000000EE -:10E230000000000000000000000000006CEB020085 -:10E24000F4000000000000000000000000000000DA -:10E2500000000000000000000000000000000000BE -:10E26000D53302000F54020000000000000000003F -:10E27000000000000000000000000100000002009B -:10E2800000000400BCDC020012000000CE110000FF -:10E290009611000066120000361200009E13000066 -:10E2A000361200009E1300005E130000BE13000033 -:10E2B0009611000096110000BE13000036120000F7 -:10E2C0007E130000361200007E130000561300007B -:10E2D00066120000BCDC020019000000FE11000004 -:10E2E00036120000CE1200004E120000561300003D -:10E2F000461300004612000036120000CE12000045 -:10E300004E120000BE130000B613000046120000BB -:10E31000361200002E1200001611000056130000E5 -:10E320002E0800005E12000006110000FE10000022 -:10E330003E11000056130000BE130000B61300008B -:10E34000BCDC02001E000000F61200002E080000D7 -:10E3500056130000BE130000BE1300005613000049 -:10E360002E0800005E1200009611000096110000B9 -:10E370005E1200002E0800003E130000BE120000D6 -:10E38000E61200002E1300002E08000056130000B5 -:10E39000BE130000BE130000561300002E0800003C -:10E3A0005E12000096110000961100005E1200003F -:10E3B0002E080000DE1200003E120000561200007F -:10E3C000BCDC02001200000006120000A6130000D0 -:10E3D00096130000B61300004E1200001E14000039 -:10E3E00016130000B61300004E120000A613000022 -:10E3F0002E1100002E1200002611000096130000BE -:10E40000AE1300002613000096130000261400002F -:10E41000BCDC02004F000000A61200005E110000EC -:10E420002E1400000E0200000E020000F610000084 -:10E430000E020000FE1300002E1400005E12000009 -:10E440005E1200002E1400005E1100000E1200008B -:10E450002E14000096110000961100002E140000EA -:10E460005E12000036130000361200001611000084 -:10E470002E140000EE100000EE100000C613000085 -:10E48000EE100000661300002E1400002E0800009D -:10E490002E0800002E140000961100005E110000EE -:10E4A0002E1400000E0200000E0200002E140000C8 -:10E4B0000E120000D6120000B61200005E1100001D -:10E4C0002E1400000E0200000E020000F6100000E4 -:10E4D0000E020000761100002E140000BE13000092 -:10E4E000BE1300002E1400005E1200009E110000FA -:10E4F0002E140000EE100000EE1000002E1400009C -:10E50000EE100000461100000E1400007E13000003 -:10E510002E110000EE100000C6130000EE100000E7 -:10E520001E1300002E110000EE100000C6130000A4 -:10E53000EE1000005E1200002E1400009E1100007C -:10E540005E1200002E1400009E110000BE1200009A -:10E550004E140000BCDC0200020000007E1100002E -:10E560000E130000BCDC02000A000000361400009C -:10E57000BE130000BE130000BE1300004E130000C7 -:10E5800046140000561300005613000056130000F6 -:10E59000E6120000BCDC02006A0000006E130000FE -:10E5A000C6130000BE1100007612000066110000C4 -:10E5B000A61200009E1100006E1100000E02000065 -:10E5C000A61100005E120000B61200009E110000AD -:10E5D00066110000AE110000661200005E1300001C -:10E5E000C6130000661200005E1300009E110000BA -:10E5F0005E1200005E110000A61100005E11000016 -:10E600006E1200005E130000CE13000066120000C0 -:10E610005E1300009E110000661200005E110000F3 -:10E620009E120000661200005E1200009E110000A3 -:10E630005E110000A6110000BE120000661100006D -:10E64000A6110000661200005E1300009E1100007B -:10E650005E1200009E1100005E110000B611000065 -:10E660005E110000A61100005E110000761300008C -:10E67000C61300008E11000076130000C6130000C0 -:10E680000E020000A6110000661200005E110000DC -:10E6900006130000661200002E0800005E13000042 -:10E6A0006E1100000E02000076130000C613000079 -:10E6B0000E0200005E130000061300006612000048 -:10E6C0009E1100005E1100005E1300006612000043 -:10E6D0002E0800005E1300008E110000761300006B -:10E6E000C61300008E11000076130000C613000050 -:10E6F0000E0200000E020000A611000066120000CB -:10E700005E1100005E130000C61300005E130000DF -:10E710008E11000086110000F61000000E020000AD -:10E720005E130000C61300000E0200000613000076 -:10E73000661200002E0800005E1300006E1100003B -:10E74000A6110000BCDC0200060000000614000058 -:10E750006612000096110000F613000086110000FA -:10E7600026120000BCDC020030000000CE110000C8 -:10E770002E080000BE130000EE100000F61000008E -:10E78000EE100000BE1300002E080000CE110000A5 -:10E790002E080000BE130000EE100000F61000006E -:10E7A000EE100000BE1300002E08000056130000FB -:10E7B000EE100000D61100005E120000661200008C -:10E7C0005E120000961100000E110000CE11000034 -:10E7D0002E080000BE130000EE100000F61000002E -:10E7E000EE100000BE1300002E080000BE13000053 -:10E7F0000E02000086120000561300008E13000067 -:10E80000EE100000D611000066120000CE110000CC -:10E810002E080000BE1300002E080000BE130000EA -:10E82000561300002E0800005E120000BCDC02003F -:10E830000500000006140000561300002E0800001A -:10E840005E12000096110000BCDC02000B0000000C -:10E85000E611000046120000361200004E120000C1 -:10E860007E120000B6120000C61200003612000030 -:10E87000461200004E110000E6110000BCDC020050 -:10E88000280000001E1100000E0200000E12000001 -:10E890005E110000361100002E1400002E11000041 -:10E8A0000E0200000E1200005E1100003611000082 -:10E8B0002E1400003611000006130000661200003E -:10E8C0002E080000561300002E08000066120000FB -:10E8D0002E080000661100000E1200005E120000FB -:10E8E000961100006E1100002E1400008611000029 -:10E8F0000E1200005E120000961100006E11000062 -:10E900002E1400008E110000061300006612000095 -:10E910002E080000561300002E08000066120000AA -:10E920002E080000BCDC020006000000EE13000010 -:10E930000E1200002E08000016140000161300002E -:10E940001E140000BCDC0200120000009612000041 -:10E95000661200002E0800001E120000FE120000C9 -:10E960001E120000FE1200002612000036120000E7 -:10E970005E120000661200002E08000096110000D2 -:10E980005E1200001E13000066110000AE120000AF -:10E990004E120000BCDC020008000000DE11000086 -:10E9A0002E140000BE120000661200002E1400009B -:10E9B000961100002E14000086130000BCDC02003B -:10E9C00009000000FE110000DE1300005E130000CD -:10E9D000BE130000D6130000BE1300002E1400006A -:10E9E0000E020000EE110000BCDC0200400000003E -:10E9F000F61100002E080000BE1300000E120000E9 -:10EA00002E080000E61300000E1200002E08000081 -:10EA1000EE1100002E080000BE1300000E120000D0 -:10EA20002E080000E61300000E1200002E08000061 -:10EA3000EE1100005E120000BE1300009E120000E6 -:10EA400056130000E61300009E120000561300004B -:10EA5000EE1100005E120000BE1300009E120000C6 -:10EA600056130000E61300009E120000561300002B -:10EA7000561100008E120000BE1300009E1200000E -:10EA800056130000E61300009E120000561300000B -:10EA9000561100008E120000BE1300009E120000EE -:10EAA00056130000E61300009E12000056130000EB -:10EAB000EE1100002E080000BE1300000E12000030 -:10EAC0002E080000E61300000E1200002E080000C1 -:10EAD000EE1100002E080000BE1300000E12000010 -:10EAE0002E080000E61300000E1200002E080000A1 -:10EAF000BCDC02000D000000F61100005E120000F8 -:10EB00001E130000BE130000B61200002E08000005 -:10EB10009E130000EE1000001613000056130000B4 -:10EB2000161400000E0200002E120000BCDC0200D1 -:10EB300005000000161200005E1200002E08000002 -:10EB400056130000BE130000BCDC020007000000EA -:10EB5000EE1200003E1400007E1200003E14000081 -:10EB6000CE1200003E140000C61100006CEB020043 -:10EB7000B90000001DB500008DBA0000D5B8000036 -:10EB80002534020000000000FF55020000000000D4 -:10EB90000000000000000000000000000000000075 -:10EBA0000000000000000000000000000000000065 -:10EBB0000000000000000000000000001D00000038 -:10EBC0001E00000000000000000000000000000027 -:10EBD0000000000000000000000000000000000035 -:10EBE0000000000000000000000000000000000025 -:10EBF0000000000000000000000000000000000015 -:10EC000000000000000000000000000024000000E0 -:10EC1000250000002600000027000000280000005A -:10EC200000000000150000000000000001000000CE -:10EC30006CEB0200B5000000EDB60000F7560200D4 -:10EC4000000000000000000000000000C9B4000047 -:10EC500000000000000000000000000000000000B4 -:10EC60000000000000000000000000006CEB02004B -:10EC70008600000000000000DB55020000000000DC -:10EC80000000000000000000000000000000000084 -:10EC90000000000000000000000000000000000074 -:10ECA00000000000000000006CEB0200B300000058 -:10ECB00000000000DB550200000000000000000022 -:10ECC0000000000000000000000000000000000044 -:10ECD0000000000000000000000000000000000034 -:10ECE0000000000084D8020004000200DDBB000028 -:10ECF00014000000180000000F00000000000000D9 -:10ED000000000000000000000100000084D80200A4 -:10ED100004000200135702006CEB0200F000000038 -:10ED200000000000000000003D570200000000004D -:10ED300000000000000000000000000000000000D3 -:10ED400000000000000000000000000000000000C3 -:10ED50000000000048EF020000000000000000007A -:10ED60000000000084D8020004000400A55802003E -:10ED700064CE0200C70000001800000004EE02008C -:10ED800084D802000200030001D4000084D80200ED -:10ED900002000200ED58020084D8020002000200C6 -:10EDA000DD58020084D8020004000400E1C2000023 -:10EDB00084D80200020001006DC4000084D8020063 -:10EDC00006000400FD58020084D80200040004007C -:10EDD000B358020084D802000200010035C50000CB -:10EDE00084D802000400030035C1000084D802006A -:10EDF0000400020039C0000084D8020002000100B3 -:10EE000005C50000E6060000D0EE0200EE06000098 -:10EE100064ED02008E060000C8ED0200F606000058 -:10EE2000E8EE0200AE060000ECED0200FE06000077 -:10EE30000CEF02000607000080ED02000E07000044 -:10EE4000E0ED020016070000C4EE0200B606000066 -:10EE50003CEF0200BE06000098ED0200C60600006E -:10EE60008CED0200CE06000018EF02001E07000025 -:10EE7000BCED02007E060000A4ED020026070000A3 -:10EE800030EF02002E07000024EF020036070000DA -:10EE9000F4EE02003E070000B0ED0200460700005D -:10EEA000DCEE02004E070000F8ED020056070000FD -:10EEB00000EF02005E07000084EF0200660700001A -:10EEC000D4ED020084D802000400030099C10000C0 -:10EED00084D80200040004009958020084D802007B -:10EEE00002000100F5C4000084D802000400040000 -:10EEF000BF58020084D80200020001005DC4000077 -:10EF000084D802000200010015C5000084D8020068 -:10EF100002000300BDD2000084D802000300FFFFFE -:10EF200081D2000084D8020004000200555A020079 -:10EF300084D80200040002004B5A020084D8020068 -:10EF400002000200CD5802006CEB020083000000BA -:10EF5000B9C60000B9C500000000000000000000B4 -:10EF600079CD00000000000045C50000C1BC0000D4 -:10EF7000000000006F5802000000000000000000C8 -:10EF800070ED020084D802000200010025C50000D7 -:10EF900084D802000400030085D7000084D8020052 -:10EFA00004000200C95A020084D8020002000100D5 -:10EFB00065D5000084D8020002000200EDD70000F1 -:10EFC00084D802000200020015D60000D4EF02002F -:10EFD000540000006CEB02000100000055D9000055 -:10EFE0000000000000000000000000000000000021 -:10EFF0000000000000000000000000000000000011 -:10F000000000000000000000000000000000000000 -:10F01000000000000F6A020000000000FF6D020007 -:10F02000FF6D020000000000000000000000000072 -:10F0300000000000000000000DF7000000000000CC -:10F04000856D0200000000000000000000000000CC -:10F0500000000000000000000000000000000000B0 -:10F0600000000000000000000000000000000000A0 -:10F070000000000000000000000000000000000090 -:10F08000000000000000000000000000FF6D020012 -:10F09000000000005DF4000000000000000000001F -:10F0A0000000000000000000000000004D6F0200A2 -:10F0B000000000000000000059EA0000FF6D02009F -:10F0C00000000000E1FB0000BDFB000009FE0000A5 -:10F0D000EF6D0200857502000000000000000000D6 -:10F0E0000000000049EA0000DB7B02000000000095 -:10F0F0000000000000000000000000000000000010 -:10F1000000000000000000000000000000000000FF -:10F1100000000000000000000000000051FB0000A3 -:10F12000ADFA000000000000857902000000000038 -:10F13000000000007F7A02000000000000000000D4 -:10F14000D5790200BDF10000CD730200000000007F -:10F1500000000000000000000000000000000000AF -:10F160000000000000000000277202000000000004 -:10F17000000000000000000000000000000000008F -:10F18000FF6D0200000000002B790200000000006B -:10F1900000000000056D0200056D02008D70020088 -:10F1A00083700200000000003970020097700200B6 -:10F1B000000000000000000000000000000000004F -:10F1C000A1ED00002F700200257002001B700200EC -:10F1D000C56F020000000000976F020000000000F1 -:10F1E0005D6F020000000000000000006375020077 -:10F1F00000000000A57B0200D572020000000000A4 -:10F200000000000000000000057502000000000082 -:10F2100071740200BDFE000000000000000000004C -:10F2200000000000000000000000000000000000DE -:10F23000C3720200DF6D02001B6C02004D6F020002 -:10F2400000000000056F0200E96E020000000000EF -:10F2500000000000000000000000000000000000AE -:10F26000000000004D6F020000000000C16D0200B0 -:10F27000000000000000000000000000000000008E -:10F28000AD7202000000000000000000000000005D -:10F29000000000000000000000000000000000006E -:10F2A000000000000000000000000000000000005E -:10F2B0004DFE000000000000000000000000000003 -:10F2C0006E000000E60900000E0A000020F30200B4 -:10F2D000EE09000008F30200F6090000F0F2020057 -:10F2E000FE090000FCF20200060A0000FCF2020027 -:10F2F00084D802000600FFFF0507010084D8020041 -:10F3000004000300DD04010084D802000200FFFFB6 -:10F31000BD06010028D902003C0100002CF30200C8 -:10F3200084D80200020001005F7D020064CE02006A -:10F330003700000006000000C0F202006CEB020083 -:10F34000BC000000000000005D070100000000009C -:10F3500000000000000000000000000000000000AD -:10F36000D5330200D37D0200000000000000000041 -:10F37000000000000000000028D902005300000037 -:10F3800058F7020084D8020002000100811F00002B -:10F3900084D80200020001005B7E020084D80200D3 -:10F3A00004000300650D010084D80200040003007E -:10F3B0007B7E020084D80200040002003D0D0100A3 -:10F3C00084D80200040002001F7E020084D80200DC -:10F3D00002000100AD08010084D802000200010013 -:10F3E000CD09010084D8020002000100D908010003 -:10F3F00084D802000300FFFF717E020084D802005F -:10F400000300FFFFE10D010084D8020000000000AE -:10F41000A507010084D80200020002002F7E02002E -:10F4200084D80200020001000D09010084D8020006 -:10F43000020001008108010084D8020002000100DE -:10F44000150C010084D8020002000100610C0100CB -:10F4500084D8020002000100E533020084D80200D3 -:10F4600002000100F108010084D802000000010040 -:10F47000250E010084D8020002000100B909010034 -:10F4800084D802000400FFFFBD0701002600000031 -:10F4900080F402003E00000090D302009E000000B5 -:10F4A00038F402000E0400003CCD02001E040000EF -:10F4B00048EF02001604000050C602004604000097 -:10F4C00064CE02005E04000078FE020076040000B4 -:10F4D0008CCB02007E0400000CD002001E0800004D -:10F4E0002CDB0200CE04000030D30200F604000042 -:10F4F0009CC6020006050000D8D20200BE03000030 -:10F5000078FF02006E0500001CDD02008605000089 -:10F51000C4D70200FE07000064DC0200F601000010 -:10F5200080CA0200AE05000030EC0200C6050000F3 -:10F53000BCDC0200CE0500006CEB0200E60500001A -:10F540003CF30200360400006CEC02009E05000053 -:10F55000A8EC0200A6020000CCEF0200D6030000D7 -:10F56000B0F70200DE0300002CF40200E603000006 -:10F57000CCF30200FE030000E4F3020026040000C6 -:10F580005CF402002E04000020F402004E0400008F -:10F5900068F4020056040000C0F302006604000094 -:10F5A000ACD702006E040000B8D702008E04000041 -:10F5B0009CF302009604000080F702009E04000005 -:10F5C00008F40200A6040000B4F30200AE04000038 -:10F5D00090F30200B604000074F40200C6040000B8 -:10F5E00050F40200D60400000CED0200DE0400001E -:10F5F000E4EC0200E604000098F70200EE040000CC -:10F6000084F30200FE040000A4F702000E050000CF -:10F6100074F7020016050000F0F302002E0500004A -:10F620004CF7020036050000D8F302004E0500003A -:10F6300068F702005E050000A8F3020066050000FE -:10F64000BCF702007E05000044F402008E050000B5 -:10F650008CF7020096050000FCF30200A6050000EE -:10F6600014F40200B60200007CFB0200BE0200009F -:10F6700038FA0200C6020000F4FB0200CE020000CD -:10F6800034FB0200DE02000030FC0200E602000053 -:10F690003CFE020006030000B4FD02000E03000061 -:10F6A000B8FB020016030000F8FA02001E03000077 -:10F6B0006CF9020026030000C8F702002E030000C8 -:10F6C000F0FD02003603000080FA02003E03000055 -:10F6D00090F8020046030000FCF902004E0300000F -:10F6E000A8FC020056030000C0F902005E030000FF -:10F6F0003CFD0200660300004CF80200AE02000070 -:10F70000BCFA02006E03000078FD020076030000E0 -:10F7100030F902007E03000000FD02009E0300009D -:10F72000E8F802008E03000010F8020096030000C3 -:10F730006CFC02004E0A0000D8D60200560A0000F7 -:10F74000A4D00200460500007CCC020084D8020050 -:10F7500002000100C50D010064CE0200C7020000D6 -:10F76000580000008CF4020084D80200020001005E -:10F77000CD0A010084D802000300FFFF677E02006B -:10F7800084D8020006000300A50D010084D8020001 -:10F79000020002008D0C010084D80200020001006A -:10F7A000177E020084D8020000000000B1070100AB -:10F7B00084D80200020001003108010084D8020050 -:10F7C0000100FFFF610B01006CEB02006400000010 -:10F7D000D5120100711201000000000000000000BD -:10F7E000000000005D1301000000000000000000A8 -:10F7F000000000000000000000000000B4F902005A -:10F8000000000000BCDC0200010000004CF8020017 -:10F810006CEB020071000000D512010071120100B2 -:10F820000000000000000000000000005D13010067 -:10F8300000000000000000000000000000000000C8 -:10F840000000000024F90200000000006CEB020040 -:10F850006C000000D51201007112010000000000D0 -:10F8600000000000000000005D1301000000000027 -:10F870000000000000000000000000000000000088 -:10F8800024F90200000000004600000074FA0200A3 -:10F890006CEB020067000000D5120100711201003C -:10F8A0000000000000000000000000005D130100E7 -:10F8B0000000000000000000000000000000000048 -:10F8C0000000000024F9020000000000B4FD020066 -:10F8D0000000000000000000F8DC0200BCDC0200B8 -:10F8E0000100000080FA02006CEB020073000000CF -:10F8F000D51201007112010000000000000000009C -:10F90000000000005D130100000000000000000086 -:10F91000000000000000000000000000E4FC020005 -:10F9200000000000BCDC0200010000003CFE020000 -:10F930006CEB02006E000000D51201007112010094 -:10F940000000000000000000000000005D13010046 -:10F9500000000000000000000000000000000000A7 -:10F9600000000000B4F90200000000006CEB02008F -:10F9700063000000D51201007112010000000000B8 -:10F9800000000000000000005D1301000000000006 -:10F990000000000000000000000000000000000067 -:10F9A000DCF8020000000000BCDC020001000000E6 -:10F9B00038FA0200BCDC0200010000007CFB0200FF -:10F9C0006CEB02006A000000D51201007112010008 -:10F9D0000000000000000000000000005D130100B6 -:10F9E0000000000000000000000000000000000017 -:10F9F0000000000024F90200000000006CEB02008F -:10FA000068000000D5120100711201000000000022 -:10FA100000000000000000005D1301000000000075 -:10FA200000000000000000000000000000000000D6 -:10FA300024F90200000000006CEB020057000000F7 -:10FA4000D51201007112010000000000000000004A -:10FA5000000000005D130100000000000000000035 -:10FA600000000000000000000000000024F9020077 -:10FA70000000000084D802000200FFFFC112010054 -:10FA80006CEB020066000000D5120100711201004B -:10FA90000000000000000000000000005D130100F5 -:10FAA0000000000000000000000000000000000056 -:10FAB0000000000024F90200000000006CEB0200CE -:10FAC00055000000D5120100711201000000000075 -:10FAD00000000000000000005D13010000000000B5 -:10FAE0000000000000000000000000000000000016 -:10FAF00024F90200000000006CEB0200620000002C -:10FB0000D512010071120100000000000000000089 -:10FB1000000000005D130100000000000000000074 -:10FB200000000000000000000000000070FB020068 -:10FB3000000000006CEB020059000000D51201002B -:10FB40007112010000000000000000000000000031 -:10FB50005D13010000000000000000000000000034 -:10FB6000000000000000000024F902000000000076 -:10FB7000BCDC02000100000078FD02006CEB02001A -:10FB800056000000D51201007112010000000000B3 -:10FB900000000000000000005D13010000000000F4 -:10FBA0000000000000000000000000000000000055 -:10FBB00000000000F0FC02006CEB0200610000009D -:10FBC000D5120100711201000000000000000000C9 -:10FBD000000000005D1301000000000000000000B4 -:10FBE00000000000000000000000000024F90200F6 -:10FBF000000000006CEB020058000000D51201006C -:10FC00007112010000000000000000000000000070 -:10FC10005D13010000000000000000000000000073 -:10FC2000000000000000000024F9020000000000B5 -:10FC30006CEB02005B000000D512010071120100A4 -:10FC40000000000000000000000000005D13010043 -:10FC500000000000000000000000000000000000A4 -:10FC60000000000024F90200000000006CEB02001C -:10FC700072000000D51201007112010000000000A6 -:10FC800000000000000000005D1301000000000003 -:10FC90000000000000000000000000000000000064 -:10FCA000A8F90200000000006CEB020069000000EF -:10FCB000D5120100711201000000000000000000D8 -:10FCC000000000005D1301000000000000000000C3 -:10FCD00000000000000000000000000004F8020026 -:10FCE00000000000BCDC02000100000010F802006F -:10FCF00064CE02000F0000000100000088F802003E -:10FD00006CEB02006F000000D512010071120100BF -:10FD10000000000000000000000000005D13010072 -:10FD200000000000000000000000000000000000D3 -:10FD30000000000024F90200000000006CEB02004B -:10FD40006B000000D51201007112010000000000DC -:10FD500000000000000000005D1301000000000032 -:10FD60000000000000000000000000000000000093 -:10FD7000A8F90200000000006CEB02006D0000001A -:10FD8000D512010071120100000000000000000007 -:10FD9000000000005D1301000000000000000000F2 -:10FDA00000000000000000000000000024F9020034 -:10FDB000000000006CEB020060000000D5120100A2 -:10FDC00071120100000000000000000000000000AF -:10FDD0005D130100000000000000000000000000B2 -:10FDE0000000000000000000B4F902000000000064 -:10FDF0006CEB020065000000D512010071120100D9 -:10FE00000000000000000000000000005D13010081 -:10FE100000000000000000000000000000000000E2 -:10FE200000000000DCF802000000000090F8020072 -:10FE30000000000000000000F8DC02006CEB020093 -:10FE40005C000000D51201007112010000000000EA -:10FE500000000000000000005D1301000000000031 -:10FE60000000000000000000000000000000000092 -:10FE7000B4F90200000000006CEB02008B000000EF -:10FE8000000000005B7F0200000000000000000096 -:10FE9000000000000000000000000000D533020058 -:10FEA000337F02000000000000000000000000009E -:10FEB0000000000084D8020000000000252201009C -:10FEC00028D902002A000000CCFE020064CE020005 -:10FED0003700000006000000E8FE020084D802009F -:10FEE00000000100DD2101006E000000560100004D -:10FEF000FE080000DCFE02000609000030FF0200E0 -:10FF00000E09000018FF020016090000B4FE0200EE -:10FF10001E09000024FF020084D802000000000037 -:10FF2000877F020084D80200000000001522010033 -:10FF300084D8020000000100352201006CEB0200B1 -:10FF4000B8000000C17F02000000000000000000B7 -:10FF5000459C0000099D0000957F0200019E000065 -:10FF6000A19C000000000000000000000000000054 -:10FF700000000000000000006CEB020077000000B1 -:10FF800000000000D37F020000000000000000001D -:10FF90000000000000000000000000000000000061 -:10FFA0000000000000000000000000000000000051 -:10FFB00000000000140A030009117CCA140A03009F -:10FFC000014308A7140A030009671404140A030074 -:10FFD0000951815F140A030009400155140A030006 -:10FFE00001600307140A030001001042140A030011 -:10FFF000010080E8140A030001001300140A030042 -:020000040003F7 -:1000000001EA7F47140A0300097E9DE7140A0300F2 -:1000100001849073140A030001AAAAAA140A030017 -:1000200001AE7EE7140A0300095ECABD140A03008C -:1000300009400117140A030001444545140A03004E -:10004000094150CC140A0300093FC6F8140A030002 -:1000500001403902140A03000184D173140A030019 -:1000600009E41315140A030001EE9362140A030055 -:1000700001841047140A030001047D44140A03009C -:1000800001001021140A030001A5BCF5140A0300A5 -:1000900001421000140A030001601000140A03005A -:1000A00001317E47140A0300096194F4140A030025 -:1000B00001C02907140A030001C45542140A0300B1 -:1000C00001E67807140A030001C46D47140A03000F -:1000D00001109571140A030001009001140A030035 -:1000E00001447C41140A03000100A222140A030007 -:1000F0000100100C140A030001841000140A03000C -:10010000010A2022140A03000180A80F140A030028 -:1001100001FB3BE7140A0300011C5311140A0300FE -:1001200009FB93BF140A030009511115140A0300B7 -:1001300001007000140A030001845447140A0300EC -:1001400001C47DA7140A0300014081E8140A0300DA -:100150000118FFAF140A030009BFFE5F140A030071 -:10016000017F03E5140A030001632B07140A03004F -:1001700001001C00140A030001001084140A03008B -:1001800001081100140A030001B57E42140A03009D -:1001900009C411F7140A030001C07D05140A030005 -:1001A00001802802140A0300010A10456CEB0200CA -:1001B0008A020000000000000000000000000000B3 -:1001C000000000000000000000000000000000002F -:1001D000000000000000000000000000F401030027 -:1001E000000000001002030084D802000200010099 -:1001F00061230100FF7F0200EF7F0200000000008A -:100200000000000084D802000300FFFFD12201009B -:1002100064CE02004F0000000900000074020300D9 -:100220008D02000002000000802500008E02000008 -:1002300002000000080000008F0200000300000020 -:1002400074E00200C0000000020000000100000095 -:10025000900200000302000074E00200910200001E -:100260000302000074E0020092020000030200009A -:1002700074E002006614000004020300E6030000BC -:10028000E801030076050000C0EF02009E140000A4 -:10029000A8EF0200A6140000B4EF0200AE140000A4 -:1002A00090EF0200DE0500009CEF0200B614000093 -:1002B00003000000BE140000050000006CEB02000B -:1002C000D601000000000000000000000000000057 -:1002D000000000000000000000000000000000001E -:1002E000000000000000000000000000000000000E -:1002F000000000000403030084D802000200010093 -:100300007D23010064CE02001F00000003000000F6 -:1003100014030300CE0E00002C030300D60E0000D1 -:10032000F8020300DE0E00003803030084D8020048 -:10033000020001009923010084D80200020001009C -:100340003D80020084D8020002000100A1240100C7 -:1003500064CE02004700000008000000B403030060 -:1003600084D80200020001006B80020084D80200E1 -:1003700002000100538002006CEB0200DC0100006F -:10038000000000000000000000000000000000006D -:10039000000000000000000000000000000000005D -:1003A000000000000000000000000000000000004D -:1003B00050030300F60E00006C030300FE0E000065 -:1003C00060030300060F00002C0403000E0F000062 -:1003D0000C040300160F0000440303001E0F00006E -:1003E00020040300260F0000F40303002E0F00007A -:1003F0000004030084D802000400020089250100E3 -:1004000084D8020002000100C524010084D8020043 -:10041000020001009B80020078030300A42A002050 -:1004200084D80200040002005D25010084D8020087 -:10043000020001008380020000000000E6010000CD -:10044000E7010000E8010000E9010000EA01000006 -:10045000EB010000EC010000ED010000EE010000E6 -:10046000EF010000F001000028D902005401000053 -:10047000840403006E000000A60A0000460000008D -:100480009404030064CE0200170000000200000084 -:100490007404030084D80200000000009D260100BF -:1004A00040060300502B0020DC050300002C002038 -:1004B00064CE02003700000006000000DC060300E6 -:1004C000DE0A000020050300D60A0000D005030064 -:1004D000EE0A000088050300E60A0000900603000B -:1004E000F60A0000C4060300FE0A0000D00603005E -:1004F0000E0B00005C05030064CE02003F0000000C -:1005000007000000C004030040060300302B002059 -:1005100064CE020037000000060000002C05030036 -:1005200084D8020004000200C9260100DE0A00008F -:1005300020050300D60A0000D0050300EE0A0000E3 -:1005400088050300F60A0000C4060300FE0A000046 -:10055000D0060300060B00008406030084D80200C6 -:1005600002000100AD260100DC050300A02B0020E5 -:1005700094050300602B0020DC050300102C0020F4 -:1005800094050300D02B002084D802000400020050 -:10059000FD2601006CEB0200580100000000000085 -:1005A000000000000000000000000000000000004B -:1005B000000000000000000000000000000000003B -:1005C000000000000000000000000000B004030074 -:1005D00084D8020002000100DD8002006CEB020002 -:1005E00057010000000000000000000000000000B3 -:1005F00000000000000000000000000000000000FB -:1006000000000000000000000000000000000000EA -:100610000000000010050300DC050300B02B0020E3 -:1006200094050300702B0020DC050300402C002003 -:10063000DC050300202C0020DC050300E02B00205B -:100640006CEB0200590100000000000000000000F7 -:10065000000000000000000000000000000000009A -:10066000000000000000000000000000000000008A -:100670000000000000000000F8040300DC05030097 -:10068000302C002084D8020002000100F980020012 -:1006900084D8020002000100EB800200DC050300A8 -:1006A000C02B0020DC050300802B00204006030047 -:1006B000402B0020DC050300502C0020DC0503004B -:1006C000F02B002084D802000400020069270100FA -:1006D00084D80200040002009D270100DE0A000009 -:1006E00020050300D60A0000D0050300EE0A000032 -:1006F00088050300E60A000090060300F60A0000E1 -:10070000C4060300FE0A0000D0060300DC05030057 -:10071000902B002008050300AC060300A004030092 -:1007200064CE02002F00000005000000E007030077 -:1007300028D90200A8020000200703006CEB020089 -:10074000A902000000000000B781020000000000C4 -:10075000118102004D2F0100000000009D290100C1 -:1007600000000000000000002181020000000000E5 -:10077000000000008407030084D80200000000008D -:10078000392D010066150000C8070300AB02000008 -:100790000301000000000000CC0100000100000087 -:1007A00001000000020200000300000074E00200EB -:1007B000AA0200000300000074E0020084D80200D6 -:1007C000000000004128010084D80200040002005B -:1007D0005929010084D802000100FFFFF52E010015 -:1007E0006E000000461500000606000078070300B2 -:1007F0001E100000D4070300C6150000BC0703004C -:100800004E1500003C07030084D8020002000100DE -:100810003930010084D802000000000025300100BA -:1008200028D902004C0100003808030084D80200D7 -:10083000000000008D30010064CE020017010000AE -:10084000220000005408030084D8020000000100C8 -:10085000A13001006E000000660A0000BE0B00001F -:10086000140A03003E0E000050000020BE0E0000DF -:1008700024000020C60E000030000020EE0E000014 -:1008800018040300960F0000480F0300CE0F00006D -:10089000C80D03005E14000020000020CE140000EC -:1008A0003C0000206E0A000014080300760A0000D5 -:1008B000080803007E0A000064090300860A00009D -:1008C000480803008E0A00002C0803001E0B0000DD -:1008D00008050300260B0000AC0603002E0B0000E9 -:1008E000A0040300360B0000700503003E0B00005F -:1008F00020060300460B0000A40603004E0B000078 -:100900000C070300560B0000680503005E0B000097 -:1009100018060300660B00009C0603006E0B000027 -:1009200080050300760B0000380603007E0B0000F4 -:10093000BC060300860B0000A80403008E0B000019 -:1009400078050300960B0000300603009E0B0000A4 -:100950007C060300A60B000028060300AE0B000077 -:10096000B406030084D802000000000079300100C2 -:100970006CEB0200F400000000000000000000002A -:100980000000000000000000000000000000000067 -:1009900000000000D5330200F784020000000000D0 -:1009A0000000000000000000000000006CEB0200EE -:1009B000F400000000000000000000000000000043 -:1009C0000000000000000000000000000000000027 -:1009D000D5330200A18702000000000000000000E3 -:1009E000000000000000000084D80200080004009D -:1009F000D531010084D80200040002004B860200B9 -:100A0000140A03000100000084D802000200010063 -:100A10008D8402006CEB020076010000653201005B -:100A20002D33010000000000000000006D360100C1 -:100A300000000000000000000000000000000000B6 -:100A4000000000000000000000000000BC0C0300DB -:100A500084D80200040002003F870200CE0B000091 -:100A6000380D0300D60B00008C0D0300EE0B0000C8 -:100A70002C0D0300E60B0000E8090300F60B000054 -:100A8000F4090300FE0B0000200D0300060C00001B -:100A9000500A03000E0C0000CC0C030016060000E8 -:100AA000440D0300760E0000D80C0300DE0B00009E -:100AB000080A03001E0C0000FCFF0200260C0000C8 -:100AC0004C0003002E0C0000440103003E0C00000B -:100AD000ECFF0200360C00002C000300460C000066 -:100AE000D4FF02004E0C0000CCFF0200560C0000A8 -:100AF000DCFF02005E0C0000A4010300660C000095 -:100B0000B4FF02006E0C00005C010300760C0000D4 -:100B1000FC0003007E0C0000E4000300860C0000D3 -:100B2000240103008E0C0000F4000300960C00006A -:100B30007C0103009E0C0000F4FF0200A60C0000E4 -:100B40002C010300AE0C0000EC000300B60C00000A -:100B500074010300BE0C0000E4FF0200C60C00009C -:100B60007C000300CE0C0000D4000300D60C000073 -:100B70006C010300DE0C000094000300E60C000092 -:100B80008C000300EE0C0000B4000300F60C000023 -:100B900014010300FE0C000074000300060D0000A9 -:100BA0003C0003000E0D000034010300160D000090 -:100BB000CC0003001E0D0000DC000300260D000029 -:100BC000C4FF02002E0D000004010300360D0000DA -:100BD000A40003003E0D000014000300460D0000B9 -:100BE000340003004E0D00009C010300560D000070 -:100BF000440003005E0D0000AC000300660D000021 -:100C0000840003006E0D00009C000300760D0000C0 -:100C10000C0003007E0D000054000300860D000050 -:100C2000240003008E0D000084010300960D0000D7 -:100C30008C0103009E0D000004000300A60D0000BF -:100C4000C40003001E0E0000C8E10200160E0000E2 -:100C5000A0E10200AE0D00000C010300B60D000083 -:100C60004C010300BE0D0000BC000300C60D0000D7 -:100C70003C010300CE0D000094010300D60D0000DE -:100C80001C010300DE0D00005C000300E60D000007 -:100C900054010300EE0D00006C000300F60D00008F -:100CA000BCFF0200FE0D00001C000300060E000049 -:100CB000640003000E0E00006401030064CE020015 -:100CC000670200004C0000005C0A030084D80200A8 -:100CD000040002005387020084D802000A000500C5 -:100CE0002B8302006CEB0200D10100000000000029 -:100CF00000000000000000000000000000000000F4 -:100D00000000000000000000313101000000000080 -:100D100000000000000000000000000000000000D3 -:100D200084D80200040002005F86020084D802001A -:100D3000060003007131010084D8020002000100A6 -:100D40000183020084D80200020001003584020001 -:100D50006CEB0200D5010000000000000000000064 -:100D600000000000ED810200000000000000000013 -:100D7000CB870200113101000000000000000000DC -:100D800000000000000000000000000084D8020005 -:100D9000020001001D830200FA01000002010000B0 -:100DA00000000000FB010000020100000000000044 -:100DB000FD010000010000000000000084D80200D6 -:100DC0000300FFFF29370100200E03000429002043 -:100DD000FA0100000201000000000000FC01000018 -:100DE0000301000000000000FD0100000100000000 -:100DF0000000000076050000BC0D0300DE050000C9 -:100E0000040E030084D802000300FFFF85370100B1 -:100E100064CE02001700000002000000F40D030081 -:100E20006CEB0200F8010000000000000000000070 -:100E300000000000000000000000000000000000B2 -:100E400000000000000000000000000000000000A2 -:100E50000000000000000000100E030084D8020013 -:100E6000020001008139010084D802000200010063 -:100E70001139010084D8020000000100E1380100AE -:100E80006E0000000E150000161500005C0E030039 -:100E90001E150000740E030026150000000F03004D -:100EA0002E150000CC0E030036150000680E03005E -:100EB0000E150000C00E03003E150000F40E0300E6 -:100EC00084D80200000000004138010084D80200EC -:100ED000040002004939010064CE0200470000000E -:100EE00008000000800E030028D90200A1020000C3 -:100EF000D80E030084D8020004000200013801006B -:100F000084D80200020003005938010084D802008E -:100F100002000100DD39010084D802000200010056 -:100F20006F88020084D80200020001008588020058 -:100F300084D80200020001002788020084D8020041 -:100F4000020001003D3A0100900F0300E02A00205A -:100F50009E0F0000240F0300A60F0000F40F0300F3 -:100F6000AE0F00000C0F0300B60F00003C0F030093 -:100F7000F60E0000300F0300FE0E0000CC0F030041 -:100F8000060F0000E80F0300BE0F0000180F03005B -:100F90006CEB0200F1010000000000000000000006 -:100FA0000000000000000000000000000000000041 -:100FB0000000000000000000000000000000000031 -:100FC0000000000000000000D80F030084D80200D9 -:100FD000020001003F88020064CE020047000000CA -:100FE00008000000500F030084D802000200010036 -:100FF0005788020084D8020002000100C1390100B4 -:101000006E000000960A0000460000002810030051 -:101010009E0A00003410030064CE02001F0000008E -:10102000030000000010030084D80200000000004C -:101030009D3A010084D80200000000007D3A0100C2 -:1010400028D9020052010000181003008D02000090 -:101050000200000040420F008E020000020000006B -:10106000080000009A0200000200000000000000DA -:101070009B0200000302000074E002009C020000DA -:101080000302000074E002009D0200000302000061 -:1010900074E0020084D802000300FFFFBD3A0100A3 -:1010A00064CE0200270000000400000010110300BD -:1010B00084D80200040002003D3B01006CEB0200FA -:1010C0009802000000000000000000000000000086 -:1010D0000000000000000000000000000000000010 -:1010E0000000000000000000000000000000000000 -:1010F00000000000A010030084D8020004000300D8 -:10110000B53B010084D8020006000300713B0100DA -:101110006614000094100300DE050000B010030008 -:1011200076050000F8100300F61400000411030017 -:1011300028D90200550100008811030000000000BA -:10114000398EE33D398E633E398EE33EABAA2A3FAA -:10115000721C473F0000803F6E000000AE0A000096 -:10116000460000007C110300B60A00007011030065 -:1011700084D8020000000000893C010084D80200ED -:1011800000000000893C010064CE02001F00000046 -:1011900003000000581103006E000000FE14000060 -:1011A00006150000D411030064CE020017000000F1 -:1011B000020000009811030064CE02001700000036 -:1011C000020000001C12030028D902009F02000048 -:1011D000A81103006CEB0200A00200000000000058 -:1011E000693D010000000000AB8802000000000023 -:1011F00000000000B93C01000000000000000000F9 -:10120000000000000000000000000000B811030012 -:1012100084D8020002000100A93C01000E06000073 -:1012200010120300460E00002C12030084D80200A6 -:1012300002000100993C010084D802000000000077 -:101240002140010084D8020002000100BD450100D8 -:101250006E0000001616000046000000D0120300C9 -:101260006E0A0000D01203001E16000010130300C7 -:10127000960E0000B81203009E0E00003812030004 -:1012800026160000041303002E160000EC120300C3 -:101290006E0600004412030036160000C41203005C -:1012A00076160000050000007E1600000100000018 -:1012B000861600000300000084D802000000000031 -:1012C0005141010084D8020000000000CD880200D6 -:1012D00084D8020000000000A13F010064CE02009B -:1012E0006F0000000D0000005012030084D80200BF -:1012F00000000000D788020028D90200C2020000C6 -:10130000DC12030084D8020002000100DD45010068 -:1013100084D802000100FFFF6141010064CE020099 -:10132000DF0000001B0000002C1303006E0A000009 -:101330003414030026100000881403002E1000004F -:10134000941403001E1000001C1403000E10000073 -:101350007C14030006060000281403006E10000031 -:1013600064E502007610000044E90200BE100000AF -:10137000E8E90200A610000040E302009E10000011 -:1013800094E50200D6100000F0EA0200861000008A -:1013900084E202005E10000064E7020056100000C4 -:1013A000D4E20200E6100000C0E302007E1000005C -:1013B00048E80200C6100000BCE90200CE100000A0 -:1013C00010E402004610000094E9020066100000DC -:1013D0007CE802004E10000054E50200DE10000020 -:1013E00048EB0200961000002CEB02008E1000006B -:1013F0002CE80200B610000024E90200AE10000044 -:1014000044E70200070200000202000000000000A2 -:1014100006020000020200000000000084D8020062 -:101420000100FFFF6947010084D8020000000100AD -:101430003D46010084D8020000000000FD45010087 -:10144000FE01000003010000000000000202000095 -:101450000300000008050300CC01000001000000AB -:1014600001000000CD0100000100000000000000AC -:1014700028D90200FE0100001C13030084D80200DA -:101480000100FFFFCD46010084D802000100FFFFEC -:101490006946010084D802000000000019460100DE -:1014A000FF01000002010000000000000002000037 -:1014B00002000000FFFFFFFF020200000300000027 -:1014C00008050300CC01000001000000010000003D -:1014D00084D8020002000100C14A010064CE02006B -:1014E0004700000008000000A015030084D8020097 -:1014F0000300FFFF914E010084D8020002000100AA -:10150000A54A010084D8020008000400614F0100D0 -:1015100084D8020006000300CB8902007801000095 -:101520000301000000000000CA01000002000000EA -:1015300090010000C1000000010200000000000056 -:10154000CC0100000102000001000000CD010000FC -:10155000010200000000000084D802000200010027 -:101560000D4F01006CEB0200C40100000000000000 -:10157000000000000000000000000000000000006B -:10158000000000000000000000000000000000005B -:10159000000000000000000000000000DC14030058 -:1015A000EE0B000010150300E60B0000041503000D -:1015B000460E0000E01503004E0E0000EC14030080 -:1015C0000E06000058150300960E000028160300B2 -:1015D0009E0E0000F8140300A60E0000D0140300B5 -:1015E00084D802000300FFFFC14D0100CF010000BD -:1015F0000301000000000000CA010000020000001A -:1016000096000000CC010000010200000100000073 -:10161000820100000102000000000000CD01000076 -:10162000010200000000000084D802000200010056 -:10163000994A0100455B0100A15B0100895C010042 -:10164000B15C0100CD5B010034160300A828002026 -:10165000B004000000F004006009000000D00900A0 -:10166000C012000000B013008025000000502700C9 -:101670004038000000003B00004B000000A04E007E -:101680008070000000F07500127A000000008000F9 -:101690000096000000509D0000E1000000F0EB000B -:1016A000002C010000903A0100C2010000E0D701C7 -:1016B0000084030000B0AF0390D0030000000004DA -:1016C0000008070000705F0700100E00A4DFBE0EC8 -:1016D00040420F0000000010D43000000000000065 -:1016E000A86100002000000050C30000400000007E -:1016F000A086010060000000400D03008000000093 -:10170000801A06008800000000350C0090000000E0 -:10171000006A1800B000000000D43000D0000000C3 -:1017200000A86100F00000000050C300F8000000B5 -:10173000FFFF000000000000E204000000000000C5 -:10174000C409000008000000881300001000000019 -:101750001027000018000000204E000020000000AC -:1017600080380100280000000071020030000000F5 -:1017700000C4090038000000FFFF01000100000064 -:10178000010000001700000046000000A300000058 -:101790005F010000D6020000C4050000A00B00009D -:1017A0000100000000700040040000000200000082 -:1017B00000700040080000000300000000700040BE -:1017C0001000000004000000007000402000000035 -:1017D000050000000070004040000000060000000E -:1017E0000070004080000000FF000000FFFFFFFFCE -:1017F00000000000000000000000000001000000E8 -:1018000001000000000000000100000002000000D4 -:1018100000000000010000000300000000000000C4 -:1018200001000000040000000000000001000000B2 -:10183000050000000000000001000000060000009C -:101840000000000001000000070000000000000090 -:10185000010000000800000000000000010000007E -:101860000900000000000000010000000A00000064 -:1018700000000000010000000B000000000000005C -:10188000010000000C00000000000000010000004A -:101890000D00000000000000010000000E0000002C -:1018A00000000000010000000F0000000000000028 -:1018B0000100000010000000000000000100000016 -:1018C00011000000000000000100000012000000F4 -:1018D00000000000010000001300000000000000F4 -:1018E00001000000140000000000000001000000E2 -:1018F00015000000000000000100000016000000BC -:1019000000000000010000001700000000000000BF -:1019100001000000180000000000000001000000AD -:101920001900000000000000010000001C00000081 -:1019300000000000010000001D0000000000000089 -:10194000010000001E000000000000000100000077 -:10195000FF000000FFFFFFFF0000000006A40100E1 -:10196000CEA30100EAA30100C2A30100EAA3010083 -:101970002EA30100EAA30100C2A30100CEA301002F -:10198000CEA301002EA30100C2A301006CA401009C -:101990006CA401006CA40100F0A30100CEA301001F -:1019A000CEA30100B6A40100C0A30100B6A40100AB -:1019B0002EA30100B6A40100C0A30100CEA3010024 -:1019C000CEA301002EA30100C0A301006CA401005E -:1019D0006CA401006CA401009AA40100CEA7010030 -:1019E000C6A70100C6A70100BEA7010010A70100FD -:1019F00010A70100B4A70100BEA7010010A70100B5 -:101A0000B4A7010010A70100BEA7010012A70100A2 -:101A100012A7010012A7010058A8010078B5010023 -:101A200066B401004CB5010052B401004CB5010090 -:101A300056B501004CB5010052B4010066B4010076 -:101A400066B4010056B5010052B401005CB4010057 -:101A50005CB401005CB40100BEB701000CBE010023 -:101A6000EABD0100EABD0100DEBD0100D2BC0100FB -:101A7000D2BC0100D2BD0100DEBD0100D2BC01001C -:101A8000D2BD0100D2BC0100DEBD0100D6BC010008 -:101A9000D6BC0100D6BC0100ECBF01006937AC31F7 -:101AA00068212233B40F14336821A2333863ED3E2A -:101AB000DA0F493F5E987B3FDA0FC93F737172744A -:101AC0000000000061636F73660000006173696E5F -:101AD000660000006578706600000000666D6F6447 -:101AE000660000006C6F676600000000706F77662C -:101AF0000000000073717274660000000000003F77 -:101B0000000000BFD1F71737D1F717B78071313F09 -:101B1000807131BF00000000000000800000000064 -:101B200000C0153F00000000DCCFD1350000803F31 -:101B30000000C03F000FC93F000F494000CB964056 -:101B4000000FC9400053FB4000CB164100ED2F4170 -:101B5000000F49410031624100537B41003A8A4104 -:101B600000CB9641005CA34100EDAF41007EBC413B -:101B7000000FC94100A0D5410031E24100C2EE4151 -:101B80000053FB4100F20342003A0A420083104234 -:101B900000CB164200141D42005C234200A52942DE -:101BA00000ED2F4200363642007E3C4200C74242E2 -:101BB000000F4942A2000000F9000000830000006D -:101BC0006E0000004E000000440000001500000000 -:101BD00029000000FC000000270000005700000062 -:101BE000D1000000F500000034000000DD0000001E -:101BF000C0000000DB000000620000009500000053 -:101C0000990000003C00000043000000900000002C -:101C100041000000FE0000005100000063000000D1 -:101C2000AB000000DE000000BB000000C5000000AB -:101C300061000000B7000000240000006E000000FA -:101C40003A000000420000004D000000D2000000F9 -:101C5000E000000006000000490000002E00000027 -:101C6000EA00000009000000D1000000920000001E -:101C70001C000000FE0000001D000000EB00000042 -:101C80001C000000B100000029000000A7000000B7 -:101C90003E000000E8000000820000003500000067 -:101CA000F50000002E000000BB0000004400000012 -:101CB00084000000E90000009C00000070000000AB -:101CC00026000000B40000005F0000007E0000005D -:101CD000410000003900000091000000D600000023 -:101CE00039000000830000005300000039000000AC -:101CF000F40000009C000000840000005F00000071 -:101D00008B000000BD000000F9000000280000006A -:101D10003B0000001F000000F800000097000000DA -:101D2000FF000000DE000000050000009800000039 -:101D30000F000000EF0000002F0000001100000065 -:101D40008B0000005A0000000A0000006D00000037 -:101D50001F0000006D000000360000007E00000043 -:101D6000CF00000027000000CB00000009000000A9 -:101D7000B70000004F000000460000003F000000D8 -:101D8000660000009E0000005F000000EA00000006 -:101D90002D0000007500000027000000BA000000C0 -:101DA000C7000000EB000000E5000000F1000000AB -:101DB0007B0000003D00000007000000390000002B -:101DC000F70000008A0000005200000092000000AE -:101DD000EA0000006B000000FB0000005F00000054 -:101DE000B10000001F0000008D0000005D00000039 -:101DF0000800000056000000030000003000000052 -:101E000046000000FC0000007B0000006B000000AA -:101E1000AB000000F0000000CF000000BC0000009C -:101E2000200000009A000000F400000036000000CE -:101E30001D000000A9000000E30000009100000068 -:101E4000610000005E000000E60000001B000000D2 -:101E500008000000650000009900000085000000F7 -:101E60005F00000014000000A000000068000000F7 -:101E7000400000008D000000FF000000D8000000BE -:101E8000800000004D0000007300000027000000EB -:101E900031000000060000000600000015000000F0 -:101EA00056000000CA00000073000000A8000000F7 -:101EB000C900000060000000E20000007B0000009C -:101EC000C00000008C0000006B0000000400000057 -:101ED00007000000090000000000C93F0000F039C1 -:101EE0000000DA370000A2330000842E0000502BDF -:101EF0000000C2270000D0220000C41F0000C61B43 -:101F00000000441700000000000000000000000076 -:101F100000000000000000000000000000000000C1 -:101F200000000000000000000000000000000000B1 -:101F300000000000000000000000000000000000A1 -:101F40000000000000000000000000000000000091 -:101F50000000000000000000000000000000000081 -:101F600000000000900000206CB003006FB0030080 -:101F700072B00300102332100810113032123320D7 -:101F8000342014331520481009129A200A2089336E -:101F90008A2048107314311033103510341047263E -:101FA00020105B204910582048305330783285206B -:101FB0002B2114104222251043207F2346109430F9 -:101FC00047109822481099301F22252020300822DF -:101FD000072009201B1246201C20576212106B207C -:101FE0005531562048107C2342107D304310042286 -:101FF000932005308D128E208F208E2249105B3069 -:102000008F225B20903041221F10432080228120AC -:1020100082303F313C2048103E333B204810A523FE -:1020200020105E20A330A6222E10A73017223110D8 -:102030001A30492419105B204910582088224A1070 -:1020400008102D222A109330023203201C221D205A -:1020500005102A152B202C202D202F202E2040313A -:1020600008104A109F2232105B204C242B1049107C -:1020700058204D2060A42410143049105E2076139F -:102080002F1030103D10386342103E204310316253 -:102090001E105B206231632011107D12A62080206B -:1020A000A4A51D10912022106120A3302822181011 -:1020B00091203713311038203E2050225B203D30D4 -:1020C0009E2231105B200121023023624D1024201A -:1020D00034241E103520211037204D124E2052205E -:1020E0000E63081011301230433108104810851368 -:1020F0008620872088204B271D10912022109320B6 -:102100004910582053309D139E209F20A020253336 -:1021100026204810862342109C3043102012212094 -:1021200022209712A42098206D316E203A107E2331 -:102130004410803045108212A42083207231742014 -:10214000732095225B20963012624D105B20752221 -:102150007620742094229520973051324F20872387 -:102160004410892045105924051006105A200710E4 -:1021700081126A205B2039323A2092126A206B2049 -:102180002E21A6208A128C208B209AA515100810CB -:102190009B30491058200B625A105B20A0225B2014 -:1021A000A1306822231069304832492005210510EA -:1021B00018223210081006244C10402086300510DA -:1021C000351240203620A312A420A5204F241B1036 -:1021D0005030491058205D24201061201A105B20D7 -:1021E000703172207120906249105B3065316B2034 -:1021F00066205E12602061202F2229103030692174 -:1022000026106A2231106B2029212810073206205F -:10221000271C4E104F1050105110531054105510D1 -:102220005610581057105910521054242D10552084 -:10223000491058209133922048103B2208103D301D -:102240007412752077200AA81710081042100C305D -:1022500043100B3049105820151316201720182052 -:102260000C330D20481093335B2048103622392060 -:1022700040307B120B100C10672226102210132204 -:102280000810113063126420652077237A2078309B -:1022900079305B125F205C201662081019306E31B5 -:1022A00070206F2026126A205B202C2116104562B8 -:1022B00048105B200D130E200F2010206F123710D6 -:1022C00039106C316D203C108B225B208C308C22BD -:1022D00049108D30332221103F2071122F10301001 -:1022E0001A610810993395204810A8221E105B200F -:1022F0006B316C203B10223223200F22311013301F -:102300006131622027103A124A100D1046184720FA -:102310004A204B204C2054200A209A2008200013E9 -:1023200005101C204620796232107420031205101B -:102330001B20581259201C2056225B205730241293 -:10234000A6202520642226106320442313105B203E -:1023500045305FA42410143049105B209662491068 -:102360005B20A712A82093205A321B2030225B202A -:10237000313019624D105B209B6342109C3043103A -:102380004E235120533052301E18282029202A2055 -:1023900032204120422044201F207A1C08100910BE -:1023A0000A100B100C100D100F1010100E107C20C6 -:1023B0007E207F201D331E204B105C2261205D306B -:1023C0008362481084308433812048103D621210AB -:1023D00008103C2240203D30116249105B20A112C0 -:1023E000A420A220A2624D105B2053631A10491052 -:1023F00058209C339D204810661936103810401024 -:102400003E103F1041102210672068204A252C10F2 -:102410005B2049105820533052631C10491058203B -:1024200021222720242000683B0000783C000088FF -:102430003D0000603E0000703F0000804000E10869 -:10244000E907EE0E4D0DDA0B2F0BF70961080000BE -:10245000180E8E0C00008F0A6809000002000200AE -:10246000040007000D0019003100610000000005A4 -:10247000000051282573290A008F012A00FA015F04 -:1024800000420F5F5F6275696C645F636C617373B8 -:102490005F5F002B095F5F636C6173735F5F002D8B -:1024A000075F5F646F635F5F00380A5F5F696D702D -:1024B0006F72745F5F005F085F5F696E69745F5F72 -:1024C0000079075F5F6E65775F5F007B0A5F5F6C17 -:1024D0006F63616C735F5F008E085F5F6D61696E33 -:1024E0005F5F00FF0A5F5F6D6F64756C655F5F0023 -:1024F000E2085F5F6E616D655F5F007F085F5F642C -:102500006963745F5F00F7085F5F686173685F5FAE -:102510000002085F5F6E6578745F5F006B0C5F5F41 -:102520007175616C6E616D655F5F00C8085F5F709B -:102530006174685F5F00010E5F5F7265706C5F7051 -:1025400072696E745F5F002B085F5F626F6F6C5F14 -:102550005F00C60C5F5F636F6E7461696E735F5F6F -:10256000006D095F5F656E7465725F5F0045085FAF -:102570005F657869745F5F00E2075F5F6C656E5F3F -:102580005F00CF085F5F697465725F5F00260B5F55 -:102590005F6765746974656D5F5F00320B5F5F73C1 -:1025A00065746974656D5F5F00FD0B5F5F64656CEA -:1025B0006974656D5F5F00C4075F5F6164645F5F3E -:1025C0000021075F5F7375625F5F0010085F5F72D5 -:1025D0006570725F5F00D0075F5F7374725F5F004A -:1025E000400B5F5F676574617474725F5F006807BA -:1025F0005F5F64656C5F5F00A7085F5F63616C6C21 -:102600005F5F005D065F5F6C745F5F00B6065F5FD3 -:1026100067745F5F0071065F5F65715F5F00CC0686 -:102620005F5F6C655F5F00A7065F5F67655F5F0068 -:10263000610C5F5F72657665727365645F5F000B46 -:102640000B6D6963726F707974686F6E0022086237 -:10265000797465636F646500C005636F6E737400A1 -:10266000430961736D5F7468756D620043056C6149 -:1026700062656C00A805616C69676E001504646191 -:10268000746100E30475696E7400B4036E6F7000CA -:10269000F1036D6F76009104616E645F003B03632C -:1026A0006D7000440361646400210373756200B6B9 -:1026B000036C736C00A8036C737200650361737222 -:1026C000005F036C6472005D046C64726200570406 -:1026D0006C64726800500373747200320473747215 -:1026E000620038047374726800C7016200CB026232 -:1026F0006C00DF02627800BB0470757368002A0307 -:10270000706F7000E805637073696400E9056370B9 -:10271000736965009D03776669005003636C7A00F6 -:10272000E804726269740066046D6F767700650470 -:102730006D6F76740052056D6F7677740089036D46 -:10274000727300CD0473646976008B0475646976D6 -:1027500000E2056C6472657800AD0573747265788B -:1027600000F7086275696C74696E7300F008456C57 -:102770006C697073697300EA0D53746F7049746506 -:10278000726174696F6E00070D426173654578630D -:10279000657074696F6E002D0F41726974686D65A4 -:1027A0007469634572726F7200970E41737365723C -:1027B00074696F6E4572726F7200210E417474728B -:1027C00069627574654572726F72001D0B427566A1 -:1027D0006665724572726F72009108454F46457288 -:1027E000726F7200F209457863657074696F6E00EC -:1027F0005B0F46696C654578697374734572726FD7 -:102800007200781146696C654E6F74466F756E6420 -:102810004572726F72000112466C6F6174696E6767 -:10282000506F696E744572726F7200160D47656E57 -:10283000657261746F724578697400200B496D7020 -:102840006F72744572726F72005C10496E64656ECF -:10285000746174696F6E4572726F7200830A496E9B -:102860006465784572726F7200AF114B6579626F63 -:10287000617264496E7465727275707400EA084B17 -:1028800065794572726F7200FF0B4C6F6F6B7570DC -:102890004572726F7200DC0B4D656D6F7279457217 -:1028A000726F7200BA094E616D654572726F720087 -:1028B000C6134E6F74496D706C656D656E7465649A -:1028C0004572726F7200A1074F534572726F7200AA -:1028D000810D4F766572666C6F774572726F72000C -:1028E000610C52756E74696D654572726F720094F9 -:1028F0000B53796E7461784572726F7200200A53BF -:10290000797374656D45786974002509547970652B -:102910004572726F72009911556E626F756E644CDC -:102920006F63616C4572726F7200960A56616C75C6 -:10293000654572726F7200B6115A65726F4469769E -:102940006973696F6E4572726F7200220C556E6901 -:10295000636F64654572726F72006F044E6F6E65CF -:1029600000380546616C7365001304547275650088 -:1029700090066F626A6563740017084E6F6E655447 -:1029800079706500F00B4F72646572656444696329 -:1029900074009503616273004403616C6C0013035F -:1029A000616E7900C20461726773007C05617272A6 -:1029B000617900E00362696E0058057B3A23627D0D -:1029C00000EB04626F6F6C00760962797465617266 -:1029D000726179005C056279746573000D0863614A -:1029E0006C6C61626C6500DC0363687200B40B633D -:1029F0006C6173736D6574686F64003F0C5F636F27 -:102A00006C6C656374696F6E73003F046469637412 -:102A100000FA0364697200B8066469766D6F640039 -:102A20007109656E756D6572617465009B046576EC -:102A3000616C001E046578656300250666696C7428 -:102A40006572003505666C6F617400350A66726FD9 -:102A50006D5F627974657300C00767657461747433 -:102A60007200D40773657461747472009D07676C9B -:102A70006F62616C73008C076861736174747200BB -:102A8000B70468617368007003686578007B03258C -:102A900023780028026964001603696E7400B60A80 -:102AA0006973696E7374616E636500B50A697373E7 -:102AB0007562636C617373008F0469746572006280 -:102AC000036C656E0027046C697374003B066C6FC1 -:102AD00063616C7300B9036D617000B1036D61785F -:102AE00000AF036D696E00CE0764656661756C7436 -:102AF000001E0A6E616D65647475706C6500420439 -:102B00006E65787400FD036F6374006C0325236F9A -:102B100000D1046F70656E001C036F72640088043E -:102B200070617468002D03706F77005405707269CE -:102B30006E74001A0572616E676500B70472656194 -:102B40006400D0047265707200A1087265766572C7 -:102B500073656400E705726F756E64005E06736FDF -:102B60007274656400620C7374617469636D65747A -:102B7000686F64002E0373756D00C405737570650E -:102B80007200BC0373797300D808746F5F62797444 -:102B9000657300FD057475706C65009D0474797033 -:102BA00065004E0576616C756500980577726974ED -:102BB0006500E6037A6970002303736570000A03F9 -:102BC000656E6400570473746570009D0473746FC0 -:102BD00070007C05636C65617200E004636F70795E -:102BE00000370866726F6D6B657973003303676534 -:102BF0007400E3056974656D730001046B65797396 -:102C000000BF07706F706974656D006C0A7365743E -:102C100064656661756C7400B40675706461746592 -:102C2000007D0676616C756573006B06617070657A -:102C30006E64003305636C6F736500B90473656E71 -:102C40006400B3057468726F7700A605636F756ED4 -:102C500074006306657874656E64007B05696E6454 -:102C6000657800630672656D6F7665001206696EA1 -:102C70007365727400BF04736F727400A7046A6F87 -:102C8000696E002905737472697000E5066C7374CF -:102C9000726970003B067273747269700026066672 -:102CA0006F726D61740032036B6579002507726580 -:102CB000766572736500010466696E6400D2057200 -:102CC00066696E6400E90672696E64657800B7052E -:102CD00073706C697400A5067273706C697400740B -:102CE0000A73746172747377697468001B08656E87 -:102CF0006473776974680049077265706C61636515 -:102D0000008709706172746974696F6E00150A72C8 -:102D1000706172746974696F6E00C6056C6F776557 -:102D2000720027057570706572005B0769737370B8 -:102D300061636500EB076973616C70686100A807E7 -:102D40006973646967697400DD076973757070651C -:102D50007200FC0769736C6F7765720025086974EF -:102D6000657261626C6500850573746172740097A9 -:102D70000C626F756E645F6D6574686F64007407D4 -:102D8000636C6F73757265002D09646963745F7697 -:102D900069657700270866756E6374696F6E0096C3 -:102DA0000967656E657261746F72004708697465C2 -:102DB0007261746F7200BF066D6F64756C6500B5EB -:102DC00005736C696365000F0764697363617264FE -:102DD00000720A646966666572656E6365009C11BF -:102DE000646966666572656E63655F75706461745B -:102DF0006500280C696E74657273656374696F6E23 -:102E0000000613696E74657273656374696F6E5F33 -:102E100075706461746500F70A69736469736A6F39 -:102E2000696E7400B908697373756273657400FC28 -:102E30000A6973737570657273657400270373652F -:102E40007400CE1473796D6D65747269635F646923 -:102E500066666572656E636500601B73796D6D658E -:102E6000747269635F646966666572656E63655FE7 -:102E700075706461746500F605756E696F6E00EDBE -:102E80000966726F7A656E7365740035046D6174DE -:102E90006800C00165001C02706900210473717232 -:102EA0007400C8036578700021036C6F67007A03B3 -:102EB000636F7300B10373696E00FE0374616E008B -:102EC0001B0461636F730050046173696E001F041B -:102ED0006174616E00CD056174616E320006046339 -:102EE00065696C003308636F70797369676E00936E -:102EF000046661627300E504666D6F64007D0566BB -:102F00006C6F6F7200A608697366696E69746500FC -:102F10003E056973696E66009E0569736E616E0099 -:102F20005B057472756E630025046D6F6466001C2A -:102F30000566726578700040056C64657870000203 -:102F4000076465677265657300870772616469610C -:102F50006E7300D1086D656D5F696E666F00B009B4 -:102F6000717374725F696E666F0097097374616341 -:102F70006B5F75736500AD09686561705F6C6F6349 -:102F80006B00560B686561705F756E6C6F636B00EC -:102F900073206D6178696D756D20726563757273EC -:102FA000696F6E2064657074682065786365656418 -:102FB000656400BD083C6D6F64756C653E008008FB -:102FC0003C6C616D6264613E00D40A3C6C69737450 -:102FD000636F6D703E00CC0A3C64696374636F6D0F -:102FE000703E0054093C736574636F6D703E00342D -:102FF000093C67656E657870723E0052083C7374D8 -:1030000072696E673E00E3073C737464696E3E004C -:10301000C70461726776006109627974656F7264D2 -:10302000657200E903626967008504657869740068 -:1030300089066C6974746C65003A08706C6174661A -:103040006F726D002105737464696E0008067374F5 -:10305000646F757400A30673746465727200BF07B1 -:1030600076657273696F6E006E0C76657273696F48 -:103070006E5F696E666F00A2046E616D6500170E6B -:10308000696D706C656D656E746174696F6E001C3E -:103090000F7072696E745F657863657074696F6EC6 -:1030A0000012067374727563740047077573747247 -:1030B00075637400BC047061636B001F0970616309 -:1030C0006B5F696E746F000706756E7061636B00ED -:1030D0000E0B756E7061636B5F66726F6D004D08ED -:1030E00063616C6373697A650061026763009B07C3 -:1030F000636F6C6C65637400910764697361626CE3 -:1031000065000406656E61626C65009A0969736505 -:103110006E61626C656400CB086D656D5F6672659B -:10312000650052096D656D5F616C6C6F630094049E -:1031300068656C70007305696E70757400E00B63F0 -:103140006F6C6C656374696F6E7300C0086D696342 -:10315000726F626974001005726573657400EA0528 -:10316000736C65657000C80C72756E6E696E675F12 -:1031700074696D6500D00570616E696300E90B7458 -:10318000656D706572617475726500A30474686919 -:1031900073006307617574686F727300F10B616E81 -:1031A0007469677261766974790055046C6F76652D -:1031B000002C0862616461626F6F6D00CD124D6911 -:1031C00063726F4269744469676974616C50696EB7 -:1031D0000007184D6963726F426974416E616C6FCC -:1031E000674469676974616C50696E0052104D697B -:1031F00063726F426974546F75636850696E0092B0 -:103200000C726561645F6469676974616C00FD0DCF -:1032100077726974655F6469676974616C00620BD9 -:10322000726561645F616E616C6F67002D0C77720F -:103230006974655F616E616C6F6700081173657416 -:103240005F616E616C6F675F706572696F6400EEDD -:103250001E7365745F616E616C6F675F7065726924 -:103260006F645F6D6963726F7365636F6E64730023 -:103270007A1E6765745F616E616C6F675F706572FF -:10328000696F645F6D6963726F7365636F6E64739A -:1032900000040A69735F746F756368656400E60A09 -:1032A0004D6963726F426974494F00020470696E20 -:1032B0003000030470696E3100010470696E3200E1 -:1032C000010470696E3300060470696E34000704EF -:1032D00070696E3500040470696E3600050470690B -:1032E0006E37000A0470696E38000B0470696E391D -:1032F00000530570696E313000520570696E3131CE -:1033000000510570696E313200500570696E3133BD -:1033100000570570696E313400560570696E31359D -:1033200000550570696E3136005A0570696E313985 -:1033300000300570696E323000870D4D6963726F21 -:10334000426974496D616765006205496D61676531 -:10335000004205696D6167650023057769647468DB -:1033600000FA0668656967687400B706696E766575 -:10337000727400B0097365745F706978656C00A43D -:10338000096765745F706978656C00A10A73686984 -:1033900066745F6C65667400BA0B73686966745F07 -:1033A000726967687400DF0873686966745F7570B6 -:1033B00000480A73686966745F646F776E00E2099B -:1033C0006D6F6E6F7370616365000F054845415204 -:1033D0005400CF0B48454152545F534D414C4C0073 -:1033E00015054841505059009303534144009B0533 -:1033F000534D494C4500A608434F4E46555345444E -:10340000002605414E475259000B0641534C454595 -:103410005000880953555250524953454400C6053F -:1034200053494C4C59003008464142554C4F555376 -:103430000005034D4548000A035945530004024E58 -:103440004F006E07434C4F434B313200DC06434C78 -:103450004F434B3100DF06434C4F434B3200DE06F7 -:10346000434C4F434B3300D906434C4F434B34003E -:10347000D806434C4F434B3500DB06434C4F434B80 -:103480003600DA06434C4F434B3700D506434C4FCA -:10349000434B3800D406434C4F434B39006C074331 -:1034A0004C4F434B3130006D07434C4F434B313150 -:1034B00000ED074152524F575F4E00C8084152522B -:1034C0004F575F4E4500E6074152524F575F450048 -:1034D000B5084152524F575F534500F007415252D1 -:1034E0004F575F5300A7084152524F575F53570041 -:1034F000F4074152524F575F5700DA084152524F7A -:10350000575F4E5700EB08545249414E474C450017 -:103510008F0D545249414E474C455F4C454654002F -:10352000510A4348455353424F41524400A1074476 -:1035300049414D4F4E4400610D4449414D4F4E4469 -:103540005F534D414C4C0084065351554152450048 -:10355000840C5351554152455F534D414C4C00EB47 -:1035600006524142424954005E03434F5700AB0E9E -:103570004D555349435F43524F5443484554005FB0 -:103580000C4D555349435F515541564552006C0D02 -:103590004D555349435F51554156455253003309E8 -:1035A0005049544348464F524B00E204584D415352 -:1035B0000055065041434D414E00B4065441524718 -:1035C000455400450654534849525400270B524F66 -:1035D0004C4C4552534B415445003C044455434BDD -:1035E00000A105484F55534500C808544F52544F49 -:1035F000495345005609425554544552464C5900CA -:10360000E90B535449434B46494755524500C205BF -:1036100047484F535400980553574F5244007D0775 -:1036200047495241464645004805534B554C4C00CE -:10363000C908554D4252454C4C41009705534E41E7 -:103640004B4500F10A414C4C5F4152524F575300D9 -:10365000C00A414C4C5F434C4F434B53005A0F4DF3 -:103660006963726F426974446973706C6179009127 -:103670000E7365745F6272696768746E6573730058 -:103680009E107365745F646973706C61795F6D6FB0 -:103690006465001F07646973706C61790086047348 -:1036A000686F770028067363726F6C6C0050056456 -:1036B000656C617900B806737472696465008E0484 -:1036C000776169740039046C6F6F70000B0463726A -:1036D0006F700098047465787400F60B536C69631E -:1036E0006564496D61676500BD0F5363726F6C6CF3 -:1036F000696E67537472696E670064026F6E008A48 -:10370000036F666600610569735F6F6E00C10646F0 -:10371000616361646500160E4D6963726F4269747E -:10372000427574746F6E00ED08627574746F6E5F2D -:103730006100EE08627574746F6E5F6200E60A697C -:10374000735F7072657373656400F90B7761735F03 -:103750007072657373656400FD0B6765745F7072EA -:103760006573736573005B154D6963726F426974AD -:10377000416363656C65726F6D65746572001E0DE3 -:10378000616363656C65726F6D65746572003405A5 -:103790006765745F780035056765745F7900360585 -:1037A0006765745F7A00F40A6765745F76616C75AB -:1037B000657300D40F63757272656E745F676573AD -:1037C0007475726500070A69735F67657374757253 -:1037D0006500D80B7761735F6765737475726500F8 -:1037E000180C6765745F676573747572657300A004 -:1037F000027570003704646F776E00DE046C6566D6 -:103800007400E50572696768740021076661636585 -:103810002075700036096661636520646F776E00FD -:10382000B6086672656566616C6C003102336700CC -:1038300094023667005A0238670031057368616B7D -:103840006500100F4D6963726F426974436F6D704C -:10385000617373005507636F6D70617373002D079B -:1038600068656164696E6700230D69735F63616CED -:103870006962726174656400020963616C696272F5 -:10388000617465004911636C6561725F63616C69A5 -:1038900062726174696F6E00F4126765745F6669C5 -:1038A000656C645F737472656E67746800B80B4D05 -:1038B0006963726F426974493243005D0369326320 -:1038C00000B6046164647200CB016E00740362751B -:1038D0006600F2067265706561740004056D7573AB -:1038E000696300A1096672657175656E6379007B15 -:1038F000086475726174696F6E0083057069746322 -:103900006800F20370696E002104706C6179009B9D -:10391000097365745F74656D706F008F09676574F6 -:103920005F74656D706F00DA0362706D004305743B -:1039300069636B73009F054241444459009D0742EF -:10394000415F44494E4700FC0842495254484441B3 -:103950005900C805424C5545530059054348415349 -:103960004500FC0944414441444144554D00480B45 -:10397000454E5445525441494E4552004207465522 -:103980004E4552414C00D30446554E4B00AA094ABD -:10399000554D505F444F574E00FD074A554D505FFF -:1039A0005550003D044E59414E006B034F444500B5 -:1039B000970A504F5745525F444F574E00010850E9 -:1039C0004F5745525F5550003A075052454C5544A9 -:1039D0004500EB0950554E43484C494E4500B10651 -:1039E000505954484F4E00C70852494E47544F4E05 -:1039F0004500640957415741574157414100170756 -:103A000057454444494E4700C401610067026123A1 -:103A1000002C0461233A31002E0461233A330076EE -:103A2000026132007002613400BB0461343A31003B -:103A3000B90461343A33000F03613A31000C036179 -:103A40003A32000A03613A34000B03613A3500DE72 -:103A50000462323A3100940262330093026234000D -:103A6000D80462343A3100DB0462343A3200920204 -:103A7000623500D90462353A31000C03623A3100F4 -:103A80000F03623A3200C6016300A502632300708F -:103A90000363233500BB056323353A3100B8056362 -:103AA00023353A32006E0463233A310067046323FE -:103AB0003A3800FC0463323A3200B5026333007CCA -:103AC0000463333A33007B0463333A3400B2026355 -:103AD0003400F90463343A3100FB0463343A3300B0 -:103AE000FC0463343A3400B3026335007804633570 -:103AF0003A31007B0463353A32007A0463353A3355 -:103B0000007D0463353A34000D03633A31000E033F -:103B1000633A32000F03633A33000803633A340018 -:103B20000403633A3800C1016400C202642300FF49 -:103B3000056423353A32000A0464233A32000B0448 -:103B400064233A3300D202643300D5026434001E89 -:103B50000464343A3100D4026435001F0464353AF9 -:103B600031001C0464353A32000A03643A3100091A -:103B700003643A32000803643A33000F03643A34B2 -:103B8000000E03643A35000D03643A360003036403 -:103B90003A3800BA0465333A3300F4026534003F22 -:103BA0000465343A3100F5026535003F0465363A64 -:103BB00033000B03653A31000803653A320009030C -:103BC000653A33000E03653A34000F03653A350059 -:103BD0000C03653A36000203653A3800E00465627A -:103BE0003A3800C3016600010266230035036623EC -:103BF0003500FD056623353A32004B0466233A3121 -:103C000000480466233A3200420466233A38001121 -:103C1000026632000803663A31000B03663A32004E -:103C20000A03663A33000D03663A34000103663A2C -:103C30003800C20167002102672300EA0467233AC3 -:103C40003100E80467233A3300FA0467333A31005D -:103C500036026734007D0467343A31007E046734ED -:103C60003A32003702673500FC0467353A31000903 -:103C700003673A31000A03673A32000B03673A33AD -:103C8000000103673A3800D7017200CB0472343A5E -:103C900032001C03723A31001F03723A32001E03D5 -:103CA000723A3300320C4D6963726F426974554148 -:103CB000525400770475617274001F04696E697450 -:103CC00000F5086261756472617465004904626997 -:103CD00074730042067061726974790041047069FE -:103CE0006E73008902747800CF02727800760772D2 -:103CF000656164616C6C00F908726561646C696E81 -:103D000065004B0872656164696E746F006A034FE9 -:103D1000444400DD044556454E004A0B4D6963722C -:103D20006F42697453504900CF03737069002604D1 -:103D30006D6F646500720473636C6B001D046D6FBE -:103D40007369009D046D69736F00890E77726974E1 -:103D5000655F72656164696E746F0069086E656F96 -:103D6000706978656C0069084E656F506978656C9C -:103D700000BE0672616E646F6D00660B67657472DB -:103D8000616E64626974730092047365656400A374 -:103D90000972616E6472616E676500AF0772616E71 -:103DA00064696E74002E0663686F696365000107BD -:103DB000756E69666F726D005305617564696F0099 -:103DC000AE0A417564696F4672616D6500270A72BB -:103DD000657475726E5F70696E00B806736F757288 -:103DE0006365005608636F707966726F6D007902C3 -:103DF0006F7300B705756E616D65009B077379730E -:103E00006E616D650062086E6F64656E616D650060 -:103E1000EC0772656C65617365001A074279746519 -:103E200073494F001E0654657874494F00F70877B0 -:103E300072697461626C650098076C697374646977 -:103E4000720060076D616368696E650020047369C4 -:103E50007A6500040A69735F706C6179696E670046 -:103E60006D0673706565636800AE037361790094D5 -:103E70000970726F6E6F756E636500B60473696E5C -:103E8000670031067468726F6174006E056D6F753E -:103E90007468006205737065656400D405646562CA -:103EA00075670043097472616E736C61746500D448 -:103EB00005726164696F004F06636F6E6669670023 -:103EC000BF0A73656E645F627974657300880D72F2 -:103ED0006563656976655F6279746573004E077224 -:103EE0006563656976650059066C656E6774680080 -:103EF000940571756575650026076368616E6E656A -:103F00006C00DA05706F77657200A80964617461EE -:103F10005F72617465007307616464726573730036 -:103F2000BA0567726F7570007B0C524154455F3261 -:103F300035304B42495400DB0A524154455F314D04 -:103F400042495400580A524154455F324D42495447 -:103F500000332E342E300066756E6374696F6E20E8 -:103F6000646F6573206E6F742074616B65206B6580 -:103F700079776F726420617267756D656E74730016 -:103F800066756E6374696F6E2074616B657320254E -:103F90006420706F736974696F6E616C2061726701 -:103FA000756D656E74732062757420256420776565 -:103FB000726520676976656E0066756E6374696FF9 -:103FC0006E206D697373696E672025642072657158 -:103FD000756972656420706F736974696F6E616C66 -:103FE00020617267756D656E74730066756E6374BB -:103FF000696F6E20657870656374656420617420F4 -:104000006D6F737420256420617267756D656E74C1 -:10401000732C20676F742025640027257127206189 -:104020007267756D656E742072657175697265640D -:1040300000657874726120706F736974696F6E6166 -:104040006C20617267756D656E7473206769766543 -:104050006E006578747261206B6579776F72642089 -:10406000617267756D656E747320676976656E0041 -:10407000627974656172726179286200617272613D -:10408000792827256327002C205B002C2000626103 -:10409000642074797065636F6465006F6E6C79205D -:1040A000736C6963657320776974682073746570D5 -:1040B0003D312028616B61204E6F6E652920617251 -:1040C0006520737570706F7274656400706F702016 -:1040D00066726F6D20656D707479206C6973740001 -:1040E0000300000000000000007061727365722020 -:1040F000636F756C64206E6F7420616C6C6F6361AC -:10410000746520656E6F756768206D656D6F727977 -:1041100000756E657870656374656420696E6465AA -:104120006E7400756E696E64656E7420646F65737D -:10413000206E6F74206D6174636820616E79206FEA -:104140007574657220696E64656E746174696F6EF2 -:10415000206C6576656C0063616E6E6F74206D69AE -:104160007820627974657320616E64206E6F6E6270 -:1041700079746573206C69746572616C7300696E23 -:1041800076616C69642073796E74617800252E2ADB -:1041900073005C2563005C5C005C6E005C72005C1C -:1041A00074005C7825303278005C752530347800F6 -:1041B0005C552530387800737472696E6720696EBB -:1041C0006469636573206D75737420626520696E20 -:1041D0007465676572732C206E6F7420257300738D -:1041E0007472696E6720696E646578206F757420DB -:1041F0006F662072616E6765003C25713E005472E7 -:104200006163656261636B20286D6F7374207265F2 -:1042100063656E742063616C6C206C617374293A01 -:104220000A00202046696C6520222571222C206C12 -:10423000696E65202564002C20696E2025710A00B6 -:1042400063616E277420636F6E76657274202573C8 -:1042500020746F20696E740063616E277420636F31 -:104260006E7665727420257320746F20666C6F61A2 -:1042700074006F626A656374202725732720697351 -:10428000206E6F742061207475706C65206F7220D1 -:104290006C69737400726571756573746564206C04 -:1042A000656E67746820256420627574206F626A89 -:1042B00065637420686173206C656E67746820257F -:1042C0006400257120696E6469636573206D757380 -:1042D0007420626520696E7465676572732C206E48 -:1042E0006F7420257300257120696E646578206FD6 -:1042F0007574206F662072616E6765006F626A6513 -:104300006374206F662074797065202725732720D9 -:10431000686173206E6F206C656E282900272573F5 -:1043200027206F626A65637420646F6573206E6F07 -:104330007420737570706F7274206974656D206479 -:10434000656C6574696F6E0027257327206F626A3C -:10435000656374206973206E6F7420737562736374 -:104360007269707461626C650027257327206F6223 -:104370006A65637420646F6573206E6F7420737553 -:1043800070706F7274206974656D206173736967F2 -:104390006E6D656E74006F626A6563742077697410 -:1043A00068206275666665722070726F746F636FE5 -:1043B0006C20726571756972656400756E657870E0 -:1043C0006563746564206B6579776F7264206172D0 -:1043D00067756D656E7420272571270066756E639D -:1043E00074696F6E20676F74206D756C7469706C82 -:1043F000652076616C75657320666F7220617267E7 -:10440000756D656E742027257127006C69737420A3 -:1044100072657175697265640063616E27742073DB -:104420006574206174747269627574650004656FE7 -:1044300072086C736C0C6C7372106173721461642B -:1044400063187362631C726F7220747374246E65D8 -:104450006728636D702C636D6E306F7272346D758A -:104460006C386269633C6D766E006571016E650241 -:104470006373036363046D6905706C067673077676 -:1044800063086869096C730A67650B6C740C677460 -:104490000D6C65272573272065787065637473201C -:1044A0006174206D6F737420722564002725732753 -:1044B0002065787065637473206120726567697325 -:1044C000746572002725732720657870656374739F -:1044D000207B72302C2072312C202E2E2E7D002736 -:1044E000257327206578706563747320616E206979 -:1044F0006E7465676572002725732720696E746581 -:10450000676572203078257820646F6573206E6F40 -:10451000742066697420696E206D61736B20307839 -:1045200025780027257327206578706563747320CC -:1045300061206C6162656C006C6162656C2027258E -:104540007127206E6F7420646566696E65640075FE -:104550006E737570706F72746564205468756D62E7 -:1045600020696E737472756374696F6E202725738A -:1045700027207769746820256420617267756D65EE -:104580006E747300272573272065787065637473D4 -:1045900020616E2061646472657373206F6620749D -:1045A000686520666F726D205B612C20625D006221 -:1045B00072616E6368206E6F7420696E2072616E26 -:1045C00067650063616E206F6E6C79206861766547 -:1045D00020757020746F203420706172616D657475 -:1045E00065727320746F205468756D6220617373F7 -:1045F000656D626C7900706172616D65746572736E -:10460000206D7573742062652072656769737465C7 -:10461000727320696E2073657175656E63652072B3 -:104620003020746F2072330000723000017231004C -:1046300002723200037233000472340005723500D6 -:1046400006723600077237000872380009723900A6 -:104650000A7231300B7231310C7231320D723133DA -:104660000E7231340F7231350A736C000B667000B4 -:104670000D7370000E6C72000F706300696C6C65D6 -:1046800067616C206D6F64650066696C65206E6F94 -:104690007420666F756E6400202E3F2C2D494945AD -:1046A0004141414155414945554F524C5759575247 -:1046B0004C57594D4E4E4451535346542F2F5A5A2E -:1046C0005644432A4A2A2A2A45414F414F55422AF5 -:1046D0002A442A2A472A2A472A2A502A2A542A2A96 -:1046E0004B2A2A4B2A2A5555552A2A2A2A2A59481A -:1046F000484541484F4858585258485858585848C3 -:104700002A2A2A2A2A2A58582A2A482A4848582A25 -:10471000482A48482A2A2A2A2A5959595757572A8B -:104720002A2A2A2A2A2A2A2A582A2A2A2A2A2A2ABB -:104730002A2A2A2A582A2A4C4D4E0000000000A49A -:10474000A4A4A4A4A48484A4A48484848484848449 -:1047500044444444444C4C4C484C4040404040400D -:104760004444444448404C440000B4B4B494949449 -:104770004E4E4E4E4E4E4E4E4E4E4E4E4B4B4B4B65 -:104780004B4B4B4B4B4B4B4B80C1C1001212120891 -:104790000B090B0E0F0B100C06060E0C0E0C0B0863 -:1047A000080B0A09080808080803050202020202A9 -:1047B00002060608060602090402010E0F0F0F0E7C -:1047C0000E080202070201070202070202080202A3 -:1047D000060202070204070104050580C1C1C1C128 -:1047E00000000000000000000000000000000000C9 -:1047F000000010101010080C080440242020240091 -:1048000000242020242020002000000000000000C0 -:10481000000000000404040000000000000000008C -:104820000404040000000000004F4B0050686F6E4D -:10483000656D657320746F6F206C6F6E6700496CD7 -:104840006C6567616C2070697463680050686F6E96 -:10485000656D65206E6F7420756E64657273746F1C -:104860006F6400496E7075742070686F6E656D6559 -:104870007300494E5445524E414C204552524F52BE -:104880003A20496C6C6567616C2070686F6E656D6D -:104890006520696E64657800496E736572742042A4 -:1048A0007265616474680D0050726F63657373653F -:1048B000642070686F6E656D6573000012121208D7 -:1048C000080808080B060C0A05050B0A0A0A09085D -:1048D0000709070608060707070205020202020287 -:1048E000020606070606020803011E0D0C0C0C0E3C -:1048F0000906010205010106010206010208020281 -:10490000040202060104060104C7FF2A31323334CF -:1049100035363738696E7428292061726720322055 -:104920006D757374206265203E3D203220616E6497 -:10493000203C3D20333600696E76616C69642073DB -:10494000796E74617820666F7220696E7465676530 -:104950007220776974682062617365202564006342 -:104960006F6D706C65782076616C756573206E6F05 -:104970007420737570706F7274656400696E76610F -:104980006C69642073796E74617820666F72206E32 -:10499000756D62657200285B005D29002571280035 -:1049A0007B003C76616C75653E00706F7069746564 -:1049B0006D28293A2064696374696F6E6172792089 -:1049C000697320656D7074790064696374696F6ED2 -:1049D00061727920757064617465207365717565A5 -:1049E0006E636520686173207468652077726F6EEE -:1049F00067206C656E67746800646963745F6974CE -:104A0000656D7300646963745F6B657973006469D5 -:104A100063745F76616C75657300492F4F206F700A -:104A200065726174696F6E206F6E20636C6F736561 -:104A3000642066696C65004E6F206D6F726520732F -:104A4000746F726167652073706163650064697675 -:104A50006973696F6E206279207A65726F00636195 -:104A60006E277420636F6E7665727420696E66209F -:104A7000746F20696E740063616E277420636F6EBB -:104A800076657274204E614E20746F20696E7400DA -:104A90006F766572666C6F7720636F6E7665727481 -:104AA000696E67206C6F6E6720696E7420746F206A -:104AB0006D616368696E6520776F7264006E65670B -:104AC000617469766520736869667420636F756EBA -:104AD00074006D6963726F3A6269742077697468F3 -:104AE000206E524635313832320076312E372D392C -:104AF0002D6762653032306562206F6E2032303152 -:104B0000362D30342D313800312E30003D3D3D3DC5 -:104B10003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DC5 -:104B20003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DB5 -:104B30003D3D3D3D3D3D3D0D0025733A0D0A0D0ABD -:104B400000206964782020202070686F6E656D6594 -:104B500020206C656E6774682020737472657373AF -:104B60000D00202533692020202020202563256387 -:104B700020202020202025336920202020202020D4 -:104B800025690D0A00202533692020202020203FA0 -:104B90003F20202020202025336920202020202095 -:104BA0002025690D0A0046696E616C20646174619C -:104BB00020666F7220737065656368206F7574700E -:104BC00075742E202569206672616D65733A0D0A31 -:104BD0000D0A0020666C61677320616D706C312076 -:104BE000667265713120616D706C3220667265711C -:104BF0003220616D706C332066726571332070698C -:104C00007463680D002D2D2D2D2D2D2D2D2D2D2D69 -:104C10002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DC4 -:104C20002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DB4 -:104C30002D2D2D2D2D0D002535692025356920259B -:104C400035692025356920253569202535692025D8 -:104C50003569202535690D0A003C67656E6572610E -:104C6000746F72206F626A65637420272571272034 -:104C700061742025703E0063616E27742073656E39 -:104C800064206E6F6E2D4E6F6E652076616C75655B -:104C900020746F2061206A7573742D73746172744F -:104CA00065642067656E657261746F720067656E1A -:104CB000657261746F722069676E6F7265642047F8 -:104CC000656E657261746F724578697400000000EA -:104CD00000000000000003030303030000000000C5 -:104CE00000000000000000000000000000030101BF -:104CF00001010101010101010101010101454545D8 -:104D00004545454545454501010101010101595907 -:104D10005959595919191919191919191919191903 -:104D200019191919191919190101010101016969E3 -:104D300069696969292929292929292929292929E3 -:104D40002929292929292929010101010000000116 -:104D50000102020202030303030303030304040426 -:104D600004040404040404040404040404056E6F2D -:104D7000206D6F64756C65206E616D6564202725FC -:104D800073270063616E6E6F7420706572666F7258 -:104D90006D2072656C617469766520696D706F72E3 -:104DA00074006E6F206D6F64756C65206E616D654B -:104DB000642027257127005F5F696E69745F5F2E2D -:104DC00070790057656C636F6D6520746F204D6955 -:104DD00063726F507974686F6E206F6E20746865AF -:104DE000206D6963726F3A626974210A0A5472799C -:104DF00020746865736520636F6D6D616E64733ACE -:104E00000A2020646973706C61792E7363726F6C11 -:104E10006C282748656C6C6F27290A202072756EF4 -:104E20006E696E675F74696D6528290A2020736C4E -:104E30006565702831303030290A2020627574741D -:104E40006F6E5F612E69735F70726573736564283E -:104E5000290A5768617420646F207468657365203F -:104E6000636F6D6D616E647320646F3F2043616E8C -:104E700020796F7520696D70726F76652074686532 -:104E80006D3F2048494E543A20757365207468651B -:104E900020757020616E6420646F776E0A61727293 -:104EA0006F77206B65797320746F20676574207944 -:104EB0006F757220636F6D6D616E642068697374C5 -:104EC0006F72792E20507265737320746865205458 -:104ED0004142206B657920746F206175746F2D637A -:104EE0006F6D706C6574650A756E66696E6973685E -:104EF000656420776F7264732028736F202764695C -:104F000027206265636F6D65732027646973706C19 -:104F100061792720616674657220796F75207072DF -:104F200065737320544142292E2054686573650AC5 -:104F3000747269636B7320736176652061206C6F96 -:104F400074206F6620747970696E6720616E6420CA -:104F50006C6F6F6B20636F6F6C210A0A4578706C01 -:104F60006F72653A0A54797065202768656C7028FD -:104F7000736F6D657468696E67292720746F20668A -:104F8000696E64206F75742061626F757420697436 -:104F90002E2054797065202764697228736F6D65BF -:104FA0007468696E67292720746F207365652077A0 -:104FB0006861740A69742063616E20646F2E2054E6 -:104FC000797065202764697228292720746F2073FF -:104FD00065652077686174207374756666206973EF -:104FE00020617661696C61626C652E20466F72206B -:104FF000676F6F646E6573732073616B652C0A64F1 -:105000006F6E277420747970652027696D706F72D8 -:10501000742074686973272E0A0A436F6E74726F66 -:105020006C20636F6D6D616E64733A0A2020435487 -:10503000524C2D4320202020202020202D2D207375 -:10504000746F7020612072756E6E696E6720707269 -:105050006F6772616D0A20204354524C2D4420200A -:105060002020202020202D2D206F6E206120626CBA -:10507000616E6B206C696E652C20646F20612073FB -:105080006F6674207265736574206F66207468653E -:10509000206D6963726F3A6269740A20204354522A -:1050A0004C2D4520202020202020202D2D20656EF5 -:1050B000746572207061737465206D6F64652C2057 -:1050C0007475726E696E67206F6666206175746FA5 -:1050D0002D696E64656E740A0A417661696C61625D -:1050E0006C65206D6F64756C65733A20616E7469D0 -:1050F000677261766974792C2061727261792C20F3 -:10510000636F6C6C656374696F6E732C2067632CBE -:10511000206C6F76652C206D6174682C0A6D696354 -:10512000726F707974686F6E2C206D757369632C63 -:10513000206E656F706978656C2C206F732C2072FF -:105140006164696F2C2072616E646F6D2C207370C6 -:10515000656563682C207374727563742C20737991 -:10516000732C20746869730A0A466F72206D6F721F -:105170006520696E666F726D6174696F6E20616221 -:105180006F757420507974686F6E2C20766973691E -:10519000743A20687474703A2F2F707974686F6E47 -:1051A0002E6F72672F0A546F2066696E64206F75C8 -:1051B000742061626F7574204D6963726F507974E9 -:1051C000686F6E2C2076697369743A206874747005 -:1051D0003A2F2F6D6963726F707974686F6E2E6FDE -:1051E00072672F0A507974686F6E2F6D6963726FE2 -:1051F0003A62697420646F63756D656E7461746979 -:105200006F6E20697320686572653A2068747470E7 -:10521000733A2F2F6D6963726F6269742D6D6963C4 -:10522000726F707974686F6E2E72656164746865F0 -:10523000646F63732E696F2F0A004D6963726F424A -:105240006974416363656C65726F6D657465722026 -:10525000747970650A006F626A6563742000206962 -:1052600073206F6620747970652025710A00202DE7 -:105270002D200055736566756C2073747566662005 -:10528000746F20636F6E74726F6C20746865206D2C -:105290006963726F3A6269742068617264776172DF -:1052A000652E0A00507574206D6963726F3A6269E9 -:1052B0007420696E2070616E69632829206D6F64A7 -:1052C0006520616E6420646973706C617920616E21 -:1052D00020756E686170707920666163652E0A5072 -:1052E0007265737320726573657420627574746F70 -:1052F0006E20746F20657869742070616E69632810 -:1053000029206D6F64652E0A00507574206D6963E5 -:10531000726F3A62697420746F20736C65657028CF -:1053200074696D652920666F7220736F6D65206DDD -:10533000696C6C697365636F6E64732028312073C8 -:1053400065636F6E64203D2031303030206D7329ED -:10535000206F662074696D652E0A736C6565702810 -:105360003230303029206769766573206D69637249 -:105370006F3A62697420612032207365636F6E64D6 -:10538000206E61702E0A0052657475726E207275FF -:105390006E6E696E675F74696D65282920696E207D -:1053A0006D696C6C697365636F6E64732073696E8D -:1053B0006365206D6963726F3A6269742773206C4C -:1053C0006173742072657365742E0A00526574757A -:1053D000726E206D6963726F3A626974277320740C -:1053E000656D706572617475726520696E206465A3 -:1053F00067726565732043656C636975732E0A0077 -:10540000446574656374206D6963726F3A62697490 -:105410002773206D6F76656D656E7420696E20331D -:10542000442E0A4974206D6561737572657320742A -:10543000696C7420285820616E6420592920616E9F -:10544000642075702D646F776E20285A29206D6F47 -:1054500074696F6E2E0A0052657475726E206D69E4 -:1054600063726F3A62697427732074696C742028C0 -:105470005820616363656C65726174696F6E292081 -:10548000696E206D696C6C692D6727732E0A005256 -:10549000657475726E206D6963726F3A6269742704 -:1054A000732074696C7420285920616363656C658E -:1054B000726174696F6E2920696E206D696C6C6908 -:1054C0002D6727732E0A0052657475726E206D6900 -:1054D00063726F3A62697427732075702D646F77F9 -:1054E0006E206D6F74696F6E20285A20616363654A -:1054F0006C65726174696F6E2920696E206D696CCC -:105500006C692D6727732E0A5A20697320612070F9 -:105510006F736974697665206E756D626572207748 -:1055200068656E206D6F76696E672075702E204DF0 -:105530006F76696E6720646F776E2C205A206973CE -:105540002061206E65676174697665206E756D6295 -:1055500065722E0A006D6963726F3A62697427730F -:105560002027412720627574746F6E2E205768655E -:105570006E20627574746F6E20697320707265732B -:1055800073656420646F776E2C2069735F70726539 -:1055900073736564282920697320547275652E0A17 -:1055A000006D6963726F3A6269742773202742271E -:1055B00020627574746F6E2E205768656E20627558 -:1055C00074746F6E206973207072657373656420E4 -:1055D000646F776E2C2069735F7072657373656496 -:1055E000282920697320547275652E0A00496620A7 -:1055F00074686520627574746F6E206973207072B0 -:10560000657373656420646F776E2C2069735F70B7 -:1056100072657373656428292069732054727565F7 -:105620002C20656C73652046616C73652E0A0055ED -:105630007365207761735F70726573736564282981 -:1056400020746F206C6561726E20696620746865D5 -:1056500020627574746F6E20776173207072657349 -:105660007365642073696E636520746865206C617E -:1056700073742074696D650A7761735F7072657306 -:105680007365642829207761732063616C6C65649D -:105690002E2052657475726E732054727565206F7A -:1056A000722046616C73652E0A005573652067652C -:1056B000745F70726573736573282920746F206737 -:1056C0006574207468652072756E6E696E672074EB -:1056D0006F74616C206F6620627574746F6E2070D9 -:1056E0007265737365732C20616E6420616C736FD7 -:1056F0000A7265736574207468697320636F756ED0 -:1057000074657220746F207A65726F2E0A00476983 -:10571000766573206120636F6D70617373206865B7 -:105720006164696E67206265747765656E20302DEF -:1057300033363020776974682030206173206E6FB3 -:105740007274682E0A00557365206D6963726F3A32 -:10575000626974277320636F6D7061737320746F57 -:10576000206465746563742074686520646972657B -:105770006374696F6E206974206973206865616461 -:10578000696E6720696E2E0A54686520636F6D70BC -:105790006173732063616E20646574656374206D4A -:1057A00061676E65746963206669656C64732E0A4F -:1057B000497420757365732074686520456172743F -:1057C000682773206D61676E65746963206669651B -:1057D0006C6420746F2064657465637420646972FE -:1057E000656374696F6E2E0A004966206D69637285 -:1057F0006F3A626974277320636F6D7061737320F1 -:1058000069735F63616C69627261746564282920E1 -:10581000616E642061646A757374656420666F727A -:105820002061636375726163792C2072657475728F -:105830006E20547275652E0A496620636F6D706123 -:105840007373206861736E2774206265656E2061D2 -:10585000646A757374656420666F72206163637532 -:10586000726163792C2072657475726E2046616C6A -:1058700073652E0A004966206D6963726F3A62692A -:105880007420697320636F6E66757365642C206382 -:10589000616C69627261746528292074686520638F -:1058A0006F6D7061737320746F2061646A757374B7 -:1058B0002074686520697473206163637572616325 -:1058C000792E0A49742077696C6C2061736B20799A -:1058D0006F7520746F20726F7461746520746865D1 -:1058E0002064657669636520746F20647261772037 -:1058F0006120636972636C65206F6E207468652037 -:10590000646973706C61792E0A0052657365742046 -:105910006D6963726F3A626974277320636F6D708B -:10592000617373207573696E6720636C6561725F64 -:1059300063616C6962726174696F6E282920636F9C -:105940006D6D616E642E0A52756E2063616C6962C2 -:1059500072617465282920746F20696D70726F768A -:10596000652061636375726163792E0A0052657404 -:1059700075726E206D61676E657469632066696516 -:105980006C6420646574656374656420616C6F6E1B -:1059900067206D6963726F3A6269742773205820BB -:1059A000617869732E0A557375616C6C792C20745B -:1059B000686520636F6D70617373207265747572B2 -:1059C0006E73207468652065617274682773206D3A -:1059D00061676E65746963206669656C6420696ED1 -:1059E000206D6963726F2D5465736C6120756E69EB -:1059F00074732E0A556E6C6573732E2E2E61207390 -:105A000074726F6E67206D61676E657420697320B4 -:105A10006E6561726279210A0052657475726E203A -:105A20006D61676E65746963206669656C64206486 -:105A30006574656374656420616C6F6E67206D6961 -:105A400063726F3A626974277320592061786973B1 -:105A50002E0A557375616C6C792C2074686520630F -:105A60006F6D706173732072657475726E732074DC -:105A700068652065617274682773206D61676E6563 -:105A8000746963206669656C6420696E206D696362 -:105A9000726F2D5465736C6120756E6974732E0A74 -:105AA000556E6C6573732E2E2E61207374726F6E3B -:105AB00067206D61676E6574206973206E65617221 -:105AC0006279210A0052657475726E206D61676E8D -:105AD00065746963206669656C64206465746563D8 -:105AE00074656420616C6F6E67206D6963726F3AD4 -:105AF0006269742773205A20617869732E0A55737E -:105B000075616C6C792C2074686520636F6D7061B1 -:105B100073732072657475726E7320746865206586 -:105B2000617274682773206D61676E6574696320A4 -:105B30006669656C6420696E206D6963726F2D54AF -:105B400065736C6120756E6974732E0A556E6C6591 -:105B500073732E2E2E61207374726F6E67206D61C9 -:105B6000676E6574206973206E6561726279210ABF -:105B70000052657475726E20737472656E67746816 -:105B8000206F66206D61676E657469632066696564 -:105B90006C642061726F756E64206D6963726F3A18 -:105BA0006269742E0A006D6963726F3A62697427C4 -:105BB0007320357835204C454420646973706C61DE -:105BC000792E0A005573652073686F77287829202D -:105BD000746F207072696E742074686520737472BB -:105BE000696E67206F7220696D6167657320277821 -:105BF0002720746F2074686520646973706C617904 -:105C00002E205472792073686F77282748692127DE -:105C1000292E0A5573652073686F7728732C2069C5 -:105C20002920746F2073686F7720737472696E67B0 -:105C3000202773272C206F6E652063686172616373 -:105C400074657220617420612074696D65207769C4 -:105C5000746820612064656C6179206F660A276929 -:105C600027206D696C6C697365636F6E64732E0AAF -:105C700000557365207363726F6C6C2873292074F0 -:105C80006F207363726F6C6C20746865207374721C -:105C9000696E6720277327206163726F73732074A6 -:105CA000686520646973706C61792E0A557365208C -:105CB0007363726F6C6C28732C20692920746F20B9 -:105CC0007363726F6C6C20737472696E67202773D4 -:105CD00027207769746820612064656C6179206F82 -:105CE0006620276927206D696C6C697365636F6E28 -:105CF00064732061667465720A6561636820636815 -:105D0000617261637465722E0A0055736520636C5D -:105D1000656172282920746F20636C656172206D43 -:105D20006963726F3A626974277320646973706C77 -:105D300061792E0A00557365206765745F70697814 -:105D4000656C28782C20792920746F207265747511 -:105D5000726E2074686520646973706C6179277352 -:105D6000206272696768746E657373206174204C79 -:105D7000454420706978656C2028782C79292E0A92 -:105D80004272696768746E6573732063616E206226 -:105D9000652066726F6D203020284C454420697361 -:105DA000206F66662920746F203920286D6178691C -:105DB0006D756D204C4544206272696768746E652C -:105DC0007373292E0A00557365207365745F7069BB -:105DD00078656C28782C20792C20622920746F201B -:105DE0007365742074686520646973706C617920D0 -:105DF0006174204C454420706978656C2028782CAB -:105E0000792920746F206272696768746E65737394 -:105E1000202762270A77686963682063616E2062C1 -:105E20006520736574206265747765656E20302027 -:105E3000286F66662920746F2039202866756C6C7F -:105E4000206272696768746E657373292E0A005543 -:105E50007365206F6E282920746F207475726E2010 -:105E60006F6E2074686520646973706C61792E0AA6 -:105E700000557365206F6666282920746F2074753D -:105E8000726E206F66662074686520646973706C3A -:105E900061792E0A005573652069735F6F6E28293A -:105EA00020746F2071756572792069662074686549 -:105EB000206D6963726F3A62697427732064697335 -:105EC000706C6179206973206F6E2028547275653B -:105ED00029206F72206F6666202846616C736529E1 -:105EE0002E0A006D6963726F3A62697427732070BD -:105EF000696E2030206F6E2074686520676F6C6457 -:105F0000206564676520636F6E6E6563746F722EC3 -:105F10000A006D6963726F3A626974277320706951 -:105F20006E2031206F6E2074686520676F6C64206E -:105F30006564676520636F6E6E6563746F722E0AA9 -:105F4000006D6963726F3A62697427732070696EBD -:105F50002032206F6E2074686520676F6C64206546 -:105F600064676520636F6E6E6563746F722E0A00DE -:105F70006D6963726F3A62697427732070696E206D -:105F800033206F6E2074686520676F6C64206564D1 -:105F9000676520636F6E6E6563746F722E0A006DA5 -:105FA0006963726F3A62697427732070696E203476 -:105FB000206F6E2074686520676F6C64206564676D -:105FC0006520636F6E6E6563746F722E0A006D6973 -:105FD00063726F3A62697427732070696E2035208E -:105FE0006F6E2074686520676F6C642065646765F8 -:105FF00020636F6E6E6563746F722E0A006D696345 -:10600000726F3A62697427732070696E2036206F50 -:106010006E2074686520676F6C6420656467652016 -:10602000636F6E6E6563746F722E0A006D696372C2 -:106030006F3A62697427732070696E2037206F6E23 -:106040002074686520676F6C6420656467652063F1 -:106050006F6E6E6563746F722E0A006D6963726F86 -:106060003A62697427732070696E2038206F6E2041 -:1060700074686520676F6C64206564676520636F72 -:106080006E6E6563746F722E0A006D6963726F3A8B -:1060900062697427732070696E2039206F6E2074D6 -:1060A000686520676F6C64206564676520636F6E48 -:1060B0006E6563746F722E0A006D6963726F3A6267 -:1060C000697427732070696E203130206F6E2074E0 -:1060D000686520676F6C64206564676520636F6E18 -:1060E0006E6563746F722E0A006D6963726F3A6237 -:1060F000697427732070696E203131206F6E2074AF -:10610000686520676F6C64206564676520636F6EE7 -:106110006E6563746F722E0A006D6963726F3A6206 -:10612000697427732070696E203132206F6E20747D -:10613000686520676F6C64206564676520636F6EB7 -:106140006E6563746F722E0A006D6963726F3A62D6 -:10615000697427732070696E203133206F6E20744C -:10616000686520676F6C64206564676520636F6E87 -:106170006E6563746F722E0A006D6963726F3A62A6 -:10618000697427732070696E203134206F6E20741B -:10619000686520676F6C64206564676520636F6E57 -:1061A0006E6563746F722E0A006D6963726F3A6276 -:1061B000697427732070696E203135206F6E2074EA -:1061C000686520676F6C64206564676520636F6E27 -:1061D0006E6563746F722E0A006D6963726F3A6246 -:1061E000697427732070696E203136206F6E2074B9 -:1061F000686520676F6C64206564676520636F6EF7 -:106200006E6563746F722E0A006D6963726F3A6215 -:10621000697427732070696E203139206F6E207485 -:10622000686520676F6C64206564676520636F6EC6 -:106230006E6563746F722E0A006D6963726F3A62E5 -:10624000697427732070696E203230206F6E20745D -:10625000686520676F6C64206564676520636F6E96 -:106260006E6563746F722E0A006D6963726F3A62B5 -:1062700069742C2077726974655F646967697461F9 -:106280006C2863686F6963652920746F2074686582 -:106290002070696E2E20596F7520686176652074B4 -:1062A000776F202763686F696365272076616C7557 -:1062B00065732C0A3020286C6F29206F72203120E2 -:1062C000286869292E0A006D6963726F3A626974E1 -:1062D0002C20726561645F6469676974616C282948 -:1062E0002076616C75652066726F6D20746865201C -:1062F00070696E2061732065697468657220302052 -:10630000286C6F29206F72203120286869292E0A95 -:10631000006D6963726F3A6269742C2077726974D8 -:10632000655F616E616C6F672876616C75652920A9 -:10633000746F207468652070696E2E20596F752007 -:1063400063616E2075736520616E792076616C756E -:1063500065206265747765656E0A3020616E642021 -:10636000313032332E0A006D6963726F3A6269749C -:106370002C20726561645F616E616C6F67282920F3 -:1063800076616C75652066726F6D2074686520702B -:10639000696E2E20576F772C20616E616C6F6720BD -:1063A000686173206C6F7473206F662076616C7502 -:1063B00065730A2830202D203635353335292E20B7 -:1063C0004469676974616C20686173206F6E6C79D1 -:1063D000203020616E6420312E0A004966207069E9 -:1063E0006E2069735F746F75636865642829206F18 -:1063F0006E206D6963726F3A6269742C20726574E5 -:1064000075726E20547275652E204966206E6F7409 -:1064100068696E6720697320746F756368696E6759 -:10642000207468652070696E2C0A72657475726ECE -:106430002046616C73652E0A00436F6D6D756E6941 -:10644000636174652077697468206F6E65206F7270 -:10645000206D6F7265206E616D656420646576697C -:1064600063657320636F6E6E656374656420746F1B -:10647000206D6963726F3A6269742E2045616368AA -:10648000206E616D65640A64657669636520686184 -:106490007320616E202761646472657373272C20FA -:1064A000636F6D6D756E6963617465732075736973 -:1064B0006E67204932432C20616E6420636F6E6EDC -:1064C0006563747320746F2074686520492F4F20B2 -:1064D00070696E732E0A00557365207265616428B9 -:1064E000616464726573732C206E2920746F20724E -:1064F00065616420276E2720627974657320667257 -:106500006F6D2074686520646576696365207769BE -:106510007468207468697320616464726573732E93 -:106520000A00557365207772697465286164647226 -:106530006573732C206275666665722920746F20FE -:10654000777269746520746F20746865202762759E -:106550006666657227206F662074686520646576BC -:1065600069636520617420746869732027616464BD -:1065700072657373272E0A0043726561746520612A -:106580006E6420757365206275696C742D696E2068 -:10659000494D4147455320746F2073686F77206FD2 -:1065A0006E2074686520646973706C61792E205563 -:1065B00073653A0A496D616765280A2020273039DA -:1065C0003039303A270A20202739393939393A27E2 -:1065D0000A20202739393939393A270A202027302B -:1065E000393939303A270A20202730303930303ACB -:1065F00027290A2E2E2E746F206D616B6520612075 -:106600006E65772035783520686561727420696D14 -:106610006167652E204E756D6265727320676F200D -:1066200066726F6D203020286F66662920746F2097 -:10663000392028627269676874657374292E204E48 -:106640006F74650A74686520636F6C6F6E20273AFB -:106650002720746F207365742074686520656E64EC -:10666000206F66206120726F772E0A005265747564 -:10667000726E20746865207769647468206F662084 -:1066800074686520696D61676520696E207069783E -:10669000656C732E0A0052657475726E207468659D -:1066A00020686569676874206F6620746865206972 -:1066B0006D61676520696E20706978656C732E0A5C -:1066C00000557365206765745F706978656C28781C -:1066D0002C20792920746F2072657475726E207475 -:1066E000686520696D6167652773206272696768F4 -:1066F000746E657373206174204C45442070697812 -:10670000656C2028782C79292E0A42726967687492 -:106710006E6573732063616E2062652066726F6DB3 -:10672000203020284C4544206973206F666629205C -:10673000746F203920286D6178696D756D204C4526 -:1067400044206272696768746E657373292E0A004B -:10675000557365207365745F706978656C28782C53 -:1067600020792C20622920746F207365742074684E -:1067700065204C454420706978656C2028782C7918 -:106780002920696E2074686520696D6167652074D1 -:106790006F206272696768746E6573730A27622777 -:1067A0002077686963682063616E20626520736585 -:1067B00074206265747765656E203020286F666688 -:1067C0002920746F2039202866756C6C20627269EC -:1067D0006768746E657373292E0A0055736520739C -:1067E000686966745F6C65667428692920746F2017 -:1067F0006D616B65206120636F7079206F66207416 -:10680000686520696D61676520627574206D6F76BB -:1068100065642027692720706978656C7320746F20 -:1068200020746865206C6566742E0A0055736520B7 -:1068300073686966745F726967687428692920746F -:106840006F206D616B65206120636F7079206F66CA -:106850002074686520696D61676520627574206DBC -:106860006F7665642027692720706978656C7320CE -:10687000746F0A7468652072696768742E0A00551F -:1068800073652073686966745F7570286929207460 -:106890006F206D616B65206120636F7079206F667A -:1068A0002074686520696D61676520627574206D6C -:1068B0006F7665642027692720706978656C73207E -:1068C00075702E0A005573652073686966745F647D -:1068D0006F776E28692920746F206D616B65206168 -:1068E00020636F7079206F662074686520696D6120 -:1068F000676520627574206D6F766564202769274F -:1069000020706978656C7320646F776E2E0A00556D -:10691000736520636F7079282920746F206D616B17 -:10692000652061206E657720657861637420636FF0 -:106930007079206F662074686520696D6167652EC7 -:106940000A005573652063726F702878312C2079A6 -:10695000312C2078322C2079322920746F206D61FF -:106960006B652061206375742D6F757420636F7083 -:1069700079206F662074686520696D61676520778E -:106980006865726520636F6F7264696E6174650A11 -:106990002878312C79312920697320746865207436 -:1069A0006F70206C65667420636F726E6572206F05 -:1069B0006620746865206375742D6F75742061722C -:1069C000656120616E6420636F6F7264696E6174CB -:1069D00065202878322C7932292069732074686503 -:1069E0000A626F74746F6D20726967687420636FD8 -:1069F000726E65722E0A0055736520696E76657237 -:106A000074282920746F206D616B652061206E658C -:106A100067617469766520636F7079206F66207492 -:106A2000686520696D6167652E205768657265200D -:106A30006120706978656C20776173206272696784 -:106A40006874206F720A6F6E20696E20746865200A -:106A50006F726967696E616C2C206974206973209C -:106A600064696D206F72206F666620696E2074689D -:106A700065206E6567617469766520636F70792E35 -:106A80000A00436F6D6D756E696361746520776987 -:106A9000746820612073657269616C206465766931 -:106AA000636520636F6E6E656374656420746F2028 -:106AB0006D6963726F3A626974277320492F4F20A2 -:106AC00070696E732E0A0055736520696E697428AB -:106AD0002920746F2073657420757020636F6D6D4D -:106AE000756E69636174696F6E2E205573652070D1 -:106AF000696E732030202854582920616E6420313B -:106B000020285258292077697468206120626175B5 -:106B1000640A72617465206F6620393630302E0A3F -:106B20004F76657272696465207468652064656675 -:106B300061756C747320666F722027626175647270 -:106B4000617465272C202770617269747927206130 -:106B50006E64202770696E73272E0A0049662074C0 -:106B6000686572652061726520696E636F6D696E1C -:106B7000672063686172616374657273207761690D -:106B800074696E6720746F20626520726561642C81 -:106B900020616E7928292077696C6C207265747584 -:106BA000726E20547275652E0A4F7468657277692B -:106BB00073652C2072657475726E732046616C73F8 -:106BC000652E0A005573652072656164282920745A -:106BD0006F207265616420636861726163746572BD -:106BE000732E0A5573652072656164286E292074BE -:106BF0006F20726561642C206174206D6F73742C3A -:106C000020276E27206279746573206F6620646187 -:106C100074612E0A005573652072656164616C6C45 -:106C2000282920746F2072656164206173206D755E -:106C30006368206461746120617320706F7373698D -:106C4000626C652E0A0055736520726561646C691B -:106C50006E65282920746F20726561642061206C44 -:106C6000696E65207468617420656E64732077694D -:106C700074682061206E65776C696E652063686159 -:106C80007261637465722E0A0055736520726561C6 -:106C900064696E746F286275662920746F2072654E -:106CA000616420627974657320696E746F20746802 -:106CB00065206275666665722027627566272E0AF2 -:106CC0005573652072656164696E746F28627566BC -:106CD000662C206E2920746F20726561642C2061FF -:106CE00074206D6F73742C20276E27206E756D6273 -:106CF0006572206F6620627974657320696E746FA7 -:106D00002027627566272E0A005573652077726901 -:106D10007465286275662920746F207772697465BE -:106D20002074686520627974657320696E206275CD -:106D30006666657220276275662720746F20746806 -:106D40006520636F6E6E6563746564206465766943 -:106D500063652E0A00436F6D6D756E6963617465BE -:106D6000207573696E6720612073657269616C209C -:106D70007065726970686572616C20696E746572A5 -:106D800066616365202853504929206465766963EC -:106D90006520636F6E6E656374656420746F0A6D41 -:106DA0006963726F3A626974277320492F4F2070AC -:106DB000696E732E0A0055736520696E69742829FF -:106DC00020746F2073657420757020636F6D6D750E -:106DD0006E69636174696F6E2E204F766572726999 -:106DE0006465207468652064656661756C747320E1 -:106DF000666F722062617564726174652C206D6FBC -:106E000064652C0A53434C4B2C204D4F5349206151 -:106E10006E64204D49534F2E20546865206465668A -:106E200061756C7420636F6E6E656374696F6E73E9 -:106E3000206172652070696E313320666F72205355 -:106E4000434C4B2C2070696E313520666F720A4DB1 -:106E50004F534920616E642070696E313420666F33 -:106E600072204D49534F2E0A005573652077726981 -:106E70007465286275662920746F2077726974655D -:106E800020627974657320696E206275666665722A -:106E900020276275662720746F2074686520636FF1 -:106EA0006E6E6563746564206465766963652E0A39 -:106EB000005573652072656164286E2920746F2007 -:106EC0007265616420276E27206279746573206F74 -:106ED0006620646174612E0A0055736520777269BB -:106EE00074655F72656164696E746F286F75742C68 -:106EF00020696E2920746F20777269746520746828 -:106F00006520276F75742720627566666572207428 -:106F10006F2074686520636F6E6E656374656420AE -:106F20006465766963650A616E64207265616420D8 -:106F3000616E7920726573706F6E736520696E740F -:106F40006F207468652027696E2720627566666504 -:106F5000722E20546865206C656E677468206F66B9 -:106F60002074686520627566666572732073686F49 -:106F7000756C640A6265207468652073616D652EA6 -:106F80002054686520627566666572732063616E61 -:106F9000206265207468652073616D65206F626A88 -:106FA0006563742E0A00506C756720696E2061203D -:106FB000737065616B657220776974682063726FA6 -:106FC000636F64696C6520636C69707320616E64C3 -:106FD000206D616B65206D6963726F3A6269742020 -:106FE000676F20626C65657020616E6420626C6FF3 -:106FF0006F702E0A00557365207365745F74656D3C -:10700000706F286E756D6265722C2062706D29201C -:10701000746F206D616B6520612062656174206C06 -:10702000617374206120276E756D62657227206F11 -:1070300066207469636B73206C6F6E6720616E6489 -:107040000A706C61796564206174202762706D2715 -:1070500020626561747320706572206D696E75744D -:10706000652E0A005573652070697463682866721E -:1070700065712C206C656E6774682920746F206DB3 -:10708000616B65206D6963726F3A62697420706C20 -:1070900061792061206E6F746520617420276672AB -:1070A000657127206672657175656E637920666FFC -:1070B000720A276C656E67746827206D696C6C694D -:1070C0007365636F6E64732E20452E672E20706982 -:1070D000746368283434302C2031303030292077E4 -:1070E000696C6C20706C617920636F6E636572747B -:1070F0002027412720666F722031207365636F6EF1 -:10710000642E0A0055736520706C6179286D757363 -:1071100069632920746F206D616B65206D696372EE -:107120006F3A62697420706C617920276D7573699C -:107130006327206C697374206F66206E6F746573AB -:107140002E20547279206F7574207468650A6275F8 -:10715000696C7420696E206D7573696320746F208B -:1071600073656520686F7720697420776F726B7321 -:107170002E20452E672E206D757369632E706C610D -:1071800079286D757369632E50554E43484C494EAE -:1071900045292E0A00557365206765745F74656D17 -:1071A000706F282920746F2072657475726E207458 -:1071B0006865206E756D626572206F662074696304 -:1071C0006B7320696E2061206265617420616E645A -:1071D000206E756D626572206F66206265617473E2 -:1071E0000A706572206D696E7574652E0A0055739C -:1071F0006520746F2073746F70282920746865206F -:107200006D75736963207468617420697320706C94 -:107210006179696E672E0A004966207468696E6735 -:107220007320676F2077726F6E672C2072657365AD -:1072300074282920746865206D7573696320746FE4 -:10724000206974732064656661756C74207365745D -:1072500074696E67732E0A005365653A206874740A -:10726000703A2F2F786B63642E636F6D2F33353335 -:107270002F0A00546865205A656E206F6620507989 -:1072800074686F6E20646566696E657320776861E7 -:107290007420697420697320746F206265205079AE -:1072A00074686F6E69632E20497420776F756C6403 -:1072B0006E277420666974206F6E20746869730A83 -:1072C00064657669636520736F207765277665202E -:1072D0007772697474656E2061205A656E206F66DE -:1072E000204D6963726F507974686F6E20696E7398 -:1072F000746561642E0A0055736520617574686F4A -:107300007273282920746F2072657665616C207411 -:107310006865206E616D6573206F662074686520F6 -:1073200070656F706C652077686F2063726561743B -:107330006564207468697320736F66747761726521 -:107340002E0A00416C6C20796F75206E6565642E85 -:1073500020557365206C6F76652E62616461626F83 -:107360006F6D282920746F207265706561742074B8 -:107370006865206566666563742E0A0048656172FB -:10738000206D7920736F756C20737065616B3A0A9C -:10739000546865207665727920696E7374616E74C5 -:1073A000207468617420492073617720796F752C8F -:1073B000206469640A4D7920686561727420666C86 -:1073C0007920746F20796F757220736572766963A6 -:1073D000652E0A004552524F523A20737461636B16 -:1073E0002073697A65206E6F74206261636B20740C -:1073F0006F207A65726F3B20676F742025640A00E6 -:1074000047433A20746F74616C3A2025752C2075BF -:107410007365643A2025752C20667265653A2025CF -:10742000750A00204E6F2E206F6620312D626C6F22 -:10743000636B733A2025752C20322D626C6F636B61 -:10744000733A2025752C206D617820626C6B207357 -:107450007A3A2025750A004743206D656D6F727971 -:10746000206C61796F75743B2066726F6D2025709A -:107470003A000A20202020202020282575206C6931 -:107480006E657320616C6C206672656529000A2543 -:107490003035783A2000726177205245504C3B20BD -:1074A0004354524C2D4220746F20657869740D0A44 -:1074B00000044D656D6F72794572726F720A040037 -:1074C0004D6963726F507974686F6E2076312E3714 -:1074D0002D392D6762653032306562206F6E203243 -:1074E0003031362D30342D31383B206D6963726F69 -:1074F0003A6269742077697468206E524635313873 -:1075000032320D0A0054797065202268656C70284B -:10751000292220666F72206D6F726520696E666F1A -:10752000726D6174696F6E2E0D0A003E3E3E200042 -:107530000D0A7061737465206D6F64653B20437440 -:10754000726C2D4320746F2063616E63656C2C2018 -:107550004374726C2D4420746F2066696E69736881 -:107560000D0A3D3D3D20002E2E2E2000636F756CD0 -:1075700064206E6F74206F70656E2066696C652084 -:107580002725732720666F722072656164696E67B4 -:107590000A0038846B19C66318867398C6B11CCA72 -:1075A000318CC73188C23098463118C6350CCA3183 -:1075B0000CC62110246912C23114C471084A224930 -:1075C000AB6AA8AC495132D55288936C94221554B9 -:1075D000D22596D450A5462108856B18C46310CED9 -:1075E0006B188C71198C63350CC63399CC6CB54E05 -:1075F000A29946212882952EE3309CC5309CA2B1E9 -:107600009C67318866592C5318846750CAE30AACCA -:10761000AB30AC62308C63109462B18C82289633AC -:1076200098D6B54C6229A54AB59CC63114D6389C6B -:107630004BB4866518AE671CA6631996231984138C -:1076400008A652ACCA22896EAB198C6234C4621986 -:10765000866318C42358D6A35042544AAD4A251114 -:107660006B64894A63398A23312AEAA2A944C51284 -:10767000CD42348C62188C63114866319D44331DB1 -:1076800046319CC6B10CCD3288C47318867308D6B7 -:1076900063580781E0F03C0787903C7C0FC7C0C06F -:1076A000F07C1E078080001C7870F1C71FC00CFEA4 -:1076B0001C1F1F0E0A7AC071F2838F030F0F0C007C -:1076C00079F861E0430F83E718F9C113DAE9638FB2 -:1076D0000F838387C31F3C70F0E1E1E387B8710E2D -:1076E00020E38D48781C938730E1C1C1E478218381 -:1076F00083C3870639E5C387070E1C1C70F4719C91 -:10770000603632C31E3CF38F0E3C70E3C78F0F0F01 -:107710000E3C78F0E38706F0E307C199870F1878ED -:107720007070FCF310B18C8C317C70E1863C646C21 -:10773000B0E1E30F238F0F1E3E383C387B8F070EDE -:107740003CF4171E3C78F29E7249E32536385839CE -:10775000E2DE3C7878E1C761E1E1B0F0F0C3C70E4A -:1077600038C0F0CE73731834B0E1C78E1C3CF838C3 -:10777000F0E1C18B868F1C7870F078ACB18F393115 -:10778000DB3861C30E0E387873171E391E3864E17A -:10779000F1C14E0F40A202C58F81A1FC120864E026 -:1077A0003C22E045078E0C3290F01F2049E0F80C97 -:1077B00060F0171A41AAA4D08D12821E1E03F83E53 -:1077C000030C73807044260324E13E044E041CC164 -:1077D00009CC9E902107904364C00FC6909CC15B6A -:1077E00003E21D81E05E1D0384B82C0F80B183E0AD -:1077F00030411E43898350FC242E1383F17C4C2C92 -:10780000C90D83B0B582E4E8069C07A0991D073E28 -:10781000828F70307440CA10E4E80F92143F06F86B -:10782000848843810A343941C6E31C4703B0B81346 -:107830000AC264F818F960B3C0652060A68CC381E1 -:107840002030261E1C38D301B02640F40BC3421F43 -:107850008532266040C9CB01EC112840FA0434E09F -:10786000704C8C1D07690316C80423E8C69A0B1ACE -:1078700003E0760605CF1EBC5831716600F83F0460 -:10788000FC0C74278A8071C23A2606C01F050F9827 -:1078900040AE017FC007FF000EFE0003DF8003EF54 -:1078A000801BF1C200E7E018FCE021FC803CFC40BA -:1078B0000E7E003F3E000FFE001FFF003EF007FC63 -:1078C000007E103FFF003F380E7C01870CFCC70094 -:1078D0003E040F3E1F0F0F1F0F028387CF03870F3A -:1078E0003FC0079E603FC003FE003FE077E1C0FE5F -:1078F000E0C3E001DFF80307007E70007C3818FE6B -:107900000C1E781C7C3E0E1F1E1E3E007F8307DB74 -:10791000878307C7071071FF003FE201E0C1C3E1A1 -:10792000007FC005F020F8F070FE7879F8023F0C77 -:107930008F030F9FE0C1C78703C3C3B0E1E1C1E379 -:10794000E071F000FC707C0C3E380E1C70C3C70365 -:1079500081C1C7E7000FC7871909EFC433E0C1FC35 -:10796000F870F078F8F061C7001FF8017CF8F07843 -:10797000703C7CCE0E2183CF08078F08C1878F8093 -:10798000C7E30007F8E0EF0039F7800EF8E1E3F80D -:10799000219FC0FF03F807C01FF8C404FCC4C1BC8A -:1079A00087F00FC07F05E025ECC03E8447F08E03D2 -:1079B000F803FBC019F8079C0C17F807E01FA1FC9F -:1079C0000FFC01F03F00FE03F01F00FD00FF880DDB -:1079D000F901FF007007C03E42F30DC47F80FC0731 -:1079E000F05EC03F00783F81FF01F801C3E80CE47E -:1079F000648FE40FF007F0C21F007FC06F807E032A -:107A0000F807F03FC0780F8207FE227770027603F6 -:107A1000FE00FE67007CC7F18EC63BE03F84F31991 -:107A2000D80399FC09B80FF8009D2461F90D00FDF9 -:107A300003F01F903F01F81FD00FF83701F807F04F -:107A40000FC03F00FE03F80FC03F00FA03F00F80A5 -:107A5000FF01B807F001FC01BC80131E007FE1406C -:107A60007FA07FB0003FC01FC0380FF01F80FF0114 -:107A7000FC03F17E01FE01F0FF007FC01D07F00F47 -:107A8000C07E06E007E00FF806C1FE01FC03E00F30 -:107A900000FC00131313130A0E12181A16141014F4 -:107AA0000E120E1212100C0E0A120E0A080606060C -:107AB0000611060606060E10090A080A060606053D -:107AC0000600121A141A120C060606060606060608 -:107AD00006060606060606060606060A0A0606063E -:107AE0002C13000000000000000000000000000057 -:107AF000000000000101020203030404050506065C -:107B00000707000102030405060708090A0B0C0D0C -:107B10000E0F000103040607090A0C0D0F101213C3 -:107B2000151600020406080A0C0E10121416181A74 -:107B30001C1E000205070A0C0F111416191B1E202B -:107B40002325000306090C0F1215181B1E212427DC -:107B50002A2D0003070A0E1115181C1F23262A2D93 -:107B6000313400FCF8F4F0ECE8E4E0DCD8D4D0CC1C -:107B7000C8C400FCF9F5F2EEEBE7E4E0DDD9D6D2BB -:107B8000CFCB00FDFAF7F4F1EEEBE8E5E2DFDCD96C -:107B9000D6D300FDFBF8F6F3F1EEECE9E7E4E2DF23 -:107BA000DDDA00FEFCFAF8F6F4F2F0EEECEAE8E6D4 -:107BB000E4E200FEFDFBFAF8F7F5F4F2F1EFEEEC8B -:107BC000EBE900FFFEFDFCFBFAF9F8F7F6F5F4F33C -:107BD000F2F100FFFFFEFEFDFDFCFCFBFBFAFAF9F3 -:107BE000F9F8005B5B5B5B6E5D5B58595758525907 -:107BF0005D3E52583E6E505D5A3C6E5A6E517965EC -:107C0000795B636A51795D525D674C5D6565796545 -:107C100079005A5858585852515151797979706EA3 -:107C20006E5E5E5E5151517979796565705E5E5E1A -:107C30000801000000000008070808010100010019 -:107C40000705010006010007000501000800000308 -:107C50000000000000000000000100000000000122 -:107C60000E010901000100000000000000000000FA -:107C700000000000000000000000000700000500F8 -:107C8000131000000000005449433F282C1F252DED -:107C90004931241E33251D4518321E18532E3656E1 -:107CA00000000000000000000000000000000000D4 -:107CB000000048271F2B1E2200001F1F1F1F02024B -:107CC000020202020202020505020A020805050B71 -:107CD0000A090808A00808171F121212121E1E1403 -:107CE00014141417171A1A1D1D0202020202021A96 -:107CF0001D1B1A1D1B1A1D1B1A1D1B171D17171DD7 -:107D000017171D17171D1717170002020202040488 -:107D10000404040404040404040404030204040228 -:107D2000020202020101010101010101010101023E -:107D30000202010001000100050505050504040219 -:107D40000001020001020001020001020002020023 -:107D500001030002030002A0A05265616420657265 -:107D6000726F72005772697465206572726F72006B -:107D70004F75742D6F662D6275666665722072652B -:107D800061640000000000000A0B0D0E0D0C0C0BCE -:107D9000090B0B0C0C0C08080C080A08080A03094C -:107DA00006000000000000000003050304000000BE -:107DB000050A020E0D0C0D0C080001000001000068 -:107DC0000100000100000000000000000A00000A9D -:107DD0000000000000E0E6ECF3F900060C060001EC -:107DE00002020203030404050608090B0D0F00003C -:107DF0000000000000000000000000000000000083 -:107E0000000000000000000000000000000000F181 -:107E1000E2D3BB7C95010203030072000200000064 -:107E20000000000000000000000000000000000052 -:107E300000001B000019000000000000000000907E -:107E40009090909090909090909090909090909032 -:107E50009090909090909090909090909090909022 -:107E60009090909090909090909090909090909012 -:107E70009090909090909090909090909090909002 -:107E800090909090909090909090909090909090F2 -:107E900090909090909090909090909090909090E2 -:107EA00090909090909090909090909090909090D2 -:107EB00090909090909090909090909090909070E2 -:107EC00070707070707070707070707070707070B2 -:107ED00070707070707070707070707070707070A2 -:107EE0007070707070707070707070707070707092 -:107EF0007070707070707070707070707070707082 -:107F00007070707070707070707070707070707071 -:107F10007070707070707070707070707070707061 -:107F20007070707070707070707070707070707051 -:107F300070707070707070707070707070707000B1 -:107F4000000000000D0D0E0F0F0F0F0F0C0D0C0F8A -:107F50000F0D0D0D0E0D0C0D0D0D0C09090000007F -:107F600000000000000B0B0B0B0000010B00020EC9 -:107F70000F0F0F0F0D0204000204000104000104A2 -:107F800000000000000000000C000000000F0F00C7 -:107F900002020202040404040404040404040404A9 -:107FA00004030304040303030303010203020103A4 -:107FB000030303010103030302020302030000059C -:107FC0000505050404020002020003020004020089 -:107FD00003020002020002030003030003B0A0003A -:107FE0000000000001010101010101010101010185 -:107FF0000101010101010101010101010100000074 -:10800000000000000000000000000000000000016F -:10801000010101010000000000000000000000005C -:108020000000000000000000000000000000000050 -:1080300000000000434343435448423E282C1E2482 -:108040002C4830241E32241C4418321E18522E365E -:10805000563643494F1A4249253342282F4F4F4243 -:108060004F6E0048261E2A1E221A1A1A4242426EDB -:108070006E6E5454541A1A1A4242426D566D54543C -:10808000547F7F181A17171700000000000A0E13FC -:10809000181B171510140E120E1212100D0F0B12C2 -:1080A0000E0B09060606000000000000000000009C -:1080B0000000000000000000131B151B120D000043 -:1080C0000000101010101010202020202020303030 -:1080D00030303030304040404040404050505050B0 -:1080E00050505050606060606060606060606060D0 -:1080F0007070707070707070707070707070707080 -:10810000707070707070707070707070707070607F -:1081100060606060606060606060605050505050AF -:10812000505050404040404040403030303030307F -:1081300030202020202020101010101010000000EF -:108140000000F0F0F0F0F0F0E0E0E0E0E0E0D0D0AF -:10815000D0D0D0D0D0C0C0C0C0C0C0C0B0B0B0B00F -:10816000B0B0B0B0A0A0A0A0A0A0A0A0A0A0A0A0CF -:1081700090909090909090909090909090909090FF -:10818000909090909090909090909090909090A0DF -:10819000A0A0A0A0A0A0A0A0A0A0A0B0B0B0B0B08F -:1081A000B0B0B0C0C0C0C0C0C0C0D0D0D0D0D0D09F -:1081B000D0E0E0E0E0E0E0F0F0F0F0F0F000006EA1 -:1081C000616D652027257127206973206E6F7420EB -:1081D000646566696E656400756E737570706F7244 -:1081E000746564207479706520666F722025713A19 -:1081F00020272573270027257327206F626A656370 -:1082000074206973206E6F742063616C6C61626CA2 -:108210006500617267756D656E74206861732077A3 -:10822000726F6E6720747970650074797065206F65 -:10823000626A656374202725712720686173206E48 -:108240006F206174747269627574652027257127C7 -:108250000027257327206F626A6563742068617345 -:10826000206E6F20617474726962757465202725B1 -:1082700071270027257327206F626A656374206960 -:1082800073206E6F74206974657261626C6500277B -:10829000257327206F626A656374206973206E6F8F -:1082A0007420616E206974657261746F7200756EFE -:1082B000737570706F727465642074797065732063 -:1082C000666F722025713A20272573272C202725D9 -:1082D0007327006E656564206D6F72652074686138 -:1082E0006E2025642076616C75657320746F20752F -:1082F0006E7061636B00746F6F206D616E792076B4 -:10830000616C75657320746F20756E7061636B208E -:108310002865787065637465642025642900657834 -:1083200063657074696F6E73206D75737420646516 -:10833000726976652066726F6D204261736545785B -:1083400063657074696F6E0063616E6E6F7420692F -:108350006D706F7274206E616D65202571006D65A2 -:108360006D6F727920616C6C6F636174696F6E20E0 -:108370006661696C65642C20686561702069732092 -:108380006C6F636B6564006D656D6F727920616CF5 -:108390006C6F636174696F6E206661696C65642CD3 -:1083A00020616C6C6F636174696E67202575206253 -:1083B00079746573003C6D6F64756C652027257159 -:1083C000273E006C696E6520257520002571200010 -:1083D0004D656D6F72794572726F723A206C657877 -:1083E000657220636F756C64206E6F7420616C6CB5 -:1083F0006F63617465206D656D6F7279006D616981 -:108400006E2E707900736F6674207265626F6F7480 -:108410000D0A0066726F7A656E0073657428290014 -:1084200066726F7A656E73657428002773657427AA -:10843000206F626A65637420726571756972656424 -:10844000002766726F7A656E7365742720686173A2 -:10845000206E6F2073756368206174747269627531 -:10846000746500706F702066726F6D20616E20659C -:108470006D707479207365740001000000000000C5 -:1084800000000000000000000000000000000000EC -:1084900000000000000000000000000000000000DC -:1084A00000000000000000000000000000000000CC -:1084B00000000000000000000000000100000000BB -:1084C000000204000004000004040800040000008E -:1084D000000000000000000000000001000800048F -:1084E0000002040000040000000008010101010175 -:1084F000010101010101010101010101010101016C -:10850000010101010101010101010101010101015B -:10851000010101010101010101010101010101014B -:10852000010101010101010101010101010101013B -:108530000101010204010104010104040801040114 -:108540000101010101010101010101010101010814 -:1085500001040102040101040101010108010000FC -:1085600000000002040000040000040408000400ED -:1085700000000000000000000000000000010008F2 -:10858000000400020400000400000000082C007237 -:10859000616E67652825642C202564002C202564E5 -:1085A00029006D61746820646F6D61696E20657269 -:1085B000726F720042434445464748494B4C3D3632 -:1085C0003E3758383F3957315032592F4E304F5A75 -:1085D0003A543B553351345235533C564D40412863 -:1085E000295B5D7B7D2C3A3B407E3C653D633C6571 -:1085F0003D3E653D633E653D2A653D632A653D2BF5 -:10860000653D2D653D653E26653D7C653D2F653D9F -:10861000632F653D25653D5E653D3D653D21453DDD -:1086200000756E69636F6465206E616D65206573AA -:10863000636170657300616E6400617300617373E0 -:1086400065727400627265616B00636F6E74696E4F -:1086500075650064656C00656C696600656C7365C2 -:10866000006578636570740066696E616C6C790092 -:10867000666F72006C616D626461006E6F7400728F -:10868000657475726E00747279007768696C650044 -:108690007969656C64005F5F64656275675F5F0040 -:1086A0007465787420746F6F206C6F6E672E006332 -:1086B0006F756C64206E6F742070617273652069D1 -:1086C0006E7075742E00476C6974636865733A2028 -:1086D00025640D0A0066756E6374696F6E206D699E -:1086E0007373696E67207265717569726564207055 -:1086F0006F736974696F6E616C20617267756D6507 -:108700006E74202325640066756E6374696F6E2035 -:108710006D697373696E67207265717569726564DE -:10872000206B6579776F726420617267756D656E15 -:108730007420272571270066756E6374696F6E203B -:108740006D697373696E67206B6579776F72642DDD -:108750006F6E6C7920617267756D656E7400736CF5 -:1087600069636528006F626A656374206E6F7420A8 -:10877000696E2073657175656E6365003C636C613D -:10878000737320272571273E003C2573206F626A92 -:108790006563742061742025703E003C73757065BC -:1087A000723A20005F5F696E69745F5F28292073E9 -:1087B000686F756C642072657475726E204E6F6E92 -:1087C000652C206E6F7420272573270063616E6E01 -:1087D0006F74206372656174652027257127206995 -:1087E0006E7374616E6365730074797065202725FC -:1087F0007127206973206E6F7420616E206163633E -:1088000065707461626C6520626173652074797053 -:1088100065006D756C7469706C6520626173657359 -:10882000206861766520696E7374616E6365206C83 -:1088300061792D6F757420636F6E666C6963740067 -:10884000747970652074616B65732031206F7220BC -:108850003320617267756D656E747300697373752B -:1088600062636C6173732829206172672032206D06 -:10887000757374206265206120636C617373206F6F -:10888000722061207475706C65206F6620636C6166 -:1088900073736573006973737562636C61737328B6 -:1088A00029206172672031206D7573742062652004 -:1088B0006120636C6173730063616E277420636F62 -:1088C0006E766572742027257327206F626A656350 -:1088D0007420746F2073747220696D706C696369A1 -:1088E000746C7900737562737472696E67206E6F51 -:1088F0007420666F756E64006A6F696E20657870AB -:10890000656374732061206C697374206F662073D3 -:1089100074722F6279746573206F626A6563747311 -:1089200020636F6E73697374656E74207769746801 -:108930002073656C66206F626A656374007374618E -:1089400072742F656E6420696E6469636573006577 -:108950006D70747920736570617261746F720077E5 -:10896000726F6E67206E756D626572206F66206132 -:108970007267756D656E74730073696E676C6520E0 -:10898000277D2720656E636F756E74657265642040 -:10899000696E20666F726D617420737472696E67A0 -:1089A0000062616420636F6E76657273696F6E201A -:1089B00073706563696669657200756E6D61746375 -:1089C00068656420277B2720696E20666F726D6161 -:1089D0007400657870656374656420273A272061A8 -:1089E0006674657220666F726D6174207370656362 -:1089F00069666965720063616E27742073776974B4 -:108A000063682066726F6D206175746F6D61746943 -:108A100063206669656C64206E756D626572696E4F -:108A20006720746F206D616E75616C206669656C7E -:108A3000642073706563696669636174696F6E0051 -:108A40007475706C6520696E646578206F7574202C -:108A50006F662072616E6765006174747269627519 -:108A6000746573206E6F7420737570706F727465A7 -:108A700064207965740063616E277420737769746C -:108A800063682066726F6D206D616E75616C206623 -:108A900069656C6420737065636966696361746994 -:108AA0006F6E20746F206175746F6D6174696320DF -:108AB0006669656C64206E756D626572696E6700CB -:108AC0003C3E3D5E006263646545664667476E6F87 -:108AD0007378582500696E76616C696420666F72E0 -:108AE0006D6174207370656369666965720073698E -:108AF000676E206E6F7420616C6C6F77656420699F -:108B00006E20737472696E6720666F726D61742077 -:108B1000737065636966696572007369676E206E5C -:108B20006F7420616C6C6F7765642077697468205E -:108B3000696E746567657220666F726D617420730B -:108B400070656369666965722027632700756E6BBF -:108B50006E6F776E20666F726D617420636F6465EF -:108B6000202725632720666F72206F626A65637411 -:108B7000206F662074797065202725732700756E35 -:108B80006B6E6F776E20666F726D617420636F64B9 -:108B900065202725632720666F72206F626A6563F0 -:108BA00074206F6620747970652027666C6F61741D -:108BB0002700273D2720616C69676E6D656E742004 -:108BC0006E6F7420616C6C6F77656420696E2073C2 -:108BD0007472696E6720666F726D61742073706560 -:108BE00063696669657200756E6B6E6F776E20667D -:108BF0006F726D617420636F646520272563272081 -:108C0000666F72206F626A656374206F6620747984 -:108C1000706520277374722700696E636F6D706CC6 -:108C200065746520666F726D617400696E636F6D47 -:108C3000706C65746520666F726D6174206B657908 -:108C4000006E6F7420656E6F75676820617267755E -:108C50006D656E747320666F7220666F726D6174DD -:108C600020737472696E67002525632072657175C3 -:108C70006972657320696E74206F72206368617217 -:108C800000696E74656765722072657175697265D9 -:108C90006400756E737570706F7274656420666FB2 -:108CA000726D6174206368617261637465722027FC -:108CB0002563272028307825782920617420696E63 -:108CC000646578202564006E6F7420616C6C20618F -:108CD0007267756D656E747320636F6E76657274FE -:108CE000656420647572696E6720737472696E675B -:108CF00020666F726D617474696E67007273706C58 -:108D00006974284E6F6E652C6E290020090A0D0BC0 -:108D10000C0073747265616D206F706572617469A7 -:108D20006F6E206E6F7420737570706F72746564EF -:108D3000004F7574206F66206D656D6F7279006FDE -:108D40007574206F66206D656D6F7279000000018B -:108D500001020202020303030303030303040404E6 -:108D600004040404040404040404040404057D7ECF -:108D70007E7F8081828282848484848485878788C0 -:108D800088898A8B8B8C8C8C45727220333636386E -:108D90003300457272203336383934000000000049 -:108DA00000000000000000000000000000000000C3 -:108DB00000000000000000000000000000020202AD -:108DC0000202028200000202020202020303030303 -:108DD00003030303030302020202020202C0A8B05B -:108DE000ACC0A0B8A0C0BCA0ACA8ACC0A0A0ACB4A3 -:108DF000A4C0A8A8B0C0BC000000020020209B2096 -:108E0000C0B920CDA34C8A8E0095F7A239C5067E45 -:108E1000C726374E91F155A1FE24452DA736532E76 -:108E200047DA284129BD2821293DAE282229203DA5 -:108E30002D4148354E4B574F5754AD2822293D4BB5 -:108E4000574F573454AD2823293D204E4148344DC7 -:108E50004245D22824293D20444141344C45D22862 -:108E600025293D20504552534548344ED4282629C3 -:108E70003D2041454EC4282729BD282A293D2041AF -:108E8000453453544552494853CB282B293D205053 -:108E90004C414834D3282C293DAC20282D29203D95 -:108EA000AD282D29BD282E293D20504F594ED428BC -:108EB0002F293D20534C41453453C82830293D20AB -:108EC0005A495934524FD72028315354293D4645E9 -:108ED000523453D4202831305448293D5445483425 -:108EE0004E54C82831293D2057414834CE202832DD -:108EF0004E44293D534548344B554EC42832293DF4 -:108F000020545557B42028335244293D54484552E3 -:108F100034C42833293D205448524959B4283429AF -:108F20003D20464F4834D22028355448293D4649F3 -:108F300048344654C82835293D2046415934D62066 -:108F400028363429203D534948344B53544959203D -:108F5000464F48D22836293D20534948344BD32820 -:108F600037293D20534548345655CE20283854489B -:108F7000293D45593454C82838293D20455934D411 -:108F80002839293D204E415934CE283A293DAE2872 -:108F90003B293DAE283C293D204C454834532044D4 -:108FA000484145CE283D293D204959344B57554C21 -:108FB000DA283E293D204752455934544552204431 -:108FC000484145CE283F293DBF2840293D20414505 -:108FD00036D4285E293D204B414534524958D45D52 -:108FE000C15DC12028412E293D454834592EA02875 -:108FF0004129203D41C8202841524529203D414179 -:10900000D220284152294F3D4158D228415229238C -:109010003D454834D2205E28415329233D455934EB -:10902000D328412957413D41D8284157293D414F37 -:10903000B5203A28414E59293D4548344E49D92852 -:1090400041295E2B233D4559B5233A28414C4C59C3 -:10905000293D554C49D92028414C29233D55CC2840 -:10906000414741494E293D415847454834CE233A6E -:1090700028414729453D4948CA2841295E253D45A3 -:10908000D92841295E2B3A233D41C5203A28412960 -:109090005E2B203D4559B42028415252293D41586C -:1090A000D228415252293D414534D2205E284152B6 -:1090B00029203D414135D2284152293D414135D2F7 -:1090C00028414952293D454834D2284149293D4546 -:1090D00059B4284159293D4559B5284155293D41A3 -:1090E0004FB4233A28414C29203D55CC233A2841FE -:1090F0004C5329203D554CDA28414C4B293D414FDA -:1091000034CB28414C295E3D414FCC203A28414286 -:109110004C45293D4559344255CC2841424C4529BE -:109120003D41584255CC284129564F3D4559B42818 -:10913000414E47292B3D4559344ECA28415441528E -:1091400049293D4148544141345249D92841295483 -:109150004F4D3D41C52841295454493D41C5202822 -:10916000415429203D4145D420284129543D41C83E -:109170002841293D41C55DC220284229203D424960 -:1091800059B420284245295E233D4249C82842451A -:10919000494E47293D4249593449484ED820284232 -:1091A0004F544829203D424F573454C82028425537 -:1091B0005329233D42494834DA28425245414B293C -:1091C0003D4252455935CB284255494C293D4249EB -:1091D0004834CC2842293DC25DC320284329203D84 -:1091E000534959B420284348295E3DCB5E45284366 -:1091F00048293DCB284348412952233D4B4548B59A -:10920000284348293D43C8205328434929233D5337 -:109210004159B428434929413D53C8284349294F5E -:109220003D53C828434929454E3D53C82843495416 -:1092300059293D5349485449D92843292B3DD3281E -:10924000434B293DCB28434F4D4D4F444F52452969 -:109250003D4B4141344D4148444F48D228434F4D46 -:10926000293D4B4148CD2843554954293D4B494858 -:10927000D42843524541293D4B52495945D92843A9 -:10928000293DCB5DC420284429203D444959B420C0 -:109290002844522E29203D444141344B5445D22389 -:1092A0003A2844454429203D444948C42E45284491 -:1092B00029203DC4233A5E45284429203DD4202856 -:1092C0004445295E233D4449C82028444F29203D78 -:1092D0004455D72028444F4553293D444148DA2876 -:1092E000444F4E4529203D44414835CE28444F49FE -:1092F0004E47293D4455573449484ED82028444FBD -:1093000057293D4441D72328445529413D4A55D743 -:1093100023284455295E233D4A41D82844293DC489 -:109320005DC520284529203D49594959B4233A288B -:10933000452920BD273A5E28452920BD203A2845E9 -:1093400029203D49D92328454429203DC4233A28D2 -:1093500045294420BD2845562945523D454834D627 -:109360002845295E253D4959B42845524929233DC0 -:109370004959345249D928455249293D4548345222 -:1093800049C8233A28455229233D45D228455252FF -:109390004F52293D454834524F48D22845524153F7 -:1093A00045293D494852455935D328455229233D41 -:1093B0004548D2284552293D45D220284556454E9C -:1093C000293D4959564548CE233A28452957BD409D -:1093D000284557293D55D7284557293D5955D72860 -:1093E00045294F3D49D9233A2628455329203D494F -:1093F00048DA233A2845295320BD233A28454C59B9 -:1094000029203D4C49D9233A28454D454E54293D04 -:109410004D45484ED4284546554C293D465548CCE7 -:10942000284545293D4959B4284541524E293D45D5 -:109430005235CE2028454152295E3D4552B528453A -:109440004144293D4548C4233A28454129203D4906 -:109450005941D82845412953553D4548B5284541EE -:10946000293D4959B52845494748293D4559B4281A -:109470004549293D4959B42028455945293D415977 -:10948000B4284559293D49D9284555293D595557AD -:10949000B528455155414C293D4959344B5755CC78 -:1094A0002845293D45C85DC620284629203D454818 -:1094B00034C62846554C293D465548CC2846524985 -:1094C000454E44293D46524548354EC428464154F0 -:1094D000484552293D46414134444845D228462911 -:1094E00046BD2846293DC65DC720284729203D4A5C -:1094F0004959B428474956293D47494835D6202877 -:109500004729495E3DC728474529543D474548B549 -:1095100053552847474553293D474A454834D328A2 -:109520004747293DC72042232847293DC7284729C7 -:109530002B3DCA284752454154293D47524559348D -:10954000D428474F4E29453D47414F35CE23284724 -:109550004829BD2028474E293DCE2847293DC75DD3 -:10956000C820284829203D45593443C8202848416F -:1095700056293D2F48414536D62028484552452991 -:109580003D2F484959D22028484F5552293D41572F -:109590003545D228484F57293D2F4841D7284829DB -:1095A000233D2FC8284829BD5DC92028494E293DA3 -:1095B0004948CE20284929203D4159B4284929202D -:1095C0003D41D928494E29443D415935CE53454D59 -:1095D0002849293D49D920414E542849293D41D99E -:1095E00028494552293D495945D2233A52284945EF -:1095F0004429203D4959C42849454429203D415921 -:1096000035C42849454E293D49594548CE28494544 -:1096100029543D41593445C8284927293D4159B568 -:10962000203A2849295E253D4159B5203A28494527 -:1096300029203D4159B4284929253D49D928494582 -:10964000293D4959B4202849444541293D415944BF -:1096500049593541C82849295E2B3A233D49C82834 -:10966000495229233D4159D228495A29253D41597A -:10967000DA28495329253D4159DA495E2849295EAE -:10968000233D49C82B5E2849295E2B3D41D9233A09 -:109690005E2849295E2B3D49C82849295E2B3D415A -:1096A000D9284952293D45D228494748293D4159A1 -:1096B000B428494C44293D4159354CC420284947D8 -:1096C0004E293D494847CE2849474E29203D41591A -:1096D00034CE2849474E295E3D415934CE2849476A -:1096E0004E29253D415934CE284943524F293D4109 -:1096F00059344B524FC82849515545293D49593491 -:10970000CB2849293D49C85DCA20284A29203D4A1D -:109710004559B4284A293DCA5DCB20284B29203D14 -:109720004B4559B420284B294EBD284B293DCB5DD4 -:10973000CC20284C29203D454834CC284C4F294387 -:10974000233D4C4FD74C284C29BD233A5E284C2949 -:10975000253D55CC284C454144293D4C4959C42010 -:10976000284C41554748293D4C414534C6284C2991 -:109770003DCC5DCD20284D29203D454834CD2028C5 -:109780004D522E29203D4D494834535445D220286E -:109790004D532E293D4D494835DA20284D52532E40 -:1097A00029203D4D494834534958DA284D4F562910 -:1097B0003D4D555734D6284D414348494E293D4DDE -:1097C00041485348495935CE4D284D29BD284D298A -:1097D0003DCD5DCE20284E29203D454834CE45283C -:1097E0004E47292B3D4ECA284E4729523D4E58C759 -:1097F000284E4729233D4E58C7284E474C29253D22 -:109800004E584755CC284E47293D4ED8284E4B2917 -:109810003D4E58CB20284E4F5729203D4E4157B43E -:109820004E284E29BD284E4F4E29453D4E414834C5 -:10983000CE284E293DCE5DCF20284F29203D4F48D0 -:1098400034D7284F4629203D4148D620284F482963 -:10985000203D4F57B5284F524F554748293D455257 -:10986000344FD7233A284F5229203D45D2233A2856 -:109870004F525329203D4552DA284F52293D414F3E -:10988000D220284F4E45293D574148CE23284F4EE0 -:109890004529203D574148CE284F57293D4FD720D5 -:1098A000284F564552293D4F57355645D2505228DC -:1098B0004F29563D5557B4284F56293D414834D677 -:1098C000284F295E253D4F57B5284F295E454E3D0F -:1098D0004FD7284F295E49233D4F57B5284F4C2974 -:1098E000443D4F5734CC284F55474854293D414FAC -:1098F00035D4284F554748293D414835C620284F83 -:1099000055293D41D748284F552953233D4157B448 -:10991000284F5553293D4158D3284F5552293D4F83 -:1099200048D2284F554C44293D554835C4284F55F9 -:10993000295E4C3D4148B5284F5550293D55573576 -:10994000D0284F55293D41D7284F59293D4FD92877 -:109950004F494E47293D4F573449484ED8284F4923 -:10996000293D4F59B5284F4F52293D4F4835D228F0 -:109970004F4F4B293D554835CB46284F4F44293D45 -:10998000555735C44C284F4F44293D414835C44DA7 -:10999000284F4F44293D555735C4284F4F44293D42 -:1099A000554835C446284F4F54293D554835D4288D -:1099B0004F4F293D5557B5284F27293D4FC8284FB0 -:1099C00029453D4FD7284F29203D4FD7284F4129C2 -:1099D0003D4F57B420284F4E4C59293D4F57344ED8 -:1099E0004C49D920284F4E4345293D574148344ED4 -:1099F000D3284F4E2754293D4F57344ED443284F38 -:109A0000294E3D41C1284F294E473D41CF203A5E66 -:109A1000284F294E3D41C849284F4E293D55CE2358 -:109A20003A284F4E293D55CE235E284F4E293D55AD -:109A3000CE284F2953543D4FD7284F46295E3D41EC -:109A40004F34C6284F54484552293D414835444873 -:109A500045D252284F29423D5241C15E52284F29DA -:109A60003A233D4F57B5284F535329203D414F3599 -:109A7000D3233A5E284F4D293D4148CD284F293DFB -:109A800041C15DD020285029203D504959B428506B -:109A900048293DC62850454F504C293D504959351D -:109AA0005055CC28504F57293D504157B428505558 -:109AB0005429203D505548D428502950BD285029BC -:109AC00053BD2850294EBD2850524F462E293D5097 -:109AD000524F48464548345345D22850293DD05D21 -:109AE000D120285129203D4B595557B42851554173 -:109AF00052293D4B574F4835D2285155293D4BD718 -:109B00002851293DCB5DD220285229203D414135A5 -:109B1000D220285245295E233D5249D92852295244 -:109B2000BD2852293DD25DD320285329203D4548E8 -:109B300034D3285348293D53C8232853494F4E292D -:109B40003D5A4855CE28534F4D45293D534148CDA8 -:109B5000232853555229233D5A4845D2285355525C -:109B600029233D534845D22328535529233D5A489C -:109B700055D7232853535529233D534855D72328D8 -:109B8000534544293D5AC423285329233DDA2853F9 -:109B9000414944293D534548C45E2853494F4E2905 -:109BA0003D534855CE28532953BD2E285329203DD7 -:109BB000DA233A2E45285329203DDA233A5E23281A -:109BC0005329203DD355285329203DD3203A23281B -:109BD0005329203DDA2323285329203DDA20285316 -:109BE0004348293D53CB285329432BBD2328534DAC -:109BF000293D5A55CD2328534E29273D5A55CD2866 -:109C000053544C45293D5355CC2853293DD35DD45D -:109C100020285429203D544959B420285448452926 -:109C200020233D444849D9202854484529203D4413 -:109C30004841D828544F29203D5455D8202854480D -:109C40004154293D44484145D4202854484953298A -:109C5000203D44484948D3202854484559293D448B -:109C60004845D920285448455245293D444845484F -:109C7000D22854484552293D444845D228544845A5 -:109C80004952293D44484548D220285448414E294C -:109C9000203D44484145CE20285448454D29203D8B -:109CA00044484145CE28544845534529203D444821 -:109CB0004959DA20285448454E293D44484548CE64 -:109CC000285448524F554748293D5448525557B497 -:109CD0002854484F5345293D44484F48DA285448B2 -:109CE0004F55474829203D44484FD728544F4441B9 -:109CF00059293D5455584445D928544F4D4F295260 -:109D0000524F573D54554D4141B528544F29544168 -:109D10004C3D544F57B5202854485553293D44488D -:109D2000414834D3285448293D54C8233A2854453F -:109D300044293D544958C45328544929234E3D438E -:109D4000C8285449294F3D53C828544929413D53F7 -:109D5000C8285449454E293D534855CE285455529C -:109D600029233D434845D228545529413D43485570 -:109D7000D7202854574F293D5455D72628542945D4 -:109D80004E20BD2854293DD45DD520285529203D9D -:109D9000595557B42028554E29493D595557CE207D -:109DA00028554E293D4148CE202855504F4E293D3B -:109DB000415850414FCE4028555229233D554834F3 -:109DC000D228555229233D59554834D22855522975 -:109DD0003D45D22855295E203D41C82855295E5E63 -:109DE0003D4148B5285559293D4159B52047285589 -:109DF0002923BD4728552925BD47285529233DD767 -:109E0000234E2855293D5955D7402855293D55D72A -:109E10002855293D5955D75DD620285629203D562D -:109E20004959B42856494557293D56595557B528DB -:109E300056293DD65DD720285729203D4441483436 -:109E400042554C5955D7202857455245293D57452D -:109E5000D22857412953483D5741C12857412953DA -:109E6000543D5745D928574129533D5741C8285794 -:109E70004129543D5741C1285748455245293D572E -:109E8000484548D22857484154293D57484148D46D -:109E90002857484F4C293D2F484F57CC2857484FFB -:109EA000293D2F4855D7285748293D57C82857419D -:109EB0005229233D574548D228574152293D574101 -:109EC0004FD228574F52295E3D5745D22857522925 -:109ED0003DD228574F4D29413D575548CD28574F22 -:109EE0004D29453D574948CD2857454129523D57B1 -:109EF00045C82857414E54293D574141354ED4411C -:109F00004E5328574552293D45D22857293DD75D04 -:109F1000D820285829203D4548344BD2202858299C -:109F20003DDA2858293D4BD35DD920285929203DB9 -:109F3000574159B428594F554E47293D5941484E2C -:109F4000D82028594F5552293D594F48D2202859D9 -:109F50004F55293D5955D72028594553293D594535 -:109F600048D3202859293DD9462859293D41D9505F -:109F70005328594348293D4159CB233A5E28592952 -:109F80003D49D9233A5E285929493D49D9203A28E3 -:109F90005929203D41D9203A285929233D41D9202A -:109FA0003A2859295E2B3A233D49C8203A28592995 -:109FB0005E233D41D92859293D49C85DDA20285AF8 -:109FC00029203D5A4959B4285A293DDAEA74727554 -:109FD000650066616C736500286E756C6C290030D5 -:109FE00030303030303030303030303030303000A1 -:109FF0002020202020202020202020202020202061 -:10A00000001213141615170F0D0E1110696E6C69DE -:10A010006E6520617373656D626C6572206D75731A -:10A020007420626520612066756E6374696F6E00CE -:10A03000756E6B6E6F776E207479706500726574E3 -:10A0400075726E20616E6E6F746174696F6E206DD3 -:10A0500075737420626520616E206964656E746931 -:10A060006669657200657870656374696E67206102 -:10A070006E20617373656D626C657220696E7374B6 -:10A0800072756374696F6E00276C6162656C27205E -:10A090007265717569726573203120617267756DC3 -:10A0A000656E74006C6162656C20726564656669DA -:10A0B0006E65640027616C69676E27207265717533 -:10A0C00069726573203120617267756D656E740009 -:10A0D00027646174612720726571756972657320E8 -:10A0E0006174206C65617374203220617267756DD4 -:10A0F000656E7473002764617461272072657175E1 -:10A100006972657320696E74656765722061726734 -:10A11000756D656E7473002A78206D757374206296 -:10A12000652061737369676E6D656E74207461720A -:10A1300067657400696E7465726E616C20636F6D23 -:10A1400070696C6572206572726F72006D756C74E7 -:10A1500069706C65202A7820696E20617373696765 -:10A160006E6D656E740063616E2774206173736930 -:10A17000676E20746F206C69746572616C00636136 -:10A180006E27742061737369676E20746F20657821 -:10A190007072657373696F6E00696C6C6567616C72 -:10A1A0002065787072657373696F6E20666F7220B8 -:10A1B0006175676D656E7465642061737369676E40 -:10A1C0006D656E7400737570657228292063616C0B -:10A1D0006C2063616E6E6F742066696E64207365B7 -:10A1E0006C660063616E27742068617665206D750A -:10A1F0006C7469706C65202A780063616E27742026 -:10A2000068617665206D756C7469706C65202A2AAA -:10A2100078004C4853206F66206B6579776F7264C5 -:10A2200020617267206D75737420626520616E20F5 -:10A230006964006E6F6E2D6B6579776F7264206153 -:10A240007267206166746572206B6579776F7264DE -:10A250002061726700696E76616C6964206D696364 -:10A26000726F707974686F6E206465636F72617469 -:10A270006F72006E6F6E2D64656661756C7420611F -:10A280007267756D656E7420666F6C6C6F77732086 -:10A2900064656661756C7420617267756D656E7456 -:10A2A0000064656661756C742027657863657074F9 -:10A2B0003A27206D757374206265206C6173740099 -:10A2C00063616E2774206465636C617265206E6FD4 -:10A2D0006E6C6F63616C20696E206F75746572209F -:10A2E000636F6465006964656E7469666965722090 -:10A2F0007265646566696E6564206173206E6F6E59 -:10A300006C6F63616C006E6F2062696E64696E676A -:10A3100020666F72206E6F6E6C6F63616C20666F6B -:10A32000756E64006964656E746966696572207231 -:10A3300065646566696E656420617320676C6F6231 -:10A34000616C0027636F6E74696E756527206F7589 -:10A350007473696465206C6F6F7000276272656149 -:10A360006B27206F757473696465206C6F6F700064 -:10A3700063616E27742064656C6574652065787010 -:10A3800072657373696F6E006E616D6520726575BD -:10A3900073656420666F7220617267756D656E7497 -:10A3A000002772657475726E27206F757473696407 -:10A3B000652066756E6374696F6E00277969656CD8 -:10A3C0006427206F7574736964652066756E6374A5 -:10A3D000696F6E00657870656374696E67206B6580 -:10A3E000793A76616C756520666F72206469637472 -:10A3F000696F6E61727900657870656374696E6704 -:10A40000206A75737420612076616C756520666FB3 -:10A4100072207365740062756666657220746F6F72 -:10A4200020736D616C6C006368722829206172670B -:10A43000206E6F7420696E2072616E6765283078B7 -:10A44000313130303030290061726720697320610A -:10A450006E20656D7074792073657175656E6365C6 -:10A46000006F7264282920657870656374656420C4 -:10A4700061206368617261637465722C2062757417 -:10A4800020737472696E67206F66206C656E6774E6 -:10A490006820256420666F756E64006D7573742086 -:10A4A000757365206B6579776F726420617267756B -:10A4B0006D656E7420666F72206B65792066756EAF -:10A4C0006374696F6E000A2573006C6F63616C20A2 -:10A4D0007661726961626C65207265666572656E2F -:10A4E000636564206265666F726520617373696776 -:10A4F0006E6D656E74006279746520636F646520AB -:10A500006E6F7420696D706C656D656E7465640046 -:10A510004E6F206163746976652065786365707439 -:10A52000696F6E20746F2072657261697365007364 -:10A530007461636B3A202575206F7574206F6620F7 -:10A5400025640A007173747220706F6F6C3A206E0C -:10A550005F706F6F6C3D25752C206E5F7173747228 -:10A560003D25752C206E5F7374725F646174615F4A -:10A5700062797465733D25752C206E5F746F74610C -:10A580006C5F62797465733D25750A0025713D0025 -:10A59000696E76616C6964206765737475726500B5 -:10A5A0002B2D786B63642E636F6D2F333533B32D92 -:10A5B0002B0A7CC0207C0A7CB4205C302F89207C54 -:10A5C0000A7CB2202F83205C89207C0A7C88205959 -:10A5D0006F7527726520666C79696E672192204DD0 -:10A5E0006963726F507974686F6E2120202F7C88A8 -:10A5F000207C0A7C8C20486F773FA6205C205C87FB -:10A60000207C0A7C8C202FB3207C0A7C8A2030B5E9 -:10A61000207C0A7C89202F7C5CB4207C0A7C8A20E8 -:10A620007CB5207C0A7C852D845F2F5F5C9E5F96C5 -:10A630002D7C0A7CC0207C0A2BC02D2B0A00766161 -:10A640006C7565206D7573742062652030206F72A3 -:10A6500020310076616C7565206D757374206265BC -:10A66000206265747765656E203020616E642031EC -:10A6700030323300696E76616C696420706572698E -:10A680006F6400657870656374696E67206120701F -:10A69000696E004D75737420626520616E2041758E -:10A6A00064696F42756666657200696E64657820DC -:10A6B0006F7574206F6620626F756E6473004361FE -:10A6C0006E6E6F742064656C65746520656C656D75 -:10A6D000656E7473206F6620417564696F467261A0 -:10A6E0006D650076616C7565206F7574206F6620EE -:10A6F00072616E676500416C6C6F636174696F6E47 -:10A7000020696E20696E746572727570742068615C -:10A710006E646C6572006E6F7420616E20417564AA -:10A72000696F4672616D650043616E6E6F74207370 -:10A7300065742072657475726E5F70696E207769DA -:10A7400074686F75742070696E00696E6465782036 -:10A7500063616E6E6F74206265206E6567617469F7 -:10A76000766500696E64657820746F6F206C617225 -:10A770006765005468697320696D6167652063616E -:10A780006E6E6F74206265206D6F646966696564C2 -:10A790002E2054727920636F7079696E6720697416 -:10A7A0002066697273742E006272696768746E65E0 -:10A7B0007373206F7574206F6620626F756E64739B -:10A7C0002E00496D61676528000A2020202000279F -:10A7D0000A202020202700303132333435363738F4 -:10A7E0003900556E657870656374656420636861CF -:10A7F00072616374657220696E20496D61676520BE -:10A80000646566696E6974696F6E2E00696D616753 -:10A8100065206461746120697320696E636F727270 -:10A820006563742073697A6500496D6167652829DD -:10A830002074616B6573203020746F203320617247 -:10A8400067756D656E747300496D6167652873295E -:10A850002074616B6573206120737472696E672E5A -:10A86000004272696768746E657373206D756C74ED -:10A8700069706C696572206D757374206E6F7420D9 -:10A880006265206E656761746976652E00496D6149 -:10A89000676573206D757374206265207468652028 -:10A8A00073616D652073697A652E004932432072A9 -:10A8B000656164206661696C6564207769746820ED -:10A8C0006572726F7220636F64652025640049327F -:10A8D00043207772697465206661696C65642077CE -:10A8E000697468206572726F7220636F64652025D9 -:10A8F00064004D6963726F507974686F6E206F6E7B -:10A9000020746865206D6963726F3A6269742069AA -:10A91000732062726F7567687420746F20796F7529 -:10A920002062793A0A44616D69656E20502E204795 -:10A93000656F7267652C204D61726B205368616E84 -:10A940006E6F6E2C205261646F6D697220446F705F -:10A95000696572616C736B692C204D6174746865F4 -:10A960007720456C73652C0A4361726F6C205769C0 -:10A970006C6C696E672C20546F6D2056696E657221 -:10A980002C20416C616E204A61636B736F6E2C20CA -:10A990004E69636B20436F67686C616E2C204A6F51 -:10A9A0007365706820486169672C0A416C6578207E -:10A9B0004368616E2C20416E64726561204772614C -:10A9C0006E64692C205061756C204567616E2C2087 -:10A9D00050696F7472204B617370727A796B2C209E -:10A9E000416E64726577204D756C686F6C6C616E3A -:10A9F000642C0A4D61747420576865656C65722C0F -:10AA0000204A6F6520476C616E63792C2041626239 -:10AA100069652042726F6F6B7320616E64204E69AE -:10AA200063686F6C617320482E20546F6C6C657284 -:10AA30007665792E0A00546865205A656E206F6627 -:10AA4000204D6963726F507974686F6E2C20627943 -:10AA5000204E6963686F6C617320482E20546F6CC0 -:10AA60006C65727665790A0A436F64652C0A4861E1 -:10AA7000636B2069742C0A4C657373206973206DB5 -:10AA80006F72652C0A4B6565702069742073696D5F -:10AA9000706C652C0A536D616C6C20697320626563 -:10AAA0006175746966756C2C0A0A42652062726170 -:10AAB00076652120427265616B207468696E6773E8 -:10AAC00021204C6561726E20616E6420686176653C -:10AAD0002066756E210A4578707265737320796FF0 -:10AAE000757273656C662077697468204D6963724E -:10AAF0006F507974686F6E2E0A0A48617070792001 -:10AB00006861636B696E6721203A2D290A00696EBE -:10AB100076616C696420636F6C6F757200696E7624 -:10AB2000616C6964206E756D626572206F6620705D -:10AB30006978656C73000808080808080808002090 -:10AB4000202020202020200001000100E2ECF0F471 -:10AB5000F8FC0004726164696F206973206E6F7481 -:10AB600020656E61626C656400617267756D656E0B -:10AB70007473206D757374206265206B6579776FCF -:10AB8000726420617267756D656E747300756E6BAB -:10AB90006E6F776E20617267756D656E7420272504 -:10ABA00071270076616C7565206F7574206F662063 -:10ABB00072616E676520666F7220617267756D6580 -:10ABC0006E74202725712700726563656976656458 -:10ABD000207061636B6574206973206E6F742061EF -:10ABE00020737472696E67006E6F7420616E2069E5 -:10ABF0006D6167652E00696E646578206F757420DD -:10AC00006F6620626F756E64732E0000000402028E -:10AC10000402000002040404000202000404030110 -:10AC20000000010303030001010203030402010108 -:10AC300003010403010003000004010102000003FA -:10AC4000023A257000772B002F737464696E002F11 -:10AC5000737464657272002F7374646F7574004F3F -:10AC60006E6C792038626974732053504920737573 -:10AC700070706F727465640053504920666F726D16 -:10AC80006174206572726F72004E6F206176616927 -:10AC90006C61626C6520535049004E6F2061766193 -:10ACA000696C61626C65204932430000000000005D -:10ACB00008080800080A4A4000000A5FEA5FEA0E36 -:10ACC000D92ED36E19324489330C924C924D080818 -:10ACD00000000004880808040804848488000A44EA -:10ACE0008A4000048EC480000000048800000EC06A -:10ACF00000000000080001224488100C9252524CBF -:10AD0000048C84848E1C824C901E1EC244924C067D -:10AD1000CA525FE21FF01EC13E02448ED12E1FE2D6 -:10AD20004488100ED12ED12E0ED12EC488000800DA -:10AD3000080000048004880244880482000EC00ECB -:10AD4000C008048244880ED126C0040ED135B36CED -:10AD50000C925ED2521C925C925C0ED010100E1CB3 -:10AD60009252525C1ED01C901E1ED01C90100ED011 -:10AD700013712E12525ED2521C8808081C1FE24228 -:10AD8000524C1254981492101010101E113B75B1B1 -:10AD900031113935B3710C9252524C1C925C9010A7 -:10ADA0000C92524C861C925C92510ED00C825C1F0D -:10ADB000E4848484125252524C1131312A441131AC -:10ADC00035BB7112524C9252112A4484841EC4889D -:10ADD000101E0EC808080E10080482410EC242421E -:10ADE0004E048A400000000000001F08048000009C -:10ADF000000ED2524F10101C925C000ED0100E02AA -:10AE0000424ED24E0C925C900E06C81C88080ED2A0 -:10AE10004EC24C10101C9252080008080802400252 -:10AE2000424C10149814920808080806001B75B1CB -:10AE300031001C925252000C92524C001C925C90B9 -:10AE4000000ED24EC2000ED010100006C8049808A2 -:10AE5000080EC807001252524F0011312A44001147 -:10AE60003135BB00124C8C9200112A4498001EC44C -:10AE7000881E06C48C8486080808080818080C88F0 -:10AE80001800000C83607A76677074756F6965616D -:10AE90007A76677074756F6965617A766770740128 -:10AEA000000002000003000004010004020004038B -:10AEB000000304000204000104000003000002007B -:10AEC000000100302C3235352C302C3235352C3009 -:10AED0000A302C3235352C302C3235352C300A30B6 -:10AEE0002C302C302C302C300A3235352C302C3094 -:10AEF0002C302C3235350A302C3235352C32353564 -:10AF00002C3235352C300A00445241572041204321 -:10AF10004952434C4500312E342E31390002000491 -:10AF200001080200000402020402000002040404FA -:10AF300000020200040403010000010303030001F6 -:10AF400001020303040201010301040301000300E1 -:10AF50000004010102000003021B1B000E1100008F -:10AF600000006261642068616E646C6520746F200B -:10AF7000756E6465726C79696E67207472616E7348 -:10AF8000706F72740050776D4F75742070696E2009 -:10AF90006D617070696E67206661696C65642E20F2 -:10AFA000416C6C20617661696C61626C6520505700 -:10AFB0004D206368616E6E656C73206172652069F7 -:10AFC0006E207573652E00636F756C64206E6F74F0 -:10AFD0002070696E6F75740070696E6D6170206DA0 -:10AFE00069732D6D617463680070696E6D617020A6 -:10AFF0006E6F7420666F756E6420666F7220706568 -:10B00000726970686572616C0070696E6D61702044 -:10B010006E6F7420666F756E6420666F7220667541 -:10B020006E6374696F6E00232D302B2000686C4CAA -:10B030000065666745464700303132333435363770 -:10B040003839414243444546003031323334353695 -:10B0500037383961626364656600412D46612D664B -:10B06000383930313233343536375D002B2D0030EE -:10B070003000785800002020202020202020202888 -:10B0800028282828202020202020202020202020A0 -:10B0900020202020202088101010101010101010D8 -:10B0A0001010101010100404040404040404040418 -:10B0B0001010101010101041414141414101010197 -:10B0C0000101010101010101010101010101010170 -:10B0D000011010101010104242424242420202027D -:10B0E0000202020202020202020202020202020240 -:10B0F00002101010102000000000000000000000EE -:10B10000000000000000000000000000000000003F -:10B11000000000000000000000000000000000002F -:10B12000000000000000000000000000000000001F -:10B13000000000000000000000000000000000000F -:10B1400000000000000000000000000000000000FF -:10B1500000000000000000000000000000000000EF -:10B1600000000000000000000000000000000000DF -:10B1700000000000000000001000000000000000BF -:10B18000017A5200027C0E011B0C0D001000000021 -:10B19000180000009402FFFF1400000000000000EF -:10B1A00000000000D04FFC7F010000000000000004 -:10B1B000294803000000000008000020E20400000D -:10B1C000175402001754020017540200AC01030088 -:10B1D000BC020300442A002000000000BC0203005F -:10B1E0006C2A002000000000BC10030000000000DA -:10B1F0000000000000000000E803000064150300E8 -:10B20000000000000000000000000000000000003E -:10B21000000000000000000000000100000000002D -:10B22000000000000000000000000000000000001E -:10B2300000000000D82F0020ABAC0300000000008D -:10B24000041F0300241F0300441F0300000000002C -:10B25000000000000000000000000000A9AC030096 -:10B2600000000000000000000000000000000000DE -:10B2700000000000000000000000000000000000CE -:10B2800000000000000000000000000000000000BE -:10B2900000000000000000000000000090000020FE -:10B2A00075B0030078000400040488130100010055 -:10B2B0000100010101030204010000003901000046 -:10B2C00021620100E1780100198001000190010074 -:04B2D0000D0100006C -:04000005000153EDB6 -:00000001FF +:020000040000FA +:1000000000400020ED530100295401002B54010051 +:1000100000000000000000000000000000000000E0 +:100020000000000000000000000000002D5401004E +:1000300000000000000000002F54010031540100B6 +:10004000335401004D440100E55D010033540100CB +:100050003354010000000000F59701003354010003 +:10006000B9B000003354010055940100335401002D +:100070003354010033540100335401003354010060 +:1000800033540100D15A01003354010033540100AC +:1000900033540100799101005591010001B2000033 +:1000A00011B2000033540100000000000000000005 +:1000B0000000000000000000000000000000000040 +:1000C00008B5054B054803331B1A062B03D9044B0F +:1000D000002B00D0984708BD2801002028010020EF +:1000E000000000000648074908B5091A8910CB0F1F +:1000F0005918491003D0044B002B00D0984708BD75 +:1001000028010020280100200000000010B5074C45 +:100110002378002B09D1FFF7D3FF054B002B02D02A +:10012000044800E000BF0123237010BD2801002017 +:100130000000000078B1030008B5094B002B03D084 +:100140000848094900E000BF08480368002B02D1B5 +:10015000FFF7C8FF08BD064B002BF9D09847F7E71B +:100160000000000078B103002C01002028010020CD +:1001700000000000144B002B00D1124B9D46402282 +:1001800092029A1A924600218B460F461148124A53 +:10019000121A2BF04EF80D4B002B00D098470C4B49 +:1001A000002B00D098470020002104000D000B48D0 +:1001B0002AF018FF20F038FF2000290028F02FFD3A +:1001C00020F07EFC0000080000400020000000003D +:1001D0000000000028010020D82F0020D90D0200C7 +:1001E000C4600561466187614146C161494601625B +:1001F00051464162594681626946C16271468160D9 +:10020000124B1A6802601860002070470F4B1A6882 +:1002100012681A6070470D4B1A68002A01D124F049 +:10022000CFFC506010681860D468156956699769EA +:10023000D1698846116A8946516A8A46916A8B4615 +:10024000D16A8D4691688E4601207047902E00201D +:10025000074BDB68002B09D05A68904204D3801A00 +:1002600004308000C05802E01B68F3E7181C704798 +:10027000882E002038B5114D041CEB689868DB68A7 +:1002800083420FD30230C00023F0E2F9EB68DA6852 +:10029000596803609B6852185B00836000234260CA +:1002A000C360E860E968CB6848685A1C04339B0067 +:1002B0000138CA6080185C5038BDC046882E0020C6 +:1002C000074B4118884205D25A01D31802780130F1 +:1002D0005340F7E7D8B2002800D101307047C0463C +:1002E00005150000034B044ADA6000228C331A60C3 +:1002F0007047C046882E002098B90200F0B585B03E +:10030000071C0E1CFFF7DCFF164B0290DC68002C6C +:1003100024D0231C10330193E368019D04339B0018 +:10032000E3180393039B9D4216D22868029A037830 +:1003300093420FD14378B3420CD10230391C321CA6 +:100340002AF04BFF002805D1019BE81A636885104D +:10035000E81804E00435E5E72468D8E7201C05B078 +:10036000F0BDC046882E0020F0B585B00290019106 +:10037000FFF7C4FF021E5BD12F4C019B271C8C375B +:100380003868DD1C002819D0261C2C4B90361B68C1 +:1003900031680393EB188B4210D9691823F07BF96D +:1003A0000390002807D1254B3868196823F066F9B7 +:1003B000039B3B6002E03368EB183360231C8C33F3 +:1003C0001B68002B17D12E1E7F2E00D88026301CD4 +:1003D000271C23F04AF98C373860002804D1281CE8 +:1003E00023F036F92E1C3860231C90331E60231C2A +:1003F000002294331A60221C943213688C342468CF +:10040000ED1801990298E4181560FFF759FF6B4643 +:100410001B79207063700299019AA01C2AF0ECFEEF +:100420000022019B201CE3189A70FFF723FF021C97 +:10043000101C05B0F0BDC046882E00201C2F0020E7 +:10044000F7B51D1C161C0023071C03600B603360EE +:100450002B60174B0091DC68002C24D0154B9C427C +:1004600021D03B6801333B60E268009B94461B68E7 +:10047000009A019363441360221CE3681032043332 +:100480009B00E3189A4206D23168C81C02CA497818 +:1004900041183160F6E7201C06F0B4FD2B68246893 +:1004A00018182860D8E733682A68D3182B60F7BD7E +:1004B000882E002098B902000C4B70B5DC68002C27 +:1004C00013D00B4B9C4210D0261CE36810361D1D28 +:1004D000AD006519AE4206D204CE06490232064886 +:1004E00026F067FBF6E72468E9E770BD882E002058 +:1004F00098B902007224030010F0020038B5051C00 +:10050000141C22F00CFB024B2560636038BDC04612 +:10051000DD2A020010B50C1E7F2C06D8012122F026 +:1005200066FB002844D0047042E0224B99420FD869 +:10053000022122F05CFB00283AD04022A30952425B +:10054000134303703F231C40BF3B1C4344702FE008 +:10055000194B994214D8032122F049FB002827D0D7 +:100560002022230B52421343037080213F23A20910 +:1005700049421A401C400A430C434270847017E001 +:10058000042122F034FB002812D01022A30C524286 +:100590001343037080213F23220B49421A400A4330 +:1005A0004270A2091A401C400A430C438270C47076 +:1005B00010BDC046FF070000FFFF000007B5034B5A +:1005C0000090684601930EF0A9F807BDDD2A0200ED +:1005D00008B50348096801F0B1FA024808BDC046F1 +:1005E00010F0020074E0020010B5041C02A80078AC +:1005F000002906D0002804D10F49104827F07FFCBD +:1006000008E09A4208D1944214D00C480C49231CAB +:1006100010F0BAFEFFF7FFFD944205D2121B094904 +:10062000064810F0B1FEF5E79C4203D9034806499D +:100630001A1CECE710BDC046573F030000FD020046 +:10064000803F0300B93F0300EB3F0300F0B50025F6 +:10065000171C87B00C9C0D9E039004910593029586 +:100660000195059B9D4239D0039B9D4209D2636849 +:100670009B0537D4019B049A01330193AB00D058FA +:1006800019E006212368381CDB001943002204F01E +:1006900007FA00280BD16368DB0505D519492268E4 +:1006A000194810F071FE21E0A368336012E0029B4C +:1006B0004068013302932379012B03D101F02AFC16 +:1006C000307007E0022B02D101F0E4FA01E0032BC5 +:1006D00000D1306001350C340436C2E7019B039A27 +:1006E000934205D20848094927F009FCFFF793FD1A +:1006F0003B68029ADB089A4202D203480449F3E7B6 +:1007000007B0F0BD1A40030000FD020031400300B5 +:1007100052400300002805D0012809D18B685B00F6 +:10072000184306E08B680348002B02D1024800E022 +:100730000020704734CD020078CD02007FB5041C44 +:100740000122081C01A901F065FC0022217940204A +:1007500009F0B8F8061C0298311C19F07DF962689E +:10076000051C130A834208D2A368C1187143E068CC +:1007700022F084FF2379E06003E01B1A1B02D2B24F +:100780001343321CA06863607043E3686A4318181F +:1007900001992AF031FDA36802485D19A56004B0F3 +:1007A00070BDC04674E00200F7B5FF254668041C22 +:1007B0000191AE431DD10179321C402009F082F82D +:1007C0006368071C1D408023A1681B011D4308317D +:1007D00041436560E06822F051FF6368E0601A0AF7 +:1007E000A368013A01337A435F43311CC0192AF0F0 +:1007F00020FD2079019BE168A26809F0BDF9A3689A +:1008000003480133A3606368013BFF3B6360FEBDA7 +:1008100074E0020010B5041C102022F02BFF024BE4 +:100820004460036010BDC046D8C5020070B50A79A7 +:10083000041C0D1C002A09D1194926F0EEF8201CD1 +:10084000E968AA6801230BF04DFA23E0154926F068 +:10085000B0F9AB68002B1DD0201C134926F0DDF841 +:100860000026AB689E4211D2002E03D0201C0F49F7 +:1008700026F0D3F8321CE968287909F045F80122FE +:10088000011C201C01F036F90136EAE7201C08495A +:1008900026F0C3F8201C074926F0BFF870BDC046FB +:1008A000704003007C400300874003008B4003003E +:1008B0006AB003001B430300F8B5071C0D1C402061 +:1008C000391C002208F0FEFF061E05D10C490D4818 +:1008D00027F015FBFFF79FFC102022F0B9FE0A4B12 +:1008E000041C002F00D0094B281C2360FBB2A5601C +:1008F0007043636022F0ACFEE060201CF8BDC0468F +:100900008E40030010F8020050C6020014C6020018 +:10091000F0B5061C8BB00D1C141C12283AD034D82C +:10092000052800D087E0081C012204A922F0F4F970 +:10093000201C07A9012201F06DFB069B00220393F6 +:100940006B464020197B08F0BDFF061C0898311C3F +:1009500019F082F8069B071C03936B46A968187B65 +:100960007918FFF7A9FF059B041C1A1C0499C0689D +:1009700003932AF041FC321CE36805987A43181867 +:1009800007992AF039FC231C56E01B2839D01F2870 +:1009900006D050E0081C111CFFF7D0FE2B1C4BE0CA +:1009A000101C07A9012222F02CFD0322002814D0DC +:1009B000234B154240D1234A296891423CD104A9D6 +:1009C000281C012222F0A8F901230498009305991C +:1009D000079A089B24F00EFF28E0E3070ED4144288 +:1009E00003D1194B22689A4208D00322144B2240AB +:1009F000022A21D1154A1440062C1DD0144808F0B3 +:100A000065F9081C012204A922F086F9201C07A917 +:100A1000012222F0F6FC0A4B00280DD0089B301C66 +:100A200000930499059A079B24F02CFD094B00289C +:100A300002D1034B00E00023181C0BB0F0BDC046F0 +:100A400078CD020050C6020030D30200070080FFBC +:100A5000BF74030034CD0200F0B5051C87B00E1C36 +:100A6000002808D08B0724D10B68264A934202D075 +:100A7000254A93421DD1301C03A9012222F0C1FC5A +:100A8000002816D00022291C402008F01BFF061C5D +:100A90000498311C18F0E0FF071C281C391CFFF7D4 +:100AA0000BFF321C041C7A430399C0682AF0A4FB94 +:100AB00024E0301C01F00AFA071E00D04710391C50 +:100AC000281CFFF7F9FE041C301C07F051FB002620 +:100AD0000090009807F09AFB031E0FD0002F04D15E +:100AE000201C191CFFF760FEF3E7721C0192281C02 +:100AF000321CE16809F040F8019EEAE7201C07B0CB +:100B0000F0BDC04648EF020050C6020070B586B086 +:100B1000002A44D00324161C051C0A1C0C402CD1AE +:100B2000204B0968994228D1111C806803AA0AF059 +:100B300093FB002802D11C4808F0C8F8221C042EA0 +:100B40002DD12979402008F0BDFE049B061C287990 +:100B50000093039B0193019A009B991AFFF7ACFE47 +:100B6000041C0399049AEB68521A71437243591892 +:100B7000C0682AF041FB221C11E0A9682868002304 +:100B800001F060F9E968021C2879042E03D108F00D +:100B9000BBFE021C03E0331C08F0EEFF034A101CEE +:100BA00006B070BD00E202009B40030074E002004A +:100BB00037B51D1C00230C1C0093081C111C1A1CAB +:100BC0000133FFF711FD002C04D1201C211CFFF77D +:100BD00073FE1BE02968CB0705D48B0713D10C4BA0 +:100BE0000A689A420FD1081C01F054F8051C002035 +:100BF000291CFFF761FE041C0021C0682A1C2AF092 +:100C000018FB201C02E00020FFF726FF3EBDC04677 +:100C100030D30200002805D0012809D18B685B0081 +:100C2000184306E08B680348002B02D1024800E01D +:100C30000020704734CD020078CD02000021F0B5CD +:100C40008568EA0F5219521091420DDA074BC668B7 +:100C5000EB185B1A8C009B003419F6582768266045 +:100C6000C4680131E750EFE70148F0BDFFFFFF3FE7 +:100C700074E0020038B50D1C83684168041C8B4287 +:100C800012D3C900C06822F0F9FC63680A495A000F +:100C9000A3686260D21A013352189B00E060920090 +:100CA000C01800212AF0C5FAA368E268591C9B000D +:100CB000A16002489D5038BDFFFFFF3F74E0020075 +:100CC000F8B5071C161C4C10836803D5E418E243E2 +:100CD000D21714409C4200D91C1C0C4D381C291CF6 +:100CE000FFF7C8FFAC46BB6809495A1E5B189B005A +:100CF0001D1FF968A24204DD4859013AC8502B1C57 +:100D0000F6E7A4000E516046F8BDC04674E002004C +:100D1000FFFFFF3F38B50025041C85601021C06827 +:100D200022F0ACFC0423291CE060636010222AF04E +:100D300080FA014838BDC04674E002007FB50C1C43 +:100D4000114B02AD04310093013802230195FFF7E6 +:100D50007DFC23680D4C9968012911D9D868029A45 +:100D60000B4B2D79C918131B5E1EB34189005B42E2 +:100D70001A404118074B002D00D1074B22F018F8FC +:100D8000201C04B070BDC046D8C6020074E002004A +:100D9000FFFFFF3F78CD020034CD020070B50C6834 +:100DA000021CA368002B05D11A491B4827F0A7F89D +:100DB000FFF731FA2068012A01D04A6801E00122D8 +:100DC0005242191C002301F03DF8E268A36881003B +:100DD0005618013B043151181A1A35689200A36065 +:100DE000301C2AF012FA0021A368E0689A00115022 +:100DF000616804290BD95B00994208D94908890028 +:100E0000E06822F03BFC6368E0605B086360281CDC +:100E100070BDC046CC4003006CF9020007B50090DD +:100E200001910220694622F025F8694601900220CE +:100E3000FFF7B4FF00480EBD74E0020070B50E1C51 +:100E40000D49051C002425F0E8FDB3689C420ED234 +:100E5000002C03D0281C094925F0DFFDF268A3000F +:100E60009958281C012200F045FE0134EDE7281CAA +:100E7000034925F0D2FD70BD894003008B4003007B +:100E80006AB0030070B50326041C0D1C0E4028D167 +:100E9000174B0A689A4224D18B6882689918436874 +:100EA000994210D904318900C06822F0E7FBAB6891 +:100EB000A268E0609B181A1D9B006260C018311C7C +:100EC00010222AF0B6F9A368E9689800E3681818B8 +:100ED000AB689A002AF090F9AB68A268D318A360B7 +:100EE00003E0201C291C21F0CEFF024870BDC04643 +:100EF0009CC6020074E0020010B5041C102022F011 +:100F0000A7FB044B84600360034B43600023C36072 +:100F100010BDC0463CE20200932D020038B50B4BD9 +:100F2000051C03600C1C081E042800D20420686005 +:100F3000AC60800022F08CFB6A68E860121BA400A1 +:100F40009200001900212AF074F938BD9CC60200F5 +:100F50007FB50D1C161C12282AD004D8052807D0EE +:100F600007282BD058E0031C193B042B41D953E030 +:100F70000322002332409A424FD1131C3168284A81 +:100F800091424AD1B368AA68981821F095FF041CD1 +:100F9000AB68E9689A00C0682AF02EF9A868E3688F +:100FA00080001818B368F1689A002AF025F91EE04D +:100FB000081C111CFFF766FF2B1C2EE0101C03A958 +:100FC00000F0A6FE0023984227D0039A9A4200DA46 +:100FD0000393039BA868584321F06EFFC368041C69 +:100FE0000093E8680421AA68039B24F017FA231CE5 +:100FF00013E00C4BB20710D1094A316891420CD171 +:10100000B368E9680093AA68F3680AF05FF9064BD1 +:10101000002802D1034B00E00023181C04B070BD6F +:101020009CC6020078CD020034CD0200F0B50B1C46 +:1010300087B0041C171C0326002A16D10E400DD1C0 +:10104000524A0968914209D1191C03AA80680AF022 +:1010500003F90398049AE368851A78E003A902204B +:1010600003940493FFF79AFE8DE0042A2DD13142B8 +:1010700021D1464A096891421DD18068191C03AAF2 +:101080000AF0EAF8002805D1A068E16803AA24F074 +:10109000D8F979E0039B0498C01A21F00DFF051CD4 +:1010A0008368E1689A00039BC0689B00C9182AF016 +:1010B000A3F8281C68E01A1C20680023A16800F02F +:1010C000C1FEE3688000C0585EE00E4056D12F4A52 +:1010D0000968914252D1191C03AA80680AF0BCF831 +:1010E000BA680398049B85180193ED1A002D22DD40 +:1010F000A368E9186368994207D98900E06822F07B +:10110000BDFAA368E060EB186360039AE368A8186F +:101110009100800059181818A3689A1A92002AF0B2 +:1011200074F8039BF9689800E3681818BB689A0084 +:101130002AF062F81EE0E368800018189200F9684F +:101140002AF05AF8B8680399E368049A40189100A5 +:10115000800059181818A3689A1A92002AF055F8B6 +:10116000A3686A42E818E368800092001818311CEE +:101170002AF05FF8A3685D19A56004E0201C191C23 +:101180003A1C21F0DBFE024807B0F0BD00E202008D +:1011900074E00200002313B5046A00930A05A16BF2 +:1011A000024C920C125921F068FF13BDDCC70200FB +:1011B000F0B51C7887B07C2C06D185686D5C002D5D +:1011C00002D09A2D00D0DEE00393231C6B3B0292E9 +:1011D0000091071C022B29D884687D686018037869 +:1011E000032B00D0ACE004A922F03AF8631998422E +:1011F00000D19EE00378032B00D0A1E005A922F0E6 +:101200002FF8039B1B786B2B03D1049B059A134388 +:101210000AE06C2B03D1049B059A534004E06D2B2C +:10122000E4D1059B049A13400493DFE76E2C04D0AD +:101230000223221C9A43702A63D1009BBE68F018D7 +:101240007B6801930378032B7AD104A922F008F874 +:10125000051C019BF3189D426BD0AB78A81C6C78E1 +:10126000032B6DD105A921F0FBFF051C372C0ED1F6 +:10127000059A1F2A64DC4549049B11418B425FDCBF +:10128000C021090611418B425ADB934009E0392CF9 +:1012900009D1059B1F2B01DD1F230593049B059A94 +:1012A0001341049328E02F2C03D1049B059A9B182B +:1012B000F7E7302C03D1049B059A9B1AF1E7312CF8 +:1012C00009D10498059907F00BFD002838D1059B3A +:1012D000049A5343E5E7332C32D00599352C05D1D8 +:1012E00000292DD0049823F08FFB04E0002927D09B +:1012F000049823F099FB0490049B5A005340A8D50E +:101300001EE0752C1CD18368009A98188378447865 +:10131000032B15D1023021F0B2FF2F2C08D0302C36 +:1013200005D1404243000490584002D508E0C04334 +:101330000490009B381C7B60049921F0CEFE22E0D3 +:1013400000267B68009A029C9D1A0136E409FCD1B4 +:101350002B1C0134DB09FCD1731C1A19381C0099B1 +:10136000019321F07EFC071C039B311C1B78029A21 +:101370001A330370013021F02CFE019B211CF81858 +:101380002A1C21F026FE07B0F0BDC046FFFFFF3F3C +:10139000F0B597B00990C020002540230AAC80002A +:1013A0000F1C161C25706360A56022F05EF9256194 +:1013B000E0606561A561E5612762E562A84202D14E +:1013C000BF48C049C0E1331E03D00423022E00D021 +:1013D000033B0026BC4A9B000096201CB96B9A5820 +:1013E000331C21F04AFE102022F032F91021041C97 +:1013F00021F095FB0AADAB68002B00D181E12A7882 +:10140000002A00D07DE1013B0C32AB605343EA6817 +:10141000AD49D318DA785D689200525803921A6881 +:101420009B681202120A0493039B06925B7807934F +:101430000F23079A1A400592002D01D16368049387 +:101440003023079A1340102B02D0202B40D0F4E019 +:10145000002D03D0002E01D10026CBE7039B6A00AC +:101460009A18059B9D4231D25388190B012916D138 +:10147000391C403109781B0502321B0D994221D1DC +:101480000AA8211C21F05EFE0028E5D13B1C403358 +:101490001B78062B00D04CE18C488D4954E1059A0D +:1014A0006B1C934206D2049A0AA800920699039AEA +:1014B00021F0E3FD039B6D005D1969880AA8FFF721 +:1014C00069FEC9E70135CCE7012DDFD8012691E798 +:1014D000002E0BD0039A6B009B5A1B0B032BF3D1EE +:1014E000201C012121F083FB00230370039B6E006D +:1014F0009E191AE073881A0B012A29D13A1C40322E +:101500001278DBB29A4220D1082A07D1B96CF86C64 +:10151000FEF72AFF011C201C21F0A5FD002D08D09C +:10152000381C23F031FF01350236059B9D42E1D383 +:1015300010E0039B5B787F2BF2D90E9B201C591C7B +:1015400007930E9121F0C9FDEAE7002DBED09DE77B +:101550006B1CA8E700231E1C059A93420CD203992A +:101560005A008A185288110B012903D1D2B2072AD6 +:1015700000D901260133EFE7A368049A98180023E5 +:101580000793A2686368D318984206D2079B01218B +:101590000133079321F03DFDF3E7039B1B781F2BDD +:1015A00001D02E2B00D10126039B597840230B40FC +:1015B000181C4342434149B25B421E40002900DAF5 +:1015C00001260025049B0595D0180895079B9D4290 +:1015D0000FD0059A037801320592002B04D0089BA6 +:1015E0000133089300230593012121F012FD0135F9 +:1015F000ECE7002E02D1089B012B04D0201C05999A +:1016000021F062FB76E0A268049B944663441D1CB3 +:10161000079B9E4200D11FE72B78002B06D1A368C1 +:10162000201CE91A012221F05DFB04E0281C0121A5 +:1016300021F0EFFC051C0136EAE7002E1FD0059BC8 +:10164000022B03D10023012D45D13FE7012D00D10D +:101650003CE701232A1C1A403CD0059A032A3AD0C1 +:1016600014E73A1C0899403212780905090D8A429C +:1016700017D1002B10D0381C23F086FE0135012332 +:10168000079A039913402B405A008A1852880892EF +:10169000120B012AE5D006E00AA8211C21F052FD18 +:1016A000ECE70135CBE7049A0AA8009206996B1C77 +:1016B000039A21F0E2FC0AA80899FFF76BFD99E66E +:1016C00090F80200E9400300DCC70200F8FA0200CB +:1016D00011410300131C079A691ED20705D5039A0E +:1016E0009288120B012A00D16908012902D1002B2E +:1016F00000D1B1E6201C0499069A039BFFF758FD20 +:10170000AAE62B78002B00D05AE63B1C40331E780B +:10171000002E00D0BAE66368002B00D1B6E62B6934 +:10172000201C591C21F0D9FCA3686B62EB69AB62E9 +:101730000FE0022B02D11448144905E00B3B14487A +:101740001449012B00D9144926F0D9FB0023061CAB +:1017500013930D9821F0A3FF002E0BD0301C396895 +:10176000BA6B00230FF07EFE381C23F09BFD301C6B +:10177000FEF751FD381C23F095FD099A13AB13CBEE +:1017800013C2099817B0F0BDF8FA02002341030014 +:1017900078FD0200574103007E41030010B5041C90 +:1017A000102021F055FF044B84600360034B43601D +:1017B0000023C36010BDC0463CE20200713302004A +:1017C00013B5041C081C01A90AF06CFB002C07D0FF +:1017D000012C0BD1019922F033FB4000204306E09D +:1017E000019B0348002B02D1024800E0002016BDF7 +:1017F00034CD020078CD0200F0B585B0041C081C81 +:1018000003A9151C0AF04EFB061C002D06D1201C56 +:101810003549039A331C25F0CCF963E0011C002202 +:10182000039BC3180093009B99420ED20B78272B81 +:1018300004D0223B58424341DBB201E000230122A5 +:101840000131002BEFD0272703E02727002A00D003 +:10185000053F264D201C291C3A1C25F0AAF90195AC +:10186000009B9E4239D2301C22F0B9FA051C301C74 +:1018700022F0D0FA061CBD4203D1201C1C493A1CA0 +:1018800028E05C2D02D1201C1A4914E02B1C203BBF +:101890005E2B02D8201C01991BE00A2D02D1201CCE +:1018A000154908E00D2D02D1201C144903E0092D33 +:1018B00004D1201C124925F0B0F8D1E7FF2D02D841 +:1018C000201C104905E0104B201C10499D4200D9F6 +:1018D0000F492A1C25F06DF9C2E7201C01993A1C1A +:1018E00025F067F905B0F0BD8D4103009341030079 +:1018F0009241030096410300994103009C4103007B +:101900009F410300A2410300FFFF0000A941030023 +:10191000B0410300F7B51F1C08AB0C1C161C1D784A +:10192000FB0702D57F1001970EE0381C01A900F0DB +:10193000EFF9002808D1381C21F04DFD1B49021C8D +:101940001B480FF021FD0DE0019BA019002B17DAB9 +:101950000138A04208D20193002D25D1154816491F +:101960000FF012FDFEF757FC3F21027801388A4341 +:10197000803A511E8A419B18002BEAD1013014E0B5 +:10198000002B11D0844203D30193002D0DD1E5E744 +:101990003F2122788A43802A01D10134F8E7002BC5 +:1019A00002D00134013BEDE7201CFEBDB74103002E +:1019B00000FD02006CF90200DF410300F0B587B0C2 +:1019C000061C0D1C171C00F07BF802A9041C301C1F +:1019D0000AF068FA061C042F4FD1AB0735D1284B0B +:1019E0002A689A4231D105AB281C03A904AA23F026 +:1019F00006FD059B234FBB4204D0032B02D0224897 +:101A000007F064F9039B351CBB4207D00122201C60 +:101A10000092311C029AFFF77DFF051C049BBB421C +:101A200008D00122201C0092311C029AFFF772FF9D +:101A3000021C01E0029BF2180E20AA421ED3521B88 +:101A4000201C291C23F0F5FE18E00023311C009314 +:101A5000029A2B1C201CFFF75DFF0278012153B274 +:101A6000002B06DA402301211A4202D001315B0823 +:101A7000FAE701220AF0D8F900E0002007B0F0BD33 +:101A800000E2020074E002009B40030013B5041C56 +:101A9000A06806F0BBFB019000280ED06368074ADF +:101AA000934205D0181C0121002201AB06F066FA12 +:101AB00000F030FA0028EBD0019816BD74E0020067 +:101AC000084BC2070BD4084A084B0240062A06D02E +:101AD00003230340022B01D1054B00E00368181CCF +:101AE0007047C04630D30200070080FF80CA020062 +:101AF0000CD00200F8B50D1C041C161C01F0B8FE39 +:101B0000281CFFF7DDFF8768031C201C002F03D073 +:101B1000291C321CB84703E002495A6825F049F8ED +:101B2000F8BDC046F941030008B5031C0A1C024871 +:101B3000191CFFF7DFFF08BD10F00200F7B5051C08 +:101B4000081C0E1C26F0DFF900282AD0301C69463C +:101B500001AA0FF0BFFC009B002B22D0281C1649C5 +:101B600024F05BFF009C154BE71EE418A400002F37 +:101B700017DB019A281C13195B681259104925F0CC +:101B800018F8019B281C1B199A68002A03D10D49DB +:101B900024F043FF02E00C4925F00BF8033F0C3C16 +:101BA000E5E7281C311C0222FFF7A4FF281C054989 +:101BB00024F033FFF7BDC046FE410300FDFFFF3FA9 +:101BC000224203003F4B03003742030010B5041CC0 +:101BD000FFF776FF054B0069984203D0431E9841FA +:101BE000C0B202E0201C23F07FFD10BDF9B8000058 +:101BF00038B5051C0C1C01208D4241D0214B9D4263 +:101C000001D100203CE09942FBD001231D4204D0C9 +:101C10001942F6D12B1C0D1C1C1C2A1C1A4B1A40F5 +:101C2000062A05D0AA0711D1184A296891420DD178 +:101C30002340062B05D0A307E3D1144B22689A4218 +:101C4000DFD1281C211C0AF057FD19E02340062B88 +:101C5000D7D0A30703D10D4B22689A42D1D0281CBC +:101C6000FFF72EFF8369002BCBD01B20291C221CE1 +:101C700098470028C5D0064BC01A42424241D0B214 +:101C800038BDC04674E00200070080FF80CA020031 +:101C900034CD020008B5104B984219D00F4A0123E9 +:101CA000904217D0184201D0184114E0830706D1A2 +:101CB0000B4B02689A4202D103F014F90BE021F0B9 +:101CC0008AFB0849021C08480FF05EFBFEF7A3FAE6 +:101CD000002000E0181C08BD78CD020034CD0200C1 +:101CE00030D302004042030000FD020008B5C307E4 +:101CF00005D4830706D1054B02689A4202D122F02F +:101D000036F801E0FFF7C6FF08BDC04630D3020039 +:101D100038B50F4B0124984202D100230B6014E028 +:101D20000C4B984201D10C600FE0031C234002D001 +:101D30004010086009E0820708D1074A056895420B +:101D400004D10D1C03F0CEF82860231C181C38BDEC +:101D500078CD020034CD020030D3020008B5184B14 +:101D6000984228D0174B984227D0C30703D540107C +:101D700018F060FF23E00323184206D1124A0168DD +:101D8000914202D121F0FCFF19E00340022B09D15E +:101D90000E4B0340062B05D0FF23DB05C0180323A1 +:101DA00098430CE021F017FB0949021C09480FF089 +:101DB000EBFAFEF730FA002001E0FE20800508BDB6 +:101DC00078CD020034CD020030D30200070080FF3E +:101DD0005842030000FD020010B583070CD10368D0 +:101DE0000A4CA34202D123F0C7F80EE0084CA342EC +:101DF00002D121F09CF808E021F0EDFA0549021C1F +:101E000005480FF0C1FAFEF706FA10BDBCDC02006F +:101E10009CC602007242030000FD020013B50C1CB8 +:101E200001A9FFF7D9FF019BA34206D00349221C59 +:101E300003480FF0A9FAFEF7EEF913BD954203002F +:101E400010F80200F7B5051C0C1C171C1E1CD3074C +:101E500002D55710019710E0101C01A9FFF758FF99 +:101E600000280AD1381C6C6821F0B5FA1349031C0C +:101E7000221C13480FF088FA1BE0019B002B08DAA4 +:101E80001B190193002E0AD0002B04DA00230193C2 +:101E900011E0002E03D0A3420DD901940BE0019B69 +:101EA000002B01DBA34206D3064807496A680FF0FE +:101EB0006BFAFEF7B0F90198FEBDC046C2420300BE +:101EC00000FD02006CF90200E642030010B5041C9C +:101ED000830710D10D4B02689A420CD10C4B034082 +:101EE000062B03D1C00820F0C5FD00E08068012367 +:101EF0004000184308E0201CFFF7E2FD4369181E6C +:101F000002D00120211C984710BDC04648EF0200B6 +:101F1000070080FF174A70B50023904227D0164C67 +:101F2000A04201D1012322E0144A002390421ED096 +:101F3000012606409E4201D0401015E0051CFFF727 +:101F4000BFFD4369002B09D0301C291C984700288D +:101F500004D0031B58424341DBB208E0281CFFF7C2 +:101F6000B5FF0028DED00138431E9841C3B2181CCB +:101F700070BDC04678CD020034CD020074E002008E +:101F800010B5041CFFF7A2FF002809D1201C21F086 +:101F900022FA0449021C04480FF0F6F9FEF73BF957 +:101FA00010BDC046FC42030000FD020070B5041CD9 +:101FB0000D1C161CFFF784FD036A002B05D0201CA6 +:101FC000291C321C984700281AD10E4D201C002EC7 +:101FD00005D121F000FA0C49021C281C06E0042E51 +:101FE00008D121F0F8F9021C281C08490FF0CCF99F +:101FF000FEF711F921F0EFF90549021C281CF5E75D +:1020000070BDC04600FD02001D43030048430300AD +:102010006943030008B521F0F4F9002805D103490C +:10202000034825F06CFFFEF7F6F808BD9643030061 +:1020300000FD0200F0B585B000AF7A601D1C7B6822 +:10204000C26BCB18061C0C1CFB60934204D02B49BE +:102050002B480FF099F93BE0FB68994245D09A0074 +:10206000131C69460E33DB08DB00CB1A9D46181C97 +:102070000021BB6029F0DDF80023A200934204D0C8 +:10208000E858B968C8500433F8E7F9687A688C46AC +:1020900062447A60ED1803E06A6802341A60083519 +:1020A0007B689C4220D2286809F0E0FE0021021CD7 +:1020B000F36B3B603B68994206D08B00F018006CD4 +:1020C000904207D1013107D10D480E490FF05CF95C +:1020D000FEF7A1F80131EDE7B968CB1819680029BE +:1020E000DAD007480849F1E7BD68F868291C07F00D +:1020F000E9FDBD46066005B0F0BDC046803F030067 +:1021000000FD0200BB430300DC43030038B50C1C98 +:10211000051C0B6805495A6824F04BFD2168281CF2 +:102120004031221C10F0A6F838BDC0465B83030086 +:10213000F0B585B00C1C032509F098FE2540071C5E +:10214000002D03D11E4B22689A4205D01D491E481E +:1021500025F0D5FEFEF75FF8201C02A903AA20F0A7 +:10216000E6FE029E039B301C10308000019321F09C +:102170006FFA041C291C3C2229F05BF8134B6760A2 +:102180002360134BE663A360124BE360124B636161 +:10219000124BA361124BE361124B2362124B636239 +:1021A000124B6363B54208D0019BAF00D85909F0C8 +:1021B0005DFEE71938640135F4E7201C05B0F0BD79 +:1021C0009CC602000B44030000FD02006CEB020001 +:1021D0000D21000035200000459C0000099D0000F5 +:1021E000F1210000019E0000A19C0000D4CB020060 +:1021F000136870B5002B11D10568EE6BB34213D094 +:102200009C002C19246C8C4201D00133F6E7591C38 +:102210000AD002339B001B58136005E003490448B1 +:1022200025F06DFEFDF7F7FF70BDC04619440300B1 +:1022300034FB0200F8B5214D2E687368012B3BD9A1 +:10224000B1685C1E0A5D0A2A36D1002C03DD621ECD +:10225000885C0A2801D1221C05E0141CF5E7885C83 +:10226000202802D101329A42F9D3002C0BDD501CF8 +:10227000984208D1601E002805D001380F5C0A2F53 +:102280001AD0202FF7D0CB18023B1B78141B3A3BF7 +:1022900059425941A4086418013C0DD3084F301C21 +:1022A000391C042220F01AFC381C042111F00CFE09 +:1022B0002B6904332B61EFE7F8BDC04644010020D1 +:1022C000CAA7030008B503480021202228F0B1FF67 +:1022D00008BDC046D02E002008B5084B42681860E3 +:1022E0000020986018750138D860081C5A601A617F +:1022F000996126F0E2FAFFF79DFF08BD4401002036 +:10230000F8B50378002B1ED00F4D041CA86C0028D4 +:1023100004D0211C29F088F8002814D0201C29F0B2 +:102320008DF8471C381C21F0A0F9061E0BD03A1C72 +:10233000211C28F061FF054B054A1968043B996090 +:102340009342FAD1AE64F8BD882E0020E82E00201A +:10235000CC2E0020F0B5BD4B051C18689E68426865 +:1023600085B001921C1C002E00D0C5E06B1E042B12 +:102370001BD820F01CFC6368984200D163E1012D5A +:1023800000D106E1022D0AD00FE09A60412D37D02E +:10239000422D2ED0432D19D0442D00D0E8E02369E2 +:1023A0006268934200D91CE158E1032D00D14AE153 +:1023B000042D06D1206821694368994200D3E0E0EA +:1023C000FCE0052D00D1EFE0062D06D123685D6805 +:1023D0002369AB42AD416D4228E10B2D07D1019B32 +:1023E00022692068991A20F06FFC002504E10E2D67 +:1023F00004D1E368002B00DBA1E02FE1102D04D114 +:10240000E368062B00DC8DE028E1152D0BD1236954 +:10241000626820689A1A616820F064FC2369626827 +:1024200000259E1A1DE10D2D0AD1894826F045FA96 +:10243000206820F0EEFB6368C018FFF761FF14E12D +:102440001B2D02D10123A36008E1082D01D07F2DAF +:102450001BD121696268914200D8FFE0131C2068FB +:102460009D1A8B4205D08568ED5C202D06D1013385 +:10247000F6E70126032D02DD033600E00126891B65 +:10248000321C20F02FFC0127ADE0092D28D1236854 +:1024900061689868236940186E4A591A03AB0EF0B8 +:1024A000D7FD061E00D1D9E00025431C0BD1A06941 +:1024B00026F003FA23686168986823694018591A5E +:1024C00011F002FD98E023692068E918039B0135AB +:1024D0005A1C03921A7820F0E5FBB542F3D18BE049 +:1024E0002B1C203B5E2B00D9B8E02A1C20682169F8 +:1024F00020F0E1FB01257FE00022012E07D14F2DC6 +:1025000003D05B2D6BD1023269E0042267E0022E1A +:1025100033D1291C3039092900D936E703221D752A +:102520009A609BE05A1C4C4913339B005958002970 +:1025300000D193E020686368E26043600FE02068A8 +:10254000013BE36062684368991A20F0BDFBE368D1 +:10255000002B06DB1233404A9B002068995820F07C +:1025600074FB63682269D61A22685568ED1A78E010 +:10257000482D0ED0462D71D116E0032E29D17E2D87 +:1025800002D000252F1C1EE01B7D312B01D0372BE4 +:1025900005D10025236962682F1C9E1A14E01A1CBD +:1025A000FB21343A0A4206D1002723683E1C5D68AD +:1025B0002369ED1A08E0332BE3D1FBE6012220F07A +:1025C00091FB002501272E1C0023A3609E420BDCFB +:1025D00010E0042E03D1462DE6D0482DD9D09A60C4 +:1025E0003CE0002701260025301C11F091FC2369F6 +:1025F0009E1B2661002F19D02368019A5B689342C5 +:1026000004D2131C2269981A11F092FC22682369E3 +:102610009168C8185168C91A11F056FC23685868A7 +:102620002369C01A401B11F073FC08E0002D15DD72 +:102630002368291C98682369C01811F045FC236998 +:10264000ED1825610AE02E1C0FE0C0464401002071 +:102650003E4B030010F00200882E00200126764237 +:1026600003E00127002EBFDCC6E7301C05B0F0BD3B +:10267000F7B51F1C13780E1C0A3BD9B2051C1F4866 +:102680000F2904D850781B02184320F0F8F91524BC +:10269000037801931A4B01331522121B009219780B +:1026A000019A91421CD1427859788A4218D1827895 +:1026B0009978914214D100290FD1009B9A00104BB8 +:1026C000D45CBC4217D93B1C0E480F49321C0EF09B +:1026D0005BFEAB68002418600DE0C1780029ECD0E7 +:1026E000013C0433002CD7D106480849321C0EF0B7 +:1026F0004BFEAB681860201CFEBDC046BF740300D3 +:102700002846030078FD020093440300AC44030014 +:10271000F0B5177885B0051C0E1C992F47D1101CF9 +:1027200001A920F0D6FD019B021E9A423FD00378FA +:10273000191C0A390F2908D80F23281C311CFFF750 +:1027400097FF01238340181C39E0AE2B2FD120F0D6 +:10275000BBFD041C20F0B3FD02900378B22B26D100 +:10276000221CA33B311C281CFFF782FF012403A974 +:102770008440029820F0ADFD039B0290984203D064 +:1027800002A8391C20F0B4FD029A039B9A420CD097 +:10279000311C0F23281CFFF76BFF01238340029895 +:1027A0001C4320F08CFD0290EEE7201C07E005485A +:1027B0000549321C0EF0E8FDAB681860002005B03A +:1027C000F0BDC04678FD0200C4440300F0B585B0FA +:1027D000041C0D1C101C03A91E1C20F056FD071E16 +:1027E00008D10E480E492A1C0EF0CEFDA3681860D1 +:1027F0003B1C0FE00398FFF779FA021C031CB2435D +:1028000008D00096054807492A1C0EF0BDFDA368B4 +:1028100018600023181C05B0F0BDC04678FD02000A +:10282000DF440300F744030038B513780D1C0A3B5E +:10283000D9B2041C0F2908D92A1C124812490EF0DB +:10284000A3FDA368002518601AE052781B02134309 +:10285000C2680020904208D02569810049599942F8 +:1028600001D1051C0CE00130F4E722880025042A80 +:1028700006D11A1C034805490EF086FDA3681860AE +:10288000281C38BD78FD02002345030038450300AD +:10289000F0B587B0041C0F1C081C04A91E1C019273 +:1028A00020F0F2F8019B051C002B13D1322F03D12D +:1028B000BF2160690902EAE1482F08D0019BBE48A8 +:1028C000BE492A1C0EF060FDA3681860E1E1606952 +:1028D000BB49DCE1019B012B00D08BE0412F09D1EA +:1028E000291C201C3268FFF79FFF011C606923F040 +:1028F000AAF90AE0422F12D1291C201C3268FFF7E6 +:1029000093FF011C606923F0F5F9002800D0C0E1B5 +:10291000A948AC49A46825F0F2FA2060B9E1432F38 +:1029200009D1291C201C32680F23FFF7A1FE8E213C +:10293000C000C901A9E10378622B33D1049B032BAA +:1029400007D0052B2ED1C3785F2B2BD103796E2BAB +:1029500028D101279C4A6978531C7F422B32187872 +:10296000884206D1A87884465878844501D1581EFB +:10297000077803339342F2D17B1C9FD03268201C2E +:10298000291CFFF751FF049B021C00266069052BE0 +:1029900003D12B79773B5E425E41331C391C23F017 +:1029A0006EF9B2E7462F02D1606988496FE1472F7F +:1029B00002D1606986496AE1442F0BD1291C201C91 +:1029C0003268FFF7A5FEFF231B02B421184200D096 +:1029D00074E70DE0452F00D070E7201C291C3268F9 +:1029E000FFF796FEFF231B02184200D066E7BC21CA +:1029F00009024AE1019B022B00D0D4E073681B78E6 +:102A00000A3B0F2B49D8332F12D1291C3268201CC6 +:102A10000F23FFF72DFE291C071C7268201C0F23B3 +:102A2000FFF726FE391C021C606923F0F7F830E13D +:102A300000230293342F1BD18027FF01291C326809 +:102A4000201C0723FFF714FE291C01907268201C2C +:102A50000723FFF70DFE391C031C019A606923F060 +:102A6000D6F816E1029B013302930F2B00D125E724 +:102A7000029B281C9F00574B791C5918032228F0F1 +:102A8000E4FC0028EED1EB78002BEBD1514BFF5C3E +:102A900080233F01DB011F43D0E7332F01D1802783 +:102AA00002E0352F13D1A027291C32680723201CF0 +:102AB000FFF7DEFD291C0190FF23201C7268FFF741 +:102AC00085FE019BBF01074319023943DEE0362F23 +:102AD00001D1C027E8E7372F01D1E027E4E7002341 +:102AE0003D4A990050184088874258D18B5A201C83 +:102AF000029332680723291CFFF7BAFD766803901A +:102B00003378982B28D1301C20F01EFC002823D1CC +:102B1000301C20F0D9FB03789A2B1DD105A920F099 +:102B2000D8FB0599071C20F0BEFB022814D1381CE5 +:102B300020F0C5FB3A1C0723061C291C201CFFF7AC +:102B400097FD029B071CDB040ED5201C291C321CA0 +:102B50001F23FFF73BFE17E0174820492A1C0EF001 +:102B600013FCA3681860A9E6029B201CDB0B291C40 +:102B7000321C002B04D03E23FFF728FE400803E060 +:102B80007C23FFF723FE80080399029BFF00194373 +:102B90000F43F8218001C9000840391C75E001335A +:102BA000062B9DD18AE6019B032B00D086E6382FA9 +:102BB00016D1002718E0C04678FD02004F450300FB +:102BC00030BF0000AF4503006944030072B6000047 +:102BD00062B600002D440300262403008445030050 +:102BE000392F1DD180273F01291C32680723201C63 +:102BF000FFF73EFD291C019072680723201CFFF798 +:102C000037FD291C02901F23201CB268FFF7DEFD50 +:102C10000199029B394380010143DB00194335E0F0 +:102C20003A2F02D180277F01DEE7362F01D1C0275E +:102C300003E0372F00D041E6D027291C3268072354 +:102C4000201CFFF715FD726801900723201C291C2A +:102C5000FFF70EFDB2687F01137802900A3B0F2B3D +:102C600005D8201C291C0723FFF702FD07E080235D +:102C7000DB001F43201C291C0723FFF7A7FD029B35 +:102C80008001D900019B194339430143606922F057 +:102C900087FF07B0F0BDC046F7B5061C0D1C002429 +:102CA0000192019B9D4228D0631C0093052B03D108 +:102CB000B4681348134907E028780A38C3B20F2BC9 +:102CC00007D9B4680E48104925F019F92060002092 +:102CD00014E06B78000218431FF0D1FE0235071C88 +:102CE00028F0ACFB0228ECD13B78722BE9D17B7841 +:102CF0003034A342E5D1009CD3E7201CFEBDC04682 +:102D000078FD0200C3450300F645030030B50724F3 +:102D100002784160A243053C224302707F22039C5B +:102D200005882240D400034A83602A40224302805F +:102D300030BDC04607FCFFFF10B5072403782140D3 +:102D4000A34319437F230170049904880B40D900E1 +:102D5000084B426023400B430380039B04685B05E0 +:102D6000D90A054B23400B430360029B8360059BFC +:102D7000C36010BD07FCFFFFFF03E0FFC3790248FB +:102D8000002B00D10148704734CD020078CD0200FD +:102D900008B501F03FFA014808BDC04674E00200E2 +:102DA00008B5086801F036FA004808BD74E0020072 +:102DB00073B50D1C022823D10126486801A909F02A +:102DC000EBFC7642341C019BC31898421BD001785F +:102DD000722901D0772905D1621C0ED172394C427B +:102DE0004C4108E0622901D0742906D1721C04D13B +:102DF00074394E424E410130E7E70E480E4913E068 +:102E000001267642341C01A9286809F0C5FC7342EA +:102E1000734162426241DBB2D2B2019901F04EFBD2 +:102E2000002805D10548064925F069F8FDF7F3F9B2 +:102E300076BDC04610F802007C460300C0F90200CF +:102E400089460300F8B5061C10200D1C141C1F1C1D +:102E500020F00BFC011E09D02C190F604D608D6015 +:102E6000CC60301C024A034B22F030FAF8BDC04659 +:102E7000BF350200D53502000022114B1A60031C39 +:102E8000104A1233FF33811800225A701A7004332B +:102E90008B42F9D1011C031C09310833FF31002298 +:102EA0001A709A705A70DA7004338B42F7D1C323C8 +:102EB0007F329B00C254044A044B1A607047C046DC +:102EC00060010020110300002948030004000020D5 +:102ED0000023F7B5071C1C1CA200BA18FF32517C56 +:102EE0007F2951D0927C651C9B18DBB2EF2B2AD92D +:102EF000EBB20193C1239B00FE187D23351C009388 +:102F0000009B019A934209DB281D291C042228F00A +:102F100073F9009B043D013B0093F1E7002395000A +:102F20007D19FF356B74AB74EB742B757D25023402 +:102F3000E4B2A5421CDB301D311C042228F05CF9F0 +:102F4000013D043EF5E77D291BD8104A525CD207AB +:102F500017D5C1237D269B00ECB2FD18A64207DBE6 +:102F6000281D291C042228F047F9013E043DF5E7FD +:102F70007E23A200BA18FF32537400239374D374D3 +:102F800013750134E4B2A7E7F7BDC046DB47030081 +:102F9000012110B54B1EDBB29B00C318FF335A7CD6 +:102FA0007F2A15D00B4CA25C520602D40131C9B263 +:102FB000F0E75A7D7F2AF9D0A25C7F2AF6D9DA7D24 +:102FC000002AF3D054B2002CF0DB0132DA74EDE7C2 +:102FD00010BDC0463A470300031CF7B54B4A1333F4 +:102FE000FF3382180021197004339342FAD10B1C6D +:102FF0005AB2002A01DA464A7DE0021CFC32176907 +:10300000B94205D37F2244339B001A5401207CE04F +:10301000D668755C602D01D9203DEDB24C1CE4B240 +:10302000BC4223D0325D0092602A02D9203AD2B24B +:103030000092232D1ED1009A303A092A01D9354A2F +:1030400059E00231CCB2BC4204D3FF2AF7D8427017 +:10305000211CCDE7315D0D1C303D092DF5D80A2529 +:103060006A430134303A5218E4B2ECE7232DE6D03B +:10307000002200920026F7B20197274FF25DAA4284 +:1030800014D1264AB25C94462A2A0FD0009A94455D +:103090000CD16C469A0024798218FF32547444781B +:1030A000013302311475DBB2CCB2D1E70136512EB7 +:1030B000E1D10022194ED1B2965D2A2E0BD1BE5C11 +:1030C000AE4208D19A008218FF3251744178013320 +:1030D0001175DBB2BCE70132512AEBD1493A1049F4 +:1030E000895CA94204D0002A04D0013AD2B2F6E7A2 +:1030F000002A04D10B4A0C4B00201A6005E0191C71 +:103100004331890041188A70A2E7FEBD1203000016 +:103110002C4803003E48030098460300E94603009C +:103120000B4903004C480300040000201130FF301D +:1031300003787F2B0AD002228256002A01DC044A3F +:1031400000E0044AD35C43700430F1E77047C046A6 +:10315000BB4803008B4703000023F0B589B0019002 +:103160000093009B019A9B00D3180393FF335E7C6E +:103170007F2E00D1C6E064498A5D900702D4009B8F +:103180000133BDE0D2074BD4009A7D25571C721C39 +:10319000D2B204925D4AFFB2921952780592DA7C5B +:1031A0001B7D0692C122920094460793019B6344C3 +:1031B0001C1C0293BD4207DB201D211C042228F0A9 +:1031C0001BF8013D043CF5E7019BBF00DF196B468E +:1031D0001B7CFF377B746B461B7DB51CBB746B4639 +:1031E0001B7EEDB2FB746B461B7F3B75009B9C1CEA +:1031F000464BE4B29E19B7787D26039BFF33DA7CF9 +:103200001B7D03920493A6426CDB029B0422181DD3 +:10321000191C27F0F1FF029B013E043B0293F2E7E9 +:10322000009A0132D2B2131C019844339B001B5CFC +:10323000002BF6D0009A571C7F2B07D0CA5C1207D0 +:1032400002D4243B012B01D8FBB289E7731CDBB20B +:1032500004932E4B7D259B195B78FFB20593039B4E +:10326000FF33DA7C1B7D0692C122920094460793BD +:10327000019B63441C1C0293BD4207DB201D211CE3 +:10328000042227F0B9FF013D043CF5E7019BBF0094 +:10329000DF196B461B7CFF377B746B461B7DB51CAF +:1032A000BB746B461B7EEDB2FB746B461B7F3B759C +:1032B000009B9C1C154BE4B29E19B7787D26039B9E +:1032C000FF33DA7C1B7D03920493A6420ADB029B48 +:1032D0000422181D191C27F08FFF029B013E043B9E +:1032E0000293F2E7019BA4001C196B46FF3465743E +:1032F000A7741B7BE3746B461B7C2375009B033315 +:10330000DBB22DE709B0F0BD3A470300BB4803002C +:10331000F0B5002587B00190019AAB00D318029355 +:10332000FF335A7C002A00D12EE17F2A00D155E1DB +:10333000AB496C1C895CC8062AD5DA7C7D260492D0 +:10334000202211404A424A4115218A1A0392C12281 +:103350001B7D92000593019BE7B29C18BE4207DBE0 +:10336000201D211C042227F047FF013E043CF5E705 +:10337000019BBF00DF196B461B7BFF377B7400236B +:10338000BB746B461B7CFB746B461B7D3B75ADE0D1 +:1033900018264E2A02D04F2A23D11B26DA7C7D27FD +:1033A00002920D225A74C1221B7D92000393019B4D +:1033B000E4B29D18A74207DB281D291C042227F030 +:1033C0001BFF013F043DF5E7019AA300D31800223B +:1033D000FF339A746A46127A5E74DA746A46127B14 +:1033E000B1E0502A01D11C26D8E7C90933D0D97CD5 +:1033F000002930D0E4B2211C019844318900095CD5 +:10340000002928D1A91CC9B20391890041180F1CB9 +:10341000FF37787C7F281ED0714E305CC0091AD0EF +:10342000F97C002917D0C1227D26019B92009D18AE +:10343000039B9E4207DB281D291C042227F0DCFE8B +:10344000013E043DF4E71F237B740023BB74FB742F +:103450003B75251C60E76C1C172A12D1597B6A1E2C +:10346000D2B2452901D11B3902E0392902D10D39E7 +:1034700059738DE05A4A525CD20900D1ACE0122255 +:10348000A9E0182A07D15A7B55498A5C7F2A00D8BF +:10349000A2E013229FE0202A05D15A7B3C2A00D0CB +:1034A0009AE0262297E0482A09D15A7D7F2A03D044 +:1034B0004B498A5C92060FD44B225A740CE03C2A8A +:1034C0000AD15A7D7F2A00D186E045498A5C92065E +:1034D00000D581E03F227EE05A7C4149895CC907E2 +:1034E00004D5597B20294BD10C3A74E0029B6C1C0B +:1034F000FF335A7C352A06D15A7B3A498A5C5207F7 +:103500006AD5102267E02A2A1FD1C1227D26DF7CDE +:103510001B7D92000293019BE4B29D18A64207DB3B +:10352000281D291C042227F067FE013E043DF5E713 +:10353000019AA300D3182B22FF335A7400229A74E5 +:103540006A46DF74127A1A7583E72C2A18D1C122D1 +:103550007D26DF7C1B7D92000293019BE4B29D18C7 +:10356000A64207DB281D291C042227F045FE013E48 +:10357000043DF5E7019AA300D318FF332D22DCE7C1 +:10358000452A04D0392A02D00135ECB261E72A1C61 +:10359000111C019843318900114B095C6C1C595C6A +:1035A0007F2919D901320199D2B292008A18FF32CB +:1035B000517C002906D05B5C7F2B0DD9D37C002B7E +:1035C00006D009E0527D7F2A06D09B5CDB0903D040 +:1035D0001E22029BFF335A74E4B23AE707B0F0BDF3 +:1035E0003A470300DB470300F7B501214C1EE4B264 +:1035F000231C44339B001B5C7F2B2CD0554DEB5C74 +:10360000DB0702D40131C9B2F0E7231C013BDBB276 +:10361000002B21D01A1C44329200125C7F2A03D066 +:103620004D4EB25C7F2AF1D99A008218FF32567C47 +:103630007F2E0BD0AF5DBF0603D5474FBE5D76072B +:1036400004D5967C77080136F61996740133DBB2FF +:10365000A342E9D1D6E700239A008218FF32517CB9 +:103660007F2976D03C4D6E5CF40933D04127591C3C +:10367000C9B28C000419FF34667C0194BC467F2ECD +:1036800001D0AF5DBC464024AF5D27420FD1123E52 +:10369000012E01D90B1CDFE70233DBB244339B0060 +:1036A0001B5CEB5C2342F5D0937C013B08E0634656 +:1036B0005B0707D46346DB07ECD5937CDC081B1B58 +:1036C0009374E7E7019B9B7B5A1C9B08D318019AD4 +:1036D0009373DFE71F4C645C21070FD50133D9B228 +:1036E0008B00C318FF335A7C7F2AD3D0AA5C920781 +:1036F000D0D506229A74013A9A73CBE702210E4282 +:103700001BD01C1C0134E4B2211C44318900095C2B +:103710000029F7D001337F2919D00F4D695C890743 +:1037200015D5A4000419FF34A17C49080131A17406 +:10373000947C64080134947409E0E40606D5547B53 +:103740002C5D0C4202D0917C023991740133D9B2C4 +:10375000A0E7F7BDDB4703003A47030070B5041C40 +:10376000FFF78AFB201CFFF737FC231C0022FC33E9 +:10377000011EDA601A61914244D0261C224D113696 +:103780002B68FF36934203D02048311C02F07CF8AE +:10379000201CFFF7BDFD201CFFF7FAFB201CFFF7E4 +:1037A000C5FC201CFFF720FF201CFFF7D5FCC4221E +:1037B000331C9200A1181A78502A06D97F2A07D004 +:1037C000134A144B00211A601CE004338B42F2D1DF +:1037D0002B68002B02D010481EF0BCF9201CFFF70C +:1037E00077FB2B68002B03D00C48311C02F04CF8FF +:1037F000201C1FF0FFFE074B0949186827F014FE34 +:1038000041424141081C70BD6C0100206348030027 +:10381000724803000400002098480300A8480300F1 +:1038200029480300034B82B001AA98331A6002B002 +:103830007047C046882E0020034B82B098331B6827 +:1038400001A8181A02B07047882E0020014B9C3343 +:1038500018607047882E002008B50349034824F0FB +:1038600047FBFCF7D8FCC046260900004CF80200D4 +:10387000064B07B51A1C9C33983212681B6801A9C5 +:10388000521A9A4201D3FFF7E7FF07BD882E0020A6 +:1038900008B50B790349002B00D1034923F0BDF88B +:1038A00008BDC0466B2903006329030037B51D1C02 +:1038B0000023081C00930C1C111C1A1C0133FCF77C +:1038C00093FE064B002C06D02868FEF723FB044B22 +:1038D000002800D1014B181C3EBDC04678CD020027 +:1038E00034CD020010B50B1C041C002906D0054A7B +:1038F000096802609A6B00230DF0B4FD201CFCF7F0 +:103900008AFCC04678FD0200F0B5041C87B0039223 +:1039100002936718002A0ED0023A222A0BD93D4999 +:103920003D4824F0ECFAFCF776FC207802F06AF9C6 +:10393000002803D00134BC42F7D30AE023782B2BB4 +:1039400001D1013405E0061C2D2B03D101340126E1 +:1039500000E00026391B201C03AA1FF0FDFA2318E3 +:103960001D1C00240093BD4210D22B78181C01931B +:1039700002F060F9039B002806D0019A2F3A9A4280 +:1039800002DC019B303B0DE0102B03D0002E19D040 +:10399000644217E02023019A13431A1C613A052A56 +:1039A000F4D8573B201C0399019305F099F900289E +:1039B0001AD1039B5C43019B1C196300634013D421 +:1039C0000135D0E7012364001C43009B9D4216D0C3 +:1039D000BD4206D2287802F015F900280FD0013533 +:1039E000F6E7BD4213D00AE0009B05A80593F91A3B +:1039F000321C039B20F0A4F9059D041CE5E7074950 +:103A00000548039A0DF0C0FC0299FFF76BFF201CDC +:103A100007B0F0BD1449030010F802003749030055 +:103A2000F0B5041C8BB00993431808920193019BD5 +:103A30009C4200D30EE1207802F0E4F8002801D087 +:103A40000134F4E723782B2B02D10134049005E0F4 +:103A500004902D2B0ED12C3B01340493019B9C42EE +:103A600008D3824B002706930023251C07973E1C92 +:103A7000039356E0202322781A43692A2ED1019914 +:103A8000A21C914200D8BEE062781A436E2A00D090 +:103A9000B9E0A2781A43662A00D0B4E0E21DE51C22 +:103AA000914200D8A8E0E2781A43692A00D0A3E046 +:103AB00022791A436E2A00D09EE062791A43692A5D +:103AC00000D099E0A2791A43742A00D094E0E279F8 +:103AD0001343792B00D08FE005358DE06E2AC0D1DD +:103AE0000199A21C914200D88DE062781A43612AA4 +:103AF00000D088E0A27813436E2B00D083E0E51C51 +:103B000000265B4F7BE06B1C02932B781A1C303A2B +:103B10000592092A30D8022E07D10A237B43D718F1 +:103B2000029D019B9D42EED354E0012E15D10598D4 +:103B300017F0C8F8069916F0ADFD011C039816F0B1 +:103B40003BFA0390069818F0F1FE4A4A4A4B18F0E7 +:103B500067F818F03FFF0690E2E74849039816F02F +:103B600099FD051C059817F0ADF8011C281C16F0EE +:103B700023FA00260390D3E7002E02D12E2B02D188 +:103B800026E0022E19D020221A43652A15D1029B65 +:103B9000019A93420BD26B782B2B02D1AB1C029370 +:103BA00005E02D2B03D1AB1C029301230793029B4D +:103BB000019A934247D00226B2E70026089AB24201 +:103BC00009D0202213436A2B05D1029D013602E061 +:103BD0000126A5E70026079B002B00D07F42381C5A +:103BE00017F028F8011C254819F028FF011C03983C +:103BF00016F050FD071C02E0FF270026FF05049B7E +:103C0000002B09D005E0049B002B1CD0251C0026AE +:103C1000002780231B06FF18A54214D0019B9D425C +:103C200006D2287801F0EEFF00280CD00135F5E728 +:103C3000019B9D4207D1002E02D1099B002B0CD085 +:103C40000F48104901E00E480F4924F058F9109927 +:103C5000FFF748FE0023049303E7032302209F435A +:103C60000A4B0743F8180BB0F0BDC046CDCCCC3D95 +:103C70000000C07F9A9999999999B93F0000204115 +:103C800010F802005F4903007C49030000008080B7 +:103C900038B5051C0C200C1C1FF0DAFC024B4560EB +:103CA0000360846038BDC04680CD020010B5041C9E +:103CB0000C201FF0CDFC034B4460036001235B42EA +:103CC000836010BDBCCD020010B5041C0C201FF099 +:103CD000BFFC034B446003600223037210BDC04667 +:103CE000ACCF020010B5041C10201FF0B1FC044B37 +:103CF0000360237A0371636883600023C36010BD8F +:103D000044CF020010B5041C10201FF0A1FC044B8E +:103D100084600360034B43600023C36010BDC04652 +:103D20003CE20200A737020008B504301FF0DFFEB6 +:103D3000004808BD74E00200F8B5041C0D1C0B7AA5 +:103D4000124A9B00995822F068FE1149201C22F06B +:103D500064FE281CFFF7C6FF0126071C381C1FF055 +:103D60002CFD051E0CD0002E03D1201C094922F089 +:103D700054FE201C291C0122FDF7BCFE0026EDE7A5 +:103D8000201C054922F049FEF8BDC04604CE0200C1 +:103D9000964903008B40030099490300F7B50B686F +:103DA0001C4A041C0D1C934203D01B495A6822F084 +:103DB00000FF201C194922F030FE00230127019347 +:103DC000281C01A91FF0DAFC061E15D0002F03D114 +:103DD000201C134922F021FE0122201C3168FDF72E +:103DE00089FE1049201C22F018FE201C7168012257 +:103DF000FDF780FE0027E3E7201C0B4922F00DFEB3 +:103E00002B68044A934203D0201C084922F005FE87 +:103E1000F7BDC04664CE02009C490300A0490300E0 +:103E20008B400300A1870300DD4403001B43030014 +:103E3000002806D001280BD14B68DB085B00184333 +:103E400007E007224B680348934302D1024800E091 +:103E50000020704734CD020078CD020038B5151C23 +:103E60001A1C1C1C00F01CFE002802D04368002B0A +:103E70000ED12B1E08D1094B022C05D10849094847 +:103E800024F03DF8FCF7C7F9012C05D1436003E0AD +:103E9000022C01D100224260181C38BD74E00200DF +:103EA000A2490300F0FD020030B5002585B001A94C +:103EB000041C01951FF062FCA84205D10A490B4879 +:103EC00024F01DF8FCF7A7F9636802A9083B6360BA +:103ED0000368029343680393042328C0022005F07B +:103EE000F1FE05B030BDC046AA490300F0FD020056 +:103EF00073B50C1C151C1B280BD000231F2839D1AF +:103F0000081D111C002200F0CBFD1B4B002831D1F5 +:103F100018E00323194208D10A6818498A4204D1DB +:103F20002B4002D12968914224D0154BAA0721D1F8 +:103F3000144A296891421DD162686B685340072278 +:103F4000934301D00E4B15E00193201C01A91FF0F3 +:103F500015FC061E0DD0281D3168002200F0A0FDC2 +:103F6000031EEFD070685968FDF742FE0028ECD1BF +:103F7000E8E7014B181C76BD34CD020028CE0200C4 +:103F800078CD020064CE0200F0B51368141C012243 +:103F900087B00F680D1C0092D9080223061CFCF79D +:103FA00023FB022E22D103236868034016D1026846 +:103FB000D1682C4A914211D12A68904216D00593BB +:103FC000686805A91FF0DAFB061E0FD0381D31689E +:103FD000012200F065FD73684360F1E704F0C8F862 +:103FE0000390039804F012F9002801D1002526E07F +:103FF00004F0BEF8051C04F009F90290281C04F036 +:1040000005F9061C281C04F001F9029B002B03D0C3 +:10401000002E01D0002805D01349144823F06FFF6B +:10402000FCF7F9F8381D0299012200F039FD4660CD +:10403000D7E7A368EE009959002904D101356368D8 +:104040009D42F6D30AE00429F8D0381D012200F081 +:1040500027FDA3689E1973684360EFE7044807B023 +:10406000F0BDC04629410000C949030010F8020014 +:1040700074E0020010B5041C0C201FF0E9FA034B99 +:10408000446003600023037210BDC046ACCF020041 +:1040900010B5041C0C201FF0DBFA034B44600360D6 +:1040A0000123037210BDC046ACCF020008B5043036 +:1040B000002200F0F5FC002805D10449044823F053 +:1040C0001EFFFCF7A8F8406808BDC046A2490300DF +:1040D000F0FD020008B5024B08C01FF0E9FC08BD66 +:1040E00064CE0200F8B5071C48680E1C04F040F8C6 +:1040F000041CFDF7EBFE0B4D022F00D9B56800281C +:1041000000D040101FF0ADFB061C201C04F07EF810 +:10411000011E05D0301D012200F0C2FC4560F4E70D +:10412000301CF8BD74E00200F0B5071C89B0002017 +:104130001E1C0D1C01921FF094FB0E4B041C07600B +:104140009F4203D10422037913430371019B2B4344 +:104150000DD03368AA00B21805A8019903940493FE +:104160001FF0B8FC681C03A905AAFFF70DFF201C6F +:1041700009B0F0BD28CE020008B5002A02D11FF018 +:10418000B3FB11E0042A0DD10430002200F088FCBA +:10419000002805D10549064823F0B1FEFCF73BF89D +:1041A000406802E01FF096FB024808BDA2490300E8 +:1041B000F0FD020074E002008023044A5B051B69E5 +:1041C000107858438023DB02181A7047F82D00201E +:1041D0008023044A5B051B69107858438023DB0267 +:1041E000181A7047F72D002038B5084DC4012B6808 +:1041F000002118191FF0D4FD2868054B00197F30E5 +:1042000000781B788342F0D238BDC046640100209C +:10421000F92D002010B5C379041C002B08D0064BE3 +:1042200000791B68C00118180130A1791FF0B8FD92 +:104230000023237210BDC0466401002008B5034965 +:10424000034823F05CFEFBF7E6FFC0461A4A030072 +:1042500010F80200021C124B10B518685379DB01EC +:10426000C3181C1C7F342178FF2908D11179C9019A +:1042700041184978FF2910D0907988420DD0917962 +:104280005B1801315878CBB27E2B01D0937106E0D8 +:10429000002393712378537101E00120404210BD47 +:1042A0006401002038B5F8239B021A784D2A01D00A +:1042B0008023DB02802580206D052C69C0026442CA +:1042C00023402C6929691C1B001B15F0C5FB2A4BD8 +:1042D0002A4A18702B69E518AD185B421D40284921 +:1042E000284B294A5B1A9B18802252059D4202D214 +:1042F0001369ED18F3E78020C0021169401B15F027 +:10430000ABFB0122214B641B1870E411204BE4B27B +:104310001C70204B1A6000221F4B5A6059681D4ABE +:104320000029FBD0A123DB00D358DBB2A342F2D299 +:104330001A4901330B7001235360FFF73DFF0378E7 +:10434000051C174CFD2B09D180235B051869154B03 +:10435000C009C018C001281820600BE0FFF738FF23 +:104360000378803DFD2B04D0FFF732FFFD211FF0C5 +:1043700017FD256038BDC046F72D0020FF87FFFFE1 +:104380000000002028010020ACB10300F82D00201F +:10439000F92D002000D00040FCD00040F62D002078 +:1043A00064010020FFFFFF01F0B585B0264E274ACB +:1043B0003478274D201C1378296801330296039224 +:1043C000C201525CFF2A3DD00130C0B2984200D1F8 +:1043D0000120A042F4D1802300275B051B69DB0983 +:1043E0000193E3010093009A2B689E183278301CE9 +:1043F00053425341FF181FF0E9FC002809D0002365 +:10440000019A934218D0DA01B25C002A01D101333B +:10441000F6E7039B01341B78E4B201339C4200D1E0 +:104420000124029B1B78A342DBD1072F02D91FF086 +:1044300066FABBE7FF2005E02868009BC0181FF064 +:10444000BBFC201C05B0F0BDF62D0020F92D00208E +:1044500064010020F7B5071C0D1C01240E4B1B78CE +:1044600001930E4B1E68019B9C4211D8E10171180B +:104470000B78FE2B09D18B78AB4206D10331381C67 +:104480002A1C26F0AAFE002804D00134E4B2EAE790 +:10449000FF2000E0201CFEBDF92D0020640100205B +:1044A00008B5054A03791268DB01D318D81C99783E +:1044B000002207F0B9FC08BD64010020F0B585B00A +:1044C00002900D1C171C039378294DD8FFF7C2FFEB +:1044D000031C041C002F2AD0254EFF2805D032686B +:1044E000C301D01800211FF05BFCFFF75DFF041E25 +:1044F000FF2C05D11F49204823F001FDFBF78BFE5F +:104500003368C0010190FE2118181FF049FC336880 +:10451000019AE9B2981802301FF042FC3068019B02 +:104520000299C01803302A1C00F028FF02E0381C52 +:10453000FF2B1AD00C201FF08BF8039B002B01D00F +:104540000E4B00E00E4B0360094B04711B68447175 +:10455000E4011C19A378C77102338371012303722C +:104560006B461B7B437200E0002005B0F0BDC046E7 +:1045700064010020374A0300C0F9020040CC020069 +:1045800088CC020007B501A908F006F90199FFF7E8 +:1045900061FFFF2805D10549054823F0B0FCFBF772 +:1045A0003AFEFFF721FE03480EBDC04689460300D0 +:1045B000C0F9020074E00200F7B50192027A061C0D +:1045C0000091002A01D1FFF739FEC579002D06D1EF +:1045D000214A17680279D201D25D002A23D109222B +:1045E00001201A60404236E03279D201BA1852787E +:1045F000FF2A24D0D21A944200D9141C019A521BCB +:10460000944200D9141C002C24D0009AC9185019C7 +:104610000131221C26F0F0FDB379E318DBB27E2BCA +:104620000FD0B3712D1971797E24C90179180A1C34 +:104630007F32B3791278E41AFF2ADFD1D4E700245D +:10464000DCE70023B3717379DB01FB187F331B7840 +:104650007371E7E7281CFEBD64010020F0B585B04A +:104660000393037A041C01910292002B01D1FFF7FE +:10467000E5FDC379002B07D02B4A03791268DB01D3 +:104680009B5C029F002B1CD1092341E060793368B9 +:10469000C0011818291C7F301FF082FB3368ED0120 +:1046A000581961791FF07CFB63793268DB01D318FC +:1046B0007F331B786371009A019B94466344019396 +:1046C000BF1A002F29D07E22A3790097D21A9742D1 +:1046D00000D90092144E60793268C0011018C018D9 +:1046E000009A0130019900F049FEA379009AD3188D +:1046F000DBB27E2B13D10023A371FFF755FE051EFD +:10470000FF2DC3D12079FFF76FFD002323721C23F7 +:104710000120039A4042136003E0029801E0A37174 +:10472000C9E705B0F0BDC04664010020002038B5DF +:10473000011C1EF0E4FB0124051C0C4B1B78A3425A +:1047400012D30B4AE3011268D3181A78FE2A08D153 +:104750009978D81C002207F067FB011C281CFCF785 +:1047600089FA0134E4B2E8E7281C38BDF92D0020AD +:104770006401002013B501A908F00EF80199FFF7B4 +:1047800069FEFF2805D10F490F4823F0B8FBFBF75E +:1047900042FD0E4B1C68C301E31859789B78023325 +:1047A000DAB20023C00120187F300078FF2803D040 +:1047B0009B1A7E330022F5E7881AC0181FF09AFA78 +:1047C00016BDC04689460300C0F9020064010020FE +:1047D00008B5024A024B20F079FD08BD55420000A1 +:1047E00015420000FF2310B50324DB05CB18A343BB +:1047F000021C181CA24213D0042A09D00021002A4E +:104800000ED115F0F5FA0749002809D0064907E04E +:104810008022022012069B18A343044A03439918DE +:10482000081C10BD34CD020078CD0200000080804D +:10483000FF23DB0510B5041CC818032386B098437A +:1048400004330093002302A901931022673300F080 +:10485000BFFD02A9201C22F0E0F802A82E2126F0BC +:10486000D5FD00280FD102A8652126F0CFFD002834 +:1048700009D102A86E2126F0C9FD002803D1201C11 +:10488000024922F0CAF806B010BDC046094B030029 +:1048900030B51D1C002385B00C1C0093081C111C96 +:1048A0001A1C0133FBF7A0FE002C21D02868124B04 +:1048B0000340062B06D0032318420DD10F4A01688E +:1048C000914209D103A907F067FF002303990093E0 +:1048D0001A1CFFF7A5F80CE00340022B09D0FDF7E6 +:1048E0003DFA03239843013B1843054BC01800E0F1 +:1048F000044805B030BDC046070080FF80CA0200F2 +:10490000000080800200808070B5051C86B0101CFD +:104910000191FDF723FA041C0390681F182800D9A1 +:10492000B0E015F07BF80D10161B2C37686DAFAF9B +:10493000AFAFAF0D10161B2C3768898E93989D0072 +:104940000198211C54E00198211C15F0D5FF01901D +:104950008FE00198211C15F09DFEF8E7201C002136 +:1049600015F046FA002805D04849494823F0C7FA0F +:10497000FBF751FC01A803A91FF027F879E0201CE0 +:10498000002115F035FA0028EED10198211C15F010 +:104990008FFCDCE7201C002115F02AFA0028E3D167 +:1049A000211C019818F06AFF0021051C019015F0E8 +:1049B0001FFA002807D0039A0023002A01DA802377 +:1049C0001B06019355E00021281C15F017FA431E21 +:1049D00098410124039E404204400021301C15F000 +:1049E0000DFA431E9841E4B2844242D0281C311C87 +:1049F00015F0E2FAABE70198211C19F01FF8A6E7C1 +:104A0000201C002115F0F4F90028ADD101A803A95C +:104A10001EF0DBFF03220220019B1E499343034348 +:104A20005B180493039B934303435B1804A905930A +:104A300005F048F9031C26E00198211C15F0DEF969 +:104A400012E00198211C15F0EDF90DE00198211CF0 +:104A500015F0CEF908E00198211C15F0D9F903E012 +:104A60000198211C15F0E8F90B4B00280BD10B4BDA +:104A700009E00323019A02209A43131C054A0343C9 +:104A80009B1800E00023181C06B070BD4D4A0300BF +:104A90006CFC02000000808034CD020078CD020062 +:104AA000F0B5067887B0B30702D5002A00D0F2E04F +:104AB000F307DB0FDBB20293002B0ED0774B0B40DA +:104AC000062B0AD003230B4003D1754C0D68A54279 +:104AD00002D0012A01D0DEE0029301920D1C041CD9 +:104AE000730749D503688768DE08F600BE19B74228 +:104AF00011D23868A84204D1019B022B00D0A1E05A +:104B00009EE0029B002B04D1291CFDF771F80028C0 +:104B1000F2D10837EBE7019B012B00D0BBE0236803 +:104B2000D9086368994210D104316160A068C90056 +:104B30001EF0A4FD23686268DB08D21ADB00A060C7 +:104B4000D200C018002126F074FB07222068C30899 +:104B5000591CC90002400A432260A268DB004F4989 +:104B6000D3181D60181C0D40062D00D194E00121C2 +:104B700022788A4322708FE04368002B05D1019B85 +:104B8000012B00D087E000F08DF8444B2B400493BC +:104B9000062B04D1E8081DF068FF039005E0022011 +:104BA000291C03F081F9431003930398616814F002 +:104BB000D9FF002600910591009BDF00A368DF1953 +:104BC000386800281AD1019B311C012B63D1206861 +:104BD000C3080133DA000723034013432360002E88 +:104BE00000D1391C00234B60049B0D60081C062B70 +:104BF00052D001222378934323704DE0042803D13F +:104C0000002E21D13E1C1FE0A84203D1019B022BA4 +:104C100018D108E0029B002B16D1291CFCF7E8FFF5 +:104C2000002811D0F2E723686168083B23600098F0 +:104C3000013014F097FFA368C900CB58002B00D0B7 +:104C400004233B60381C27E000986168013014F0B1 +:104C500089FF059A00919142AED1019B012B1AD197 +:104C6000002E0ED023680833236000237360049B5A +:104C70003560062B03D02378019A93432370301CB0 +:104C80000AE0201C00F00EF80398616814F06AFF37 +:104C90000091059190E7002007B0F0BD070080FF6C +:104CA00080CA0200F7B54368041C0193591C002315 +:104CB000174A9A588A4205D204335C2BF8D1012551 +:104CC0000D4300E0151CE800A7681EF0D3FC072385 +:104CD00022686560134001223D1C002623601343B7 +:104CE0002370A060019B9E420DD02968002907D047 +:104CF000042905D0201C0122FFF7D2FE6B68436017 +:104D000001360835EEE7381C1EF0C9FCF7BDC04679 +:104D100048D002000022F8B50768051C8668781C98 +:104D2000114BD358834205D204325C2AF8D10123B7 +:104D3000184300E0181C002428606C6080001EF0FE +:104D400099FCA860BC420BD0A300F158002905D003 +:104D5000042903D0281C01221EF0E8FE0134F1E7EB +:104D6000301C1EF09CFCF8BD48D002007FB5012825 +:104D700003D108680021FCF7D7FE02A810211DF01E +:104D8000CEFE02A809491EF055FB039B0193002BA0 +:104D900006D1042804D1064823F0A4F8FBF73BFA17 +:104DA00002A9044807F00AF807B000BDBF74030069 +:104DB00030FC020080CA020010B510201EF048FC32 +:104DC000041C034B08C021F0C6F8201C10BDC046CF +:104DD00030D3020038B5052827D80D1C14F01EFE6C +:104DE00005250D03141C081C20E0081D21F0DFF927 +:104DF000031E0F481AD00F4818E0081D21F0F6FCDA +:104E000001214000084311E0FFF7D6FF291D041CD3 +:104E1000043021F002FA06E0FFF7CEFF291D041C42 +:104E2000043021F00AFA201C00E0002038BDC04602 +:104E300034CD020078CD020038B5051C83070CD1B3 +:104E4000104B02689A4208D1FFF7B6FF041C291DD7 +:104E5000043021F0D7F9201C12E0281CFCF71AFFBF +:104E6000C0231B06984205D180200021C0051EF0FA +:104E700032FF05E0C317C018584001234000184313 +:104E800038BDC04630D3020038B5051C18F0FAF919 +:104E9000012802D10F48104903E0002805D10F482E +:104EA0000F490CF071FAFBF7B6F9281C1FF054F803 +:104EB000002806D1281C15F09DFE01244000204347 +:104EC00007E0FFF779FF041C291C043021F0C2F829 +:104ED000201C38BD3CFD02005E4A030010F80200B1 +:104EE000774A030007B5C30701D540100DE0043031 +:104EF00001A908F06FFF002801D0019805E00349DF +:104F0000034822F0FCFFFBF786F90EBD904A030030 +:104F10003CFD0200F0B58DB00190012008400D1C51 +:104F2000171C041E07D04B1003A802A9022221F06F +:104F300051F803AE08E003230B4065D19A4A096893 +:104F4000914200D025E12E1DFB0707D57B1003A859 +:104F500002A9022221F03EF803AD1AE003231F420A +:104F600005D1914A3968914201D13D1D11E03B4084 +:104F7000022B00D011E18D4B3B40062B00D10CE100 +:104F8000301C21F086FC3A1C011C0198FFF7BCFC88 +:104F900008E1019B092B01D0162B16D1281C21F00A +:104FA00006F900283DD1301C21F073FC041C281C9C +:104FB00021F06FFC011C201C15F07AF90323022458 +:104FC00098437B4B0443E018ECE0019B182B00D97D +:104FD000BAE0FFF7F1FE041C019814F01FFD6A709F +:104FE0006476760D10171DDC478E946A70647676B1 +:104FF0000D10171DDC478E00201D311C4FE0201DB9 +:10500000311C2A1C21F0EBF9201CCBE0201D311CA7 +:105010002A1C21F025FBF7E7281C21F0C8F80028FE +:1050200002D06448644957E006A8271D20F093FF8A +:10503000321C2B1C381C06A908F076FD2A78337820 +:105040005340DB070ED506A821F0B1F8002809D19E +:10505000012109A8494220F0B3FF381C391C09AAD4 +:1050600021F082F906A820F082FFCDE7281C21F06C +:105070009EF80028D5D109A8271D20F06CFF321C0E +:105080002B1C09A8391C08F04FFD09A820F06FFF60 +:105090002A7833785340DB07B6D5381C391C2A1CD4 +:1050A00021F062F9B0E7201D311C2A1C21F0DFF944 +:1050B000AAE7201D311C2A1C21F059FAA4E7201D63 +:1050C000311C2A1C08F0BCFC9EE7381CFFF70AFFC5 +:1050D000021E05DA39483A4922F011FFFBF79BF826 +:1050E000019B201D311C032B01D0102B02D108F095 +:1050F0003BFC89E721F0D8F886E7201D311C2A1CEB +:1051000021F031FB80E7281C21F051F8002888D1DC +:10511000FFF752FE271D0190321C2B1C0430391C56 +:1051200008F002FD2A7833785340DB0704D5381C99 +:10513000391C2A1C21F018F9019B09A902200993A6 +:105140000A9404F0BFFD2DE0301C291C21F034F836 +:10515000019A031C193A0020042A23D8101C14F0C9 +:105160005DFC0307130B0F001648002B1ADA0EE044 +:105170001448002B0BDC15E01248002B12DC06E073 +:105180001048002B03DA0DE00E48002B0AD10E4820 +:1051900008E0181C06E0002004E00198291C3A1CD5 +:1051A00001F090F80DB0F0BD30D30200070080FF91 +:1051B000000080806CFC02004D4A030010F80200E1 +:1051C000BD4A030078CD020034CD0200A0200B4A76 +:1051D0000B49D36F30B5C0058B4201D1094C01E0BA +:1051E000A124E4001D68055118895B68D3671B89F9 +:1051F000181A002801DC0B89C01830BD882E002049 +:10520000080000200C05000008B5044A044B0220E9 +:10521000DA670449782205F0A5FF08BD08000020E0 +:10522000882E0020CD510000F8B5144BC218144B45 +:105230009A421FD8134B051118681E1C002801D173 +:105240001D8119E01EF0A7FDA0220F4B3168D20589 +:10525000D15037897468B44207D02089391C68431B +:1052600014F08AFC20816468F5E72581FFF7CCFF04 +:10527000002001E001204042F8BDC04618FCFFFFBD +:10528000583E0F00080000200C050000014B188953 +:105290000001704708000020334BF7B5051C994208 +:1052A0005ED80120314AA840161C5368B34205D08D +:1052B0001F68074204D11A1C5B68F7E7002310E05F +:1052C000C44327401F60A0270194294CFF05385193 +:1052D0003068019C0440346018680028EED158689A +:1052E0005060002081423DD0204A4900148901319C +:1052F0006143C912814200D10121081B4742474145 +:105300006DB2C91B641A291CA0200326C131FF31CC +:105310008900C0050E500120A840051C161C10680D +:1053200051682843A4B210600889914204D0A04279 +:1053300002D20E1C4968F7E7A04203D10B681D4357 +:105340000D600BE0002B04D1191C0C2001F08EFD28 +:10535000031C72681D605A601C817360002001E0AC +:1053600001204042FEBDC046FF03000008000020AF +:105370000C05000000487047F0D00200F8B50D1C85 +:10538000061C141C05F03AFE2B1C032733433B423A +:105390000BD1BC4209D9A208301C291C13F03EFFD6 +:1053A000231CBB43F618ED183C40002C04D0301CE5 +:1053B000291C221C25F060FD8023044ADB00D35801 +:1053C000002BF9D005F00AFEF8BDC04600E0014010 +:1053D000F0B58BB0079310AB80CB041C01911B7808 +:1053E000062A11D8012A05D93F230B700B1C013363 +:1053F000019301E0002A02D0002301990B700123E0 +:105400009342AD4168423BE2002809DA019B0199D1 +:10541000013300932D230B7080231B06C41807E073 +:1054200001990091002B03D00131009101990B707B +:10543000FF21C905081C019B20400993231C8842B9 +:105440001FD12023079A00991A40131C64024E2290 +:10545000CD1C002C09D100985A40492142704622A7 +:10546000594053400170837007E000991A430A7055 +:1054700041214B4000994B708A7000232B70019B97 +:10548000D0E1002F00DA0627551E0099019A521A22 +:10549000AD182022079911430291672903D1002FEB +:1054A00012D1012710E0002B1DD1029B662B0DD1DC +:1054B0007B1CAB4200DBAF1E6623039300237D1CE5 +:1054C000049305931E1CE9E0002B0CD17B1DAB421D +:1054D00000DBAF1F029B652B00D0CDE003933A3B6E +:1054E00000250493CCE0B64A934271D8201CB549FC +:1054F00014F0A2FC431E9841002620233030059072 +:1055000004930396B04B211CF05814F08BFC002838 +:105510000AD0049A039B944663440393AB4B201C2C +:10552000F15815F0B7F8041C049B04365B10049383 +:10553000182EE7D12D230493A14B039EA34213D32E +:10554000201CA04914F078FC002804D0002E09D1BA +:105550002B23049306E0201C9D4915F09BF801368F +:10556000041C01E0FE24A405029B662B03D0672BDC +:1055700024D1042E22DC6A46009B127D1A70029B05 +:10558000672B01D1731EFF187B1CAB4200DBAF1EE3 +:10559000002F00D155E12E23009A3D1C5370131C9F +:1055A0000233013E0093002E6DD0002D04D0302236 +:1055B000013D1A700133F4E7049565E06B1FBB42AF +:1055C00000DD48E1029A672A63D0AF1F131C62E036 +:1055D00000262023039604937C4B211CF05814F0E2 +:1055E00017FC00280AD0049A039B94466344039353 +:1055F000754B201CF15815F04DF8041C049B043623 +:105600005B100493182EE7D1201C7149039E14F0FF +:1056100013FC002805D0201C6E4915F03BF801361C +:10562000041C029B662B0AD1AE420BDAF31901333C +:10563000AB421ADBAD1BAF1E17D56F1E15E0029BE8 +:10564000652B05D16B1FBB4200DDEDE0AF1FEBE02A +:10565000029B672B00D00CE13B1DAB4200DB6F1FB0 +:10566000BE4200DBE7E0F343FF180023BD190493BB +:10567000013505966633DCE00025029B0495039313 +:1056800005952E1C0AE0049601235B4205936733BF +:10569000CFE01F1C029B002503930595FB43DB17FE +:1056A0001F40039B652B01D17D1C06E0039B672BEC +:1056B00003D13D1E01D101252F1C00230693069B1B +:1056C000AB4225DA201C15F095FA009B009A0133B5 +:1056D0000893031C30331370059B069A934207D13D +:1056E000002F05D0009B009A023308932E2353709D +:1056F00015F0A0FA011C201C15F0FEF8344914F036 +:10570000C9FF069B041C01330693089B0093D6E750 +:10571000029B009D662B02D1012E62DCA1E0201CC1 +:105720002D4914F089FB00283FD0009B013B1A78DB +:105730002E2AFBD0111C3039092902D901330193DB +:105740000AE0392A03D0013201931A7004E03022B2 +:105750001A70019A9342E9D1019B1B78302B1CD11E +:10576000019A52782E2A0BD10399662908D0019903 +:105770004B70049B0A702D2B01D1013E00E00136D5 +:10578000009D01352B1C019A934204D95A1E1178B1 +:105790001970131CF7E731231370094B9C4204D88E +:1057A000039B663B5A425341FF1A029B672B18D159 +:1057B000002F16DD6B1E1A78302A0FD11D1CF9E759 +:1057C000FFFF7F3FF8FF7F3FC0D10200A8D102005A +:1057D00000002041CDCCCC3D0000A0402E2A00D1BD +:1057E0001D1C049B002B1AD02023079A0A211A4063 +:1057F000131C452213432B706B461B7C301C6B70B3 +:1058000014F0BAF90A2114F09DFA3031A970301C55 +:105810000A2114F097FA2C1D3031E970251C002361 +:105820002B70099BE81A2BE02B2300250493059588 +:105830003A33039332E7672303933C3B00250493F9 +:105840002BE7009B04970133009301235B420593F0 +:105850006733039303E0029B039300230593002522 +:105860001FE7201C074914F0E7FA002800D05CE786 +:10587000B7E7029B002503932B230595049310E7BC +:105880000BB0F0BD0000A040F7B5061C194D0C1C74 +:10589000281C1CF05FF9311C17481CF089F81748C8 +:1058A0001CF058F916481CF055F9FF239B00E61828 +:1058B00021787F2916D0B44214D0627850290BD8B1 +:1058C000104B11485F5C114B5B5C0092A278019217 +:1058D0003A1C1CF06DF803E0A3780D481CF068F842 +:1058E0000434E5E7281C1CF035F90A481CF032F9AD +:1058F000F7BDC0460C4B0300394B0300414B03007E +:10590000174C030098460300624B0300E94603006E +:10591000854B0300354C0300F0B51D1C89B0069083 +:105920001B48161C07911CF015F9291C19481CF07E +:105930003FF819481CF00EF918481CF00BF9002428 +:10594000AC4220DA079BA0001818C778069BBC461B +:105950003F073F0F195D82780378009707889B0601 +:10596000FF047F0E019767463F09029700681209FE +:105970000003400E0390305D9B0E049008481CF01D +:1059800017F80134DCE702481CF0E4F809B0F0BD78 +:105990000C4B0300A64B0300D34B0300054C030044 +:1059A000374C0300F0B5456887B00393AB6805A892 +:1059B0000F1C029205931FF011FD061C05A81FF095 +:1059C0000DFD0323321C58430932101880001DF0CE +:1059D0003FFE041C094BAA6803606B68291C4360E6 +:1059E000059B06629B1AC360039B083000933A1C18 +:1059F000029B05F061F9201C07B0F0BD20D2020027 +:105A000038B5051C88680C1C1FF0AEF80349021C51 +:105A1000231C281C21F0CDF838BDC046594C03008A +:105A200010B5041C08201DF013FE024B44600360F7 +:105A300010BDC046D8D10200F8B5041CC0680E1CC9 +:105A4000002801D118602FE0201C111C6269203051 +:105A50001D1C824208D1154A964206D014491548A9 +:105A600022F04DFAFAF7D7FB1660201C124E63683D +:105A70000830776873600BF043FD7760012806D02B +:105A80000023E360022809D063691B680BE06369A7 +:105A90001B682B60002B07D1E36005E0236A073306 +:105AA0009B00E41863682B60F8BDC04674E00200F8 +:105AB000774C030000FD0200882E002013B501ABD7 +:105AC000141CFFF7B9FF01280DD0184C02281CD078 +:105AD000019BA34228D0002B26D0012101AA144803 +:105AE00022F0FAF90DE0002C0DD0201CFBF7E8FFA6 +:105AF000104905F0FFFF002805D00F480F4922F09C +:105B0000FEF9FAF788FB01980FE00198FBF7D8FF40 +:105B1000074905F0EFFF002801D10198F1E701984E +:105B20000BF012FCA042F8D1002016BD74E0020078 +:105B3000BCFA0200B4FD02004CF80200AD4C0300B8 +:105B400010B50C1C022801D1486800E0886802F0FA +:105B5000D7FF0649021C2068FFF7B0FF002804D1D8 +:105B6000034822F0BFF9FAF756FB10BD74E00200BB +:105B7000BCFA020008B50022FFF7A0FF002804D1FC +:105B8000024822F0AFF9FAF746FB08BDBCFA020062 +:105B900008B502490022FFF791FF08BD74E002003A +:105BA00013B5124C124A211C01ABFFF745FF012827 +:105BB00002D0022805D017E00E490F4822F09FF9C5 +:105BC00010E00198FBF77CFF0C4905F093FF0028DB +:105BD0000AD10198FBF774FF094905F08BFF0028F3 +:105BE00002D10198FAF717FB201C16BD74E00200E1 +:105BF000CCF80200AD4C03004CF80200B4FD0200EA +:105C0000BCFA020000237F2803D8034B1B5C9B07D0 +:105C1000DB0F181C7047C046CD4C030000237F28C3 +:105C200003D8034B1B5C1B07DB0F181C7047C046D7 +:105C3000CD4C030000237F2803D8034B1B5C5B077C +:105C4000DB0F181C7047C046CD4C030000237F2893 +:105C500003D8034B1B5C5B06DB0F181C7047C04668 +:105C6000CD4C030000227F2808D8054B0132195C77 +:105C70000C23194202D15F3842424241101C704746 +:105C8000CD4C030000237F2803D8034B1B5CDB06AD +:105C9000DB0F181C7047C046CD4C030000237F2843 +:105CA00003D8034B1B5C9B06DB0F181C7047C046D8 +:105CB000CD4C0300F8B50327041C381C0E1C5043C0 +:105CC000151C1BF02FFA0121331CA022B140C13357 +:105CD000FF33D2059B006060267065809F50094BA2 +:105CE000D1500022AA420CDA0323002153436068FA +:105CF0000132C1546068C01841706068C31899705F +:105D0000F0E7F8BD0C0500000122F0B50378A021F2 +:105D10009A40131C894AC905051C85B08B50322056 +:105D20000138C046C046C046C046C046C046C04610 +:105D3000C046C046C046C046C046F1D1EFF3108110 +:105D4000019172B60020698802910299884200DBB5 +:105D500007E1032141436C686118CC1C0394A02423 +:105D6000A1260F78E405FF09F600002F0BD0A35100 +:105D7000C046C046C046C046C046C046C046C046F3 +:105D8000C046A3500AE0A351C046A350C046C04637 +:105D9000C046C046C046C046C046C0460C78A12793 +:105DA000A446A0246646E405FF00E35176060AD522 +:105DB000C046C046C046C046C046C046C046C046B3 +:105DC000C046A35009E0C046A350C046C046C046E6 +:105DD000C046C046C046C046C0460C78A127A4466F +:105DE000A0246646E405FF00E351B6060AD5C04686 +:105DF000C046C046C046C046C046C046C046C04673 +:105E0000A35009E0C046A350C046C046C046C046A5 +:105E1000C046C046C046C0460C78A127A446A02470 +:105E20006646E405FF00E351F6060AD5C046C046C3 +:105E3000C046C046C046C046C046C046C046A35045 +:105E400009E0C046A350C046C046C046C046C04652 +:105E5000C046C046C0460C78A127A446A02466468A +:105E6000E405FF00E35136070AD5C046C046C046E8 +:105E7000C046C046C046C046C046C046A35009E022 +:105E8000C046A350C046C046C046C046C046C046F5 +:105E9000C046C0460C78A127A446A0246646E40567 +:105EA000FF00E35176070AD5C046C046C046C0464B +:105EB000C046C046C046C046C046A35009E0C046E2 +:105EC000A350C046C046C046C046C046C046C046B5 +:105ED000C0460C78A127A446A0246646E405FF002E +:105EE000E351B6070AD5C046C046C046C046C046C4 +:105EF000C046C046C046C046A35009E0C046A350B5 +:105F0000C046C046C046C046C046C046C046C04661 +:105F10000C78A127A446A0246646E405FF00E351BF +:105F2000F6070DD5C046C046C046C046C046C0466E +:105F3000C046C046C046A3500CE0C0460C05000059 +:105F4000C046A350C046C046C046C046C046C04634 +:105F5000C046C046039C0131A14200D0FFE601309B +:105F6000F3E6019B83F3108805B0F0BD30B58DB02A +:105F7000051C6846FAF734F9011E0ED12A1D0120CE +:105F80001EF008FD0122EB68041C5B1001335B006E +:105F90001343EB60FAF73AF90AE00198064A0368FE +:105FA0000024934204D0054A934201D0FAF733F912 +:105FB000201C0DB030BDC046BCFA02006CF90200D6 +:105FC00010B5041C10201DF043FB044B0360236834 +:105FD0004360636883600123C36010BD9CD20200EC +:105FE000F0B500270D1C85B003901E1C081C104B3B +:105FF000111C00970222FAF7F7FAA81C80001DF086 +:1060000027FB039B041C03606B1E3D1C0393436032 +:1060100033688360039B9D4207D20135AF00F0597E +:1060200002F0A6F8E719B860F4E7201C05B0F0BD4F +:10603000FFFF00007FB54B680E1C5C106846211CFA +:106040001CF084FD029D0021281C221C25F0F1F883 +:1060500001213068014004D1221C2B1C1DF022FEBE +:1060600008E0042C00D9042443100021201C2A1C21 +:106070001EF0AEFE6946024805F0A0FE04B070BDF9 +:1060800048EF0200F0B5002585B0081C0C1C1E1C52 +:10609000111C00952A1C0223FAF7A6FA0120AC4233 +:1060A0003FD0844228D1306820423AD103230340B4 +:1060B000AB4203D11C4A0168914232D01B4A0240D4 +:1060C000062A06D0002B0BD103689A69184B9A4216 +:1060D00006D103A906F060FB00220399131C18E007 +:1060E0000323021C1A40022A16D1FF22D20580186F +:1060F0009843FEF7C9FE14E003A9306806F04CFB94 +:10610000071C7068039CFBF7C5FD211C021C2B1C9F +:10611000381CFDF7F9FB04E0FBF7BCFD0123400050 +:10612000184305B0F0BDC04630D30200070080FF21 +:1061300079CD0000F0B58DB0099214AA1278041C34 +:106140000B9215AA12780F1C0892DA0700D494E07B +:10615000181CFBF79FFD002305900793002803DA26 +:10616000434205932D230793129B0026023B1E2BCF +:1061700016D8524B129A2020995C13F06DFC089BA4 +:10618000C5B2B34204D0681C032113F065FC061CA1 +:106190001398002801D025F051F90335AE193618AF +:1061A0003B689E4204D9301C1DF052FA20603E60CC +:1061B00023689F19069300237D1E2B70059B002BDF +:1061C00003D1023F30333B7033E00A9505981299B2 +:1061D00013F0B8FD0F1C0598129913F0CDFC3B1C71 +:1061E00005903033092F02DD0B9B0A3BFB186F1E15 +:1061F0003B70089B002B16D0059B002B19D0069BEB +:106200009F4216D90A9BDB1B032B01D03D1CDDE707 +:106210006B4620229B181B78AF1E3B70069B9F424B +:1062200007D90A97F2E7069B9F4202D9059B002BEC +:10623000ECD1139B002B0ED0181C25F0FFF8069B09 +:10624000381A984207D90023139AD25C002A2ED01C +:10625000C2540133F8E7079B002B06D0069B9F42F0 +:1062600003D96B461B7F013F3B702368381C9E1986 +:10627000F61B099B013E1E601EE09A0710D1104AD2 +:10628000196891420CD1129A391C0092139A01920A +:106290000B9A0292089A0392099A1DF0DAFC0BE01D +:1062A000002322681370099A2068136004E0079B9A +:1062B000071C002BD5D1D8E70DB0F0BD4D4D030024 +:1062C00030D3020010B50C1C1449031C8A4202D1C1 +:1062D000211C01221EE012498A4202D1211C032204 +:1062E00018E00020072B17D10E4B1340062B0ED0C1 +:1062F000930711D113680C498B4208D00B498B428C +:1063000005D00B498B4202D00A498B4204D1111CA3 +:106310000720221C01F0BAFF10BDC04678CD020054 +:1063200034CD0200070080FF80CA020048EF02005F +:10633000BCDC02009CC6020070B5061C081C1CF0E8 +:1063400068FC051C1DF02EFB041E06D108492A1C02 +:1063500008480BF019F8F9F75EFF301C1EF00DFC31 +:10636000031C0121201C1A1C02F066FC70BDC046F3 +:106370006E4D0300B8FB020010B5041C1CF049FC74 +:106380001EF011FC031C012083420CD00649201C86 +:106390001CF05BFC201C1CF03CFC1EF004FC0238D2 +:1063A00043425841400010BDBF4D0300F0B59DB0C1 +:1063B00000AF0C68032807D9CB680025FB600428D0 +:1063C00005D00D696D1002E00025A24BFB601C2377 +:1063D000201CF91806F0E0F97861002D56D09E4C8B +:1063E0006E216068FDF762FE061C6068962100223F +:1063F0000430FEF755FB1823FA18D118041C301C82 +:1064000006F0CAF93B6B011C013DC018002C0CD1F1 +:1064100088420AD9013803782E2BF9D105E0884249 +:1064200003D9013803782E2BF9D1013DF7D2FE694B +:10643000441A251C002E01D0751C2D192B1C6A46F0 +:106440000E33DB08DB00D31A9D46181C221C3B616F +:1064500024F0D2FE002E08D02E233A697969135514 +:1064600001341019321C24F0C7FE3869291CF9F7D1 +:106470007BFF012804D17949794821F040FD5FE094 +:1064800006243B69C0000443FD617B61201C05F0CC +:10649000EDFC02F007FE051E15D02E21786924F0D0 +:1064A000B5FF011C281C002900D1D0E0694BFA6817 +:1064B0009A4200D0CBE07B69C91A181CF9F754FF47 +:1064C00002F0F0FDC3E018220823BA18D0181033E8 +:1064D000FA184021D2181CF041FB0126BD603D6135 +:1064E0002C1C04E07B699B5D2E2B05D00136FB69DB +:1064F0009E4200D9A5E0F5D1311C7869F9F734FF47 +:1065000018220823BA183860D0181CF050FB182243 +:106510000823BA18002815D1D018321C79691CF04C +:10652000DDFA18220823BA18D018FFF725FF786083 +:106530007B68002B13D14A484A493A680AF024FF85 +:10654000F9F769FED0182F21F9F7E4FF7B693A6962 +:106550001820991808233818B21AC018DFE73868CD +:1065600002F0A0FD041E57D1386802F061FDFB69FE +:10657000041C9E4208D13C4BFA689A4204D18068C0 +:106580006E215E221DF0A6F97B68012B3DD11822F9 +:106590000733BA18D0181CF003FB18220823BA18C6 +:1065A0007860D0181CF003FB0022011C786805F00D +:1065B0003BFC1221021C201C01F0B6FD182208230E +:1065C000BA18D0182F21F9F7A5FF18220823BA18F6 +:1065D000D01826491CF039FB18220823BA18D01805 +:1065E0001CF017FB1EF0DFFA022806D11822082340 +:1065F000BA18201CD118FFF79FFE18220823BA18DA +:10660000D0180C211CF060FB06E018220823BA18F1 +:10661000201CD118FFF790FE002D0AD03A697B6943 +:10662000B11A9818F9F7A0FE221C011C281C01F0D1 +:106630007BFDBB68002B00D1BC60731C3B61251C3B +:1066400054E7044BFA68201C9A4200D1B868BD4652 +:106650001DB0F0BD74E00200882E0020834D0300C1 +:10666000B8FB0200A24D030078CD0200B74D030035 +:1066700010B5041C08201CF0EBFF024B44600360C3 +:1066800010BDC0469CD302000F22114008B5031C68 +:10669000081E03280ED813F0C1F90204090D181CB6 +:1066A0000BE00648002B08D1054806E0181C1DF039 +:1066B00021FB02E0181C1DF038FB08BD34CD0200A0 +:1066C00078CD0200F7B5002805D13A493A4A3B484F +:1066D00020F06FFA6BE00D68281CFBF7F1F94368B6 +:1066E000061CEF2B04D16D68281CFBF7E9F9061C8A +:1066F00000233349DA005058854203D18A182F48C5 +:1067000051680AE00133602BF3D12C4C2D4B201C37 +:106710009D4201D09E4203D12B4920F07EF946E0F4 +:106720002A4920F046FA281C0021FBF7FDF9201C1D +:106730002749726820F03DFA264B9E4203D1281C5F +:106740001EF01BFA0CE0244B9E4200D0351CA86BB7 +:1067500000282CD083072AD1204B02689A4226D1E8 +:106760001DF0CBF80025061EAE4220D073689D4276 +:106770001DD2B268EB00D3181F68002F15D05B68DC +:106780001749201C019320F014FA381C0021FBF754 +:10679000CBF91449201C20F00CFA01980021FBF7DA +:1067A000C3F9201C104920F004FA0135DEE70F4838 +:1067B000FEBDC046C7A40300C34D030010F0020095 +:1067C000D8D30200780303003A5203005652030064 +:1067D0005E52030028D902006CEB020064CE020076 +:1067E000CCA703006E5203003F4B030074E002008D +:1067F00038B5151C041C1DF038FC2A1C201C02494D +:106800001DF0E4FB38BDC0464D40020038B5437969 +:106810000D1C0024032B06D9836A074C9200E41A4E +:10682000C369D358E41803211DF010FC44702412EE +:106830000570847038BDC046FD7F0000F8B50023A8 +:10684000041C617183608371E260036101330F1C7A +:10685000151C4361032906D80121836949429A0026 +:10686000C06924F0E6FC0023A36223622A8C6B8CAF +:10687000D3180122002B00D01A1C364E201C311CCC +:106880001DF0A4FBAA8C201C311C1DF09FFBE368AB +:10689000201C197E1DF0D3FBE368201C997E1DF09F +:1068A000CEFBE368201C197F1DF0C9FBE368201CA8 +:1068B000997F1DF0C4FB042F07D1636A226A201C54 +:1068C0009A1A311C1DF082FB03E0201C02211DF0EE +:1068D000AAFB311C201C2A691DF078FB311C201CEE +:1068E000EA681DF073FB00262B8D9E420BDAEA6AE4 +:1068F000F300D3181A78032A03D19978201C1DF0CD +:10690000B4FB0136F0E7201CFF211DF0AEFB042F85 +:106910001FD10022698BAB8BC9188A4219D0002085 +:106920002E8DB0420CDAEF6AC300FB185F78FF07C8 +:1069300004D55F88974201D15B6802E00130F0E73F +:1069400002230626DB003343666B9000835101323D +:10695000E3E7F8BD2740020013B54379012B2FD0A0 +:106960008268041C002A03D01648174920F021F938 +:10697000201C00211DF063FB6379032B13D1226AD5 +:10698000D01C9843A36A20626062E362C0181CF0C6 +:1069900071FEE3682063588B9B8BC01880001CF04D +:1069A00069FE60630CE0042B0AD1E368616AE26A65 +:1069B0005218197E00915869216B636BFCF7A6F998 +:1069C00013BDC04610F00200D4730300224BF7B58C +:1069D000A0331B68022B3ED84469A1423BD9051C59 +:1069E000836A026901919E1A0C1B331C23432ED02B +:1069F0000096062C10D81F2E01D91F230093271EA6 +:106A0000032F00D90327281C01211DF00CFB009A3D +:106A10007B011343037016E00F2E01D90F2300935F +:106A20000E4B271E9F4200D91F1C0221281C1DF05F +:106A3000FAFA8023702200995B4219433B09134004 +:106A40000B4303704770009BE41BF61ACDE7AB6A5B +:106A50002B61019B6B61F7BD882E0020FF070000B2 +:106A600038B5041C0D1C01211DF0CFFA201C0F2D80 +:106A700005D0102D05D010210E2D06D102E01121D8 +:106A800000E012211DF0F1FA0DE017211DF0EDFAE2 +:106A90000322A36A201C03339343A36204211DF045 +:106AA000D5FA014B036038BDCCEF0200F8B5061CE7 +:106AB0000D1C141E124F11D1111C1DF0A6FA8023BB +:106AC0001B021D4203D0301C32211DF0CEFA2A1CBD +:106AD000301C3A403521FFF799FE0FE03A1C0A407E +:106AE0004621FFF793FE80231B021D406A1E95413D +:106AF000ED012C43E1B2301C1DF0B7FAF8BDC046E1 +:106B0000FF7FFFFFF7B52E4B2E48191CFC31CA6BD7 +:106B1000824254D9043ACA63191C1268A4310F681E +:106B2000501C84083E5D051C032425406D002E4149 +:106B3000811A34400130022CF3D0AC331B681201AF +:106B40009B180901019389080029DCD0019B1B686F +:106B50001A072FD11A48041CAC342468A34229D345 +:106B6000051CB0352D68AB4224D2051C1B1BDC175D +:106B7000240FE318A4351B112E689C0836191D1C20 +:106B8000032425406D00AC46377862463D1C154114 +:106B90002540012D0ED194403C433470061CFC3638 +:106BA000F46B094FBC4203D2201DF063236001E067 +:106BB000B4300560019B013904330193C4E7F7BD8C +:106BC000882E0020402F0020C02F00200F23994343 +:106BD00070B5061C0D1C081A412112F03DFF104C27 +:106BE000021C231CA8331860231C211CA4331E6024 +:106BF0008301EB1AAC310B60231C301CB033002135 +:106C00001D6024F016FB221C0023FC325364221C5E +:106C1000FE32D38701223F33FF33E25270BDC046BC +:106C2000882E0020024BFE33DA8F0132DA8770475C +:106C3000882E0020024BFE33DA8F013ADA87704744 +:106C4000882E0020034BFE33D88F431E9841C0B2DC +:106C50007047C046882E0020F7B5002400900191AF +:106C6000019B9C4238D0009AA300D3581A072FD119 +:106C70001A4A111CAC3109688B4229D3101CB03060 +:106C80000068834224D2101C5B1AD917090FCB1855 +:106C9000A4301B11066899087618181C03210840B7 +:106CA0004000844637786546381C28410840012852 +:106CB0000ED1A94039433170161CFC36F16B084FD8 +:106CC000B94203D20A1DF2630B6001E0B4321060D6 +:106CD000FFF718FF0134C3E7F7BDC046882E002038 +:106CE000C02F002008B5FFF79DFF06480022031CB7 +:106CF000B4331A60031C044AFC332621DA63FFF71D +:106D0000ABFF08BD882E0020402F0020F8B52C4C8A +:106D10000025221CB4321368AB4221D0231C15601D +:106D2000284AFC33DA63231CA8331B689B009D426E +:106D3000EDD2221CA4321268AB08D15C03232A1CBA +:106D40001A40520011410B40032B07D1221CFC3288 +:106D5000D36B191DD1631D60FFF7D4FE0135E2E747 +:106D60001E1C221CA83212689200934221D2211CC0 +:106D7000A43109689A088A18032011781F1C0D1C79 +:106D800007407F003D410540022D05D0854209D0D6 +:106D9000012D0CD12E1C01E0002E08D0B8408143FB +:106DA000117004E00220B8400026814311700133C5 +:106DB000D7E70023FC346364FFF73CFFF8BDC0460F +:106DC000882E0020402F0020274AF0B5131C111CEC +:106DD000B033AC3109681B685B1A111C03600023D7 +:106DE000A8310C68191CA432156843608360C36025 +:106DF00003614361A400A1422FD08A08AE5C032244 +:106E000094460A405700321C66463A413240012AF5 +:106E100012D8012B03D1C6680136C66004E0022BEC +:106E200002D10669013606614669B34200D9436161 +:106E3000012A0CD0002A06D0022A0CD14268013364 +:106E40000132426007E083680133836002E04368F7 +:106E500001334360131C0131CDE743681B014360DC +:106E600083681B018360F0BD882E0020F7B5404D7C +:106E70000F302B1CFE33DC8F0609002C01D00020C4 +:106E800075E0002EFBD09F235B00E95A4B4259412D +:106E90002B1CFC335A6C2B1CA8331B6801932B1C36 +:106EA000A4331868019B9A4228D2835C9F0704D1BF +:106EB0000134B44202D3920026E000240C273B4266 +:106EC00005D10134B44203D3920001321CE0002406 +:106ED00030273B4205D10134B44203D39200023241 +:106EE00012E000243F27BB4305D10134B44203D351 +:106EF0009200033208E000240132D3E70029BED11A +:106F000002F0ECF90121C3E7131B591C012C04D139 +:106F10002E1C541CFC36A40874648C08001903242D +:106F200001260C406400A640341C0678023334432A +:106F3000047093420FD82C1CA43424689808241899 +:106F400003200226184040008640301C267801337A +:106F500030432070EDE7AC352C680B010132E418AA +:106F6000521A1201201C002124F063F9201CFEBDDE +:106F7000882E0020224B70B51A1CFE32D28F002AB8 +:106F80003DD102073BD11A1CAC321268904236D375 +:106F9000191CB0310968884231D2801AC217120F09 +:106FA00010181A1CA432001112688108555C041CC8 +:106FB00003221440640025412A40012A1FD11A1CD3 +:106FC000FC32546CA14200D251641D1CA4352A68C5 +:106FD000840814190322011C161C114049008E401C +:106FE000311C267801308E4326702C688108645C41 +:106FF000011C114049000C412240022AE5D070BD1D +:10700000882E0020031C0F2070B518402AD1164A84 +:10701000111CAC3109688B4225D3141CB034246890 +:10702000A34220D25B1AD917090FCB18A4321B1127 +:1070300015689A08AC5C191C0322114049000C41E8 +:107040002240012A0FD15A1C91086E5C141C0321A6 +:107050000C4064002641D01A314001320229F3D09D +:10706000000100E0002070BD882E0020F0B55B4FCD +:10707000051C3B1C0020FE33DB8F85B0834200D013 +:10708000A9E001920E1C854204D1081C291CFFF7BF +:10709000EDFEA0E0002900D199E00F22181C2A4043 +:1070A00000D098E03B1CAC331B68101C9D4200D202 +:1070B00091E0391CB03109688D4200D38BE0EB1AA6 +:1070C000D917090FC9183B1CA4331B680911009379 +:1070D00000988B08C35C0324081C20404000034137 +:1070E000101C1C40012C76D1331C9446A8373868FC +:1070F0000F3380001B0902904F1C029A97421AD24C +:107100000098BA08825C381C039203221040039A4C +:1071100040000241101C03221040022801D101341A +:1071200007E0002807D101229444624612199A42CE +:1071300001D20137E1E7A3423AD01AD2CB181E1C84 +:107140000C192649A6420DD0A4310F68B208BF1809 +:107150000320321C0240520090403A7801368243AC +:107160003A70EEE7FC314A6C9B08934220D24B64A4 +:107170001EE06246A21893421CD86218C8188242C8 +:107180000FD216489608A4300068022786190320FB +:10719000104040008740381C377801323843307047 +:1071A000ECE71A1B240112012819002124F041F8F0 +:1071B000281C10E0019800280DD0301C0021FFF79A +:1071C00055FE061E07D02201291C24F015F8281CA4 +:1071D000FFF7D0FE301C05B0F0BDC046882E002061 +:1071E00010B58AB004A8FFF7EFFD069B094C039386 +:1071F0000093049A059B201C07491FF0DAFC099BA9 +:10720000201C039300930549079A089B1FF0D1FCAB +:107210000AB010BD10F002000074030023740300D4 +:10722000F8B53F4D3F4E2B1CAC33301C3E491A681D +:107230001FF0BFFC00242B1CA8331B689B009C4242 +:1072400024D2A20632D12A1CA4321268271C9446EA +:107250006146BA08895C03203A1C02405200114181 +:10726000014202D101379F42F2D33A1B7F2A12D941 +:107270009209301C2D491FF09CFC3C1C3F239C4371 +:107280002B1CA8331B689B009C4204D3301C28494C +:107290001FF0C3FBF8BD2A1CAC3212682301D218C0 +:1072A0001203120B301C23491FF083FC2A1CA4324A +:1072B0001268A308D15C0322231C13405B00194110 +:1072C0000B1C13407132022B23D0073A032B20D022 +:1072D0002E22012B1DD12B1CAC331B682201D3584D +:1072E000154954228B4214D01449083A8B4210D0CD +:1072F0001349083A8B420CD0124902328B4208D013 +:107300001149043A8B4204D010490B328B4200D011 +:107310001B32301C0E491FF04CFC01348BE7C04679 +:10732000882E002010F002005774030072740300CE +:107330003F4B03008E740300BCDC02009CC60200BD +:1073400064CE02000CD00200C0D8020028D902008E +:1073500093410300F0B593B0061C06A80F1C141C43 +:10736000F8F73EFF051E23D13368311C012603A820 +:107370003A1C0193FAF70CF8A3082A1C3340019930 +:1073800003A808F017FF051C03200CF069FD281C5A +:107390001DF0F1FA012040420CF062FDF8F736FFD3 +:1073A000344203D01348311C0CF08EFD012518E047 +:1073B000012040420CF054FD01210C4202D00D4846 +:1073C0000CF082FD0798FAF77BFB0B4904F092FB67 +:1073D000051E04D109480799FAF7B0FB01E08025A2 +:1073E0006D0001210C4202D002480CF06DFD281CFA +:1073F00013B0F0BDBE74030030F9020010F00200BB +:107400001FB5202168461BF08AFB254821F055FA5C +:1074100068461BF0B9FB234821F04FFA0CF03CFD05 +:107420000128F2D002280AD11F4821F046FA684606 +:107430001BF09FFB01221D4B00201A702DE003283A +:1074400003D168461BF0A0FBE8E7042804D0C1B2D2 +:1074500068461BF0F1FBE1E7154821F02EFA019A8E +:10746000002A08D1104821F028FA68461BF081FB59 +:107470008020400011E09620029940000023FBF795 +:10748000E1FC002803D10B481AF092FAC0E7012171 +:107490000A1CFFF75FFFC305BAD505B000BDC046A3 +:1074A00096740300C18303003E4B030006010020D5 +:1074B00029480300B174030030B587B002A8202129 +:1074C0001BF02DFB444821F0F8F9444821F0F5F970 +:1074D00002A81BF059FB02A841491BF0ABFF012891 +:1074E00009D1404821F0E9F902A81BF042FB002035 +:1074F0003D4B18706EE0022803D13A4821F0DDF9C7 +:10750000E0E703281AD0042808D1364821F0D5F93D +:1075100002A81BF02EFB802040005BE0052825D14F +:10752000324821F0CAF902A81BF02EFB0CF0B4FC83 +:107530006B46C1B2DC1D2170032901D12948C5E782 +:10754000042904D1274821F0B8F9012427E002A832 +:107550001BF072FB23780D2B03D1254821F0ADF9E8 +:10756000E4E7201C01210CF0AFFCDFE702A81BF0D0 +:107570001EFB0028ACD002A81BF04BFB09F0B6FCA8 +:1075800000280BD002A80A211BF056FB02A81949BB +:107590001BF050FF0328D1D00428ECD1002402A80E +:1075A0001BF0FEFA051C02A81BF001FB021C962032 +:1075B000291C40000023FBF745FC002803D10E489E +:1075C0001AF0C8FA84E7211C0622FFF7C3FEC305A0 +:1075D00000D47DE707B030BDC0740300057503001B +:1075E0002B7503003E4B030006010020307503009D +:1075F00060750300677503009828030038B50523FC +:10760000041C094A094D1068434309481B199B0093 +:1076100018582B68146018180F23194009012860A6 +:1076200003F016FB38BDC046680100206001002051 +:1076300048D70200A839031C00B5081E06282ED81A +:1076400012F0ECF9040A10151B2027009A18E22307 +:10765000DB00D218107826E0C4329200D05C80069D +:10766000800E20E0C4329200D05AC00403E0C4323D +:107670009200D0580003400E15E0C43292009A18D0 +:1076800090780AE0C43292009A18D0780007000F70 +:1076900009E0C43292009A18D078000903E0002073 +:1076A000014A024B1A6000BD597D0300040000200E +:1076B000A83910B5041C081E062846D812F0AEF9E9 +:1076C000040A131E29333B00E221A218C9005218F4 +:1076D00013703DE03F20C4329200115D03408143AE +:1076E0000B43135534E07F21C43292000B409901C3 +:1076F000105B184B03400B43135329E07F21C43226 +:1077000092000B40105914495B0301400B43135185 +:107710001EE00F21C4329200A21890781B01014094 +:107720000B43937014E00F20C4329200A218D1785A +:107730000340814306E00F21C4329200A218D078A2 +:107740001B0101400B43D37002E0044A044B1A6052 +:1077500010BDC0463FE0FFFFFF1FF0FF647D030048 +:1077600004000020F0B585B003930723D2B2134084 +:10777000013BDBB20F1C042B02D92B4C2B490C60B4 +:107780002B49CE5C07211B028A43019308D1294B68 +:10779000C55C2D09ED43EBB23D7800932C1C1FE036 +:1077A000D443E4B20825244B019A1B199B5C5F006B +:1077B000FFB2DB0904D002200521FFF71FFF05E01F +:1077C0000120311CFFF71AFF002EF4D0013DEDB26D +:1077D0003B1C002DEBD10134E4B2002CE2D120E0BF +:1077E0000826154B019A1B199B5C5A00D2B20292D3 +:1077F000DB0902D003201A2101E004200621013E0A +:10780000F6B2FFF7FBFE029B002EEED1009B013487 +:10781000E4B25B1B1B19DBB2002BE1D1009BED1A1C +:107820003D70039805B0F0BD707D0300040000209A +:107830008380030019070000927503000022F0B551 +:10784000051CFF248BB008AB0191DA71231CC433F3 +:107850009B00EB189978604E0A09B05C0F2200017A +:10786000114001439970D9780807000F375C9143A4 +:10787000174039430809305C0A4000010243DA70BE +:10788000013CE3D2E223DB00EE5CB308F31ADBB287 +:107890000693524B1B68002B0BD081231B01E81869 +:1078A000C4239B00E918E223DB00EA18019BFEF7E2 +:1078B00033F800244823271C049303940294812264 +:1078C0002B1912019B181B7805930723059A9A43DD +:1078D00007920BD008ABD91D281C231C059AFFF773 +:1078E00041FF019B0230C4B2023B32E03C48029BA4 +:1078F000C35C9C46231C6246C4339B00EB189978FA +:10790000DB7809091143374A515C039A805C1A07F6 +:10791000120F1043334A1B09105C40183249C95DED +:107920000B43D15C01234118FF2801DC6B461B7F10 +:10793000C9187839C9B209090020FFF75FFE049B16 +:10794000013BDBB20493002B0AD1019B0134E4B26A +:10795000013BDBB20193019B002B3BD02B780493BE +:10796000013EF6B2002E0CD1E22200272B19D200E4 +:107970009B181E780397B308F31ADBB2069302979D +:107980009DE7069B013BDBB20693002B02D1059BD2 +:10799000002B16D1221CC4329200535D02999B0623 +:1079A0009B0ECB18DBB20293535B0399DB045B0E97 +:1079B000CB18DBB2039353591B035B0EFB18DFB2EA +:1079C0007DE708ABD91D281C231C059AFFF7CAFECA +:1079D000041CC9E70BB0F0BDDE7D03006C01002084 +:1079E000BF800300E27A03003F7E0300064A125C78 +:1079F000002A05D0054A135C4B43D811C0B201E000 +:107A0000034A105C7047C046DF7F03008880030094 +:107A1000927A0300064A125C002A05D0054A135CDC +:107A20004B43D811C0B201E0034A105C7047C04616 +:107A3000DF7F0300827C030033800300F0B5037A0C +:107A40008BB07F2B00D14DE1031C071C0025041CCB +:107A50000933FF330837099300953E787F2E03D111 +:107A6000002302930093DEE0012E02D1201C311C82 +:107A700003E0022E05D1201CFF21009A2B1C1CF0D4 +:107A80000EFF994ABB78301CD3185B780093FB78C3 +:107A90000193A178FFF7AAFF3F2318400290E178F5 +:107AA000301CFFF7B7FF7F23904A1840925D039088 +:107AB0001A408F4B04929A5D0F231A4005928D4A0B +:107AC000925D1A4006928C4A925D1A408B4B079247 +:107AD0009B5D08937B78EB18DBB29C462A1C3F2108 +:107AE000C4329200135D8B4302990B431355105B14 +:107AF000039B83499B01014019431153049B105977 +:107B00005903804B18400B1C03430F201351059958 +:107B10001E0C06400901A21831431B0E069E9170EF +:107B2000834307993343090118400843D0706946DD +:107B30002020812209186319097812019A181170FE +:107B4000E222D2009B180199009A01355218EDB239 +:107B50001A706545C2D1099B04379F4200D07CE76B +:107B60007EE76949CD5C8E5C6849AE4264D18D5C2C +:107B7000CB5C0493039B597A009B5918CBB20093BA +:107B8000049B5B19DBB20693023B1B0647D4A82675 +:107B9000009B5D1BEBB20593A82E55D1039B311CB6 +:107BA0005F7A5A7B7F085208D3190193009B201CEF +:107BB0009A18D2B2DF1BFFF73DFDFFB2051C311C46 +:107BC000201C3A1CFFF736FD2D1AEDB27F232A1C2C +:107BD0006DB29A43EB17E81858400199079212F0DA +:107BE000B1F8281CCBB20199089311F0C5FF00250C +:107BF000C3B2059F09933A1C311C201CFFF71AFDE4 +:107C0000019A0599099B01375218C318FFB2D2B2E5 +:107C1000DBB2BA422BD10136F6B2AF2EBCD1029BF9 +:107C20000133DBB20293029B9B00E31803931A7AA1 +:107C30001B7B7F2B95D133E03548AE4201D2C55C2A +:107C400096E78D5C835C94E7049B009A311C9A183C +:107C5000D2B2201CFFF7EEFC311C051C059A201C3B +:107C6000FFF7E8FC069B2D1AEDB20193AEE7089AE8 +:107C7000AD18019AEDB295420CD3AD1A6A46127F47 +:107C8000EDB252B2002A03DB002B03D0013300E037 +:107C9000013BDBB2201C311C3A1CFFF709FDAAE7AF +:107CA000029B02339B00E3185978009B59186368C4 +:107CB000C9B2002B03D0201CFFF7C0FD12E0E22266 +:107CC000D200A0181A1CC4329200125D05789206E8 +:107CD000D20EAA1A02708022013301305200934260 +:107CE000F0D1E8E70BB0F0BDD37D0300E27B0300E9 +:107CF0003F7F0300837D0300327C0300EF7D0300A0 +:107D00003FE0FFFFFF1FF0FFB97C0300097D030088 +:107D10008F7F03000D4B73B530CB161C012804D99F +:107D20004D682C1C022800D08C68086801A904F05A +:107D300033FD011C2C20019A0023FF30FBF782F851 +:107D4000311C2A1C231C00F077FF76BD882E0020F2 +:107D500070B5F8F7C7FA0B4C0026231CA0331E6041 +:107D6000266301F089F9084D0121281CFCF7B2F9BE +:107D7000281C6E215E221BF0ADFD656025606664E7 +:107D800070BDC046882E0020BC2E002070B5062491 +:107D9000134EC3001C4373680022051C211C181DD0 +:107DA000FCF77EFE021E18D1706C002807D004304C +:107DB000211CFCF775FE002801D040680EE000226F +:107DC0000848211CFCF76CFE021E06D106492A1C3D +:107DD000064809F0D9FAF8F71EFA506870BDC04697 +:107DE000882E00205CF70200BF810300FCF902002E +:107DF0000A4B10B5041C18685B6898420AD006212B +:107E0000E300043019430022FCF74AFE002801D0A9 +:107E1000406802E0201CFFF7B9FF10BD882E00204B +:107E200008B5074B586C002801D1064807E004301C +:107E300026210022FCF734FE0028F6D0406808BD59 +:107E4000882E002080F402000A1C062108B5034B8E +:107E5000C000014318681BF03DFD08BD882E0020BE +:107E6000062108B5034BC000014318681BF03CFD18 +:107E700008BDC046882E00200A1C062108B5034B09 +:107E8000C000014358681BF025FD08BD882E002066 +:107E9000062108B5034BC000014358681BF024FDC0 +:107EA00008BDC046882E002038B5051C0C1C0628CD +:107EB00006D1081CFAF72EF800284CD028484DE0CF +:107EC0000123194217D04810042D06D0052D0FD0DC +:107ED000002D42D10028F1D03DE0C0221206904290 +:107EE00004D18020C0051BF005FF37E0404200E0D0 +:107EF000C043400013E0022813D11A4B0B40062B5D +:107F000008D08B070DD10B689A69174B9A4208D19C +:107F1000486802E0C8081AF0A8FD01234000184391 +:107F20001CE0201CF9F7CCFD4369002B0DD10F4B51 +:107F3000AD00201CED581BF04EFA0D49031C2A1C05 +:107F40000C4809F021FAF8F766F9281C211C98471B +:107F5000002803D1EBE7084800E0081C38BDC04604 +:107F600078CD0200070080FF79CD0000F0EC020020 +:107F7000D881030000FD020034CD0200F8B5041CD6 +:107F80001D1C0F1C161CF9F79BFD0369201C9C4649 +:107F9000002B08D11BF01FFA0549021C054809F007 +:107FA000F3F9F8F738F9391C321C2B1CE047F8BDFF +:107FB000F681030000FD0200F8B5061C0D1C171C1D +:107FC0001C1C00290BD01868F9F77AFD73689842D9 +:107FD00005D0064906481FF092FFF8F71CF9B06873 +:107FE000291C3A1C231CFFF7C9FFF8BD12820300AD +:107FF00000FD0200F8B5061C0F1C141C1D1C930785 +:1080000014D11368174A934202D163682B6028E0A9 +:10801000154A934207D1002802D0F9F751FD071CF9 +:10802000636888C51DE0114A934201D12C6018E0B5 +:108030005B681A1CF23A012A01D9F02BF6D1002E06 +:108040000ED1201CF9F73CFD094B984208D10C20B9 +:108050001BF0FEFA074B476003608460286000E075 +:1080600050C5F8BDA8EC02006CEC02006CEB0200FD +:1080700084D8020000D80200F8B5002313605360D2 +:10808000071C0C1C151CF9F71BFD061C102C05D138 +:10809000836A002B02D00F4B88C519E0F369002BCF +:1080A00004D0381C211C2A1C984711E0B06B002812 +:1080B0000ED00621E4001A1C04302143FCF7F0FC2A +:1080C000031E05D05A68381C311C2B1CFFF792FF89 +:1080D000F8BDC0464CF7020070B5161C041C0D1C00 +:1080E000FFF7CAFF3368002B15D10B4EA30707D14A +:1080F0000A4B22689A4203D1301C0949626805E0A4 +:10810000201C1BF068F9021C301C06492B1C09F0CE +:108110003BF9F8F780F870BD34FB02006CEB02000D +:108120002A8203005182030073B5041C0D1C161C27 +:10813000F9F7C6FCC369002B09D00422019600920E +:10814000201C291C6A469847009B002B0AD0201C43 +:108150001BF041F90449021C2B1C044809F014F9D6 +:10816000F8F759F873BDC0465182030034FB020092 +:1081700013B5041CF9F7A4FC436A002B0BD1201C97 +:108180001A216A46FFF778FF009B002B08D068464B +:10819000FDF716FF0EE0201C984700280AD1EEE7F5 +:1081A000201C1BF018F90449021C044809F0ECF8E3 +:1081B000F8F731F816BDC0467382030000FD0200D7 +:1081C00037B5041CF9F77CFC856A201C002D01D012 +:1081D000A84716E010216A46FFF74EFF009B002BD0 +:1081E00005D0281C291C6A461CF0D4FB09E0201C81 +:1081F0001BF0F1F80349021C034809F0C5F8F8F731 +:108200000AF83EBD8F82030000FD020030B5051C58 +:108210008FB0FBF72DFB281CF9F752FC846A281C51 +:10822000002C01D0A04728E010216A46FFF724FF68 +:10823000009B002B17D002A8F7F7D2FF011E07D131 +:108240006A461CF0A7FB041CF7F7E0FF201C14E0B3 +:10825000039B0B49186803F04DFC031C201C002BEA +:108260000BD1039807E0281C1BF0B5F80549021C48 +:10827000054809F089F8F7F7CEFF0FB030BDC046CA +:10828000BCFA02008F82030000FD0200F0B585B049 +:1082900002900E1C171C202802D1914214D1A1E19A +:1082A000029B1B2B01D01E2B10D1301C391CF9F75F +:1082B0009FFC002803D0029B1B2B05D192E1029B5F +:1082C000BA481B2B00D099E1B94897E1029B212BBA +:1082D0002AD1101C09F0A0F8002807D0301C391C46 +:1082E0001FF017FE002800D07CE1EDE703243C409E +:1082F00000D042E1AF4B3A689A4200D03DE17B6842 +:108300009C42E1D2A300FB189D68281C09F084F868 +:10831000002800D130E1301C291C1FF0FAFD002894 +:1083200000D05FE10134EAE70123194200D1EAE01D +:108330004D101A4200D1DEE0029B54101D2B00D9D3 +:108340001BE1181C11F07EFB1E00200023002600FC +:1083500038003F00410043004E0056006B0074009F +:10836000A3001E0020002300260038003F0041002B +:1083700043004E0056006B007400BC00C0001901A1 +:10838000C400C800254300E065402E1CA8E02C4036 +:10839000261CA5E0002C02DA8748884902E11F2C40 +:1083A0006FDC874B23419D426BDCC0231B062341BE +:1083B0009D4266DBA540E8E7002CEDDB1F2C00DDCD +:1083C0001F242541E1E72E198AE02E1B88E0281C96 +:1083D000211C00F085FC002853D101206C4364006F +:1083E00020430BE1002C00D1DAE0281C211C1CF0FA +:1083F0001BFB1BE0002C00D1D2E0281C12F01AFC61 +:10840000051C201C12F016FC011C281C11F050FF4A +:108410000323022598436B4B2843C018EEE0002C41 +:1084200000D1BDE0281C211C1CF0EEFA061C57E010 +:10843000002C02DB0395012617E0281C12F0FAFB42 +:108440000323022698435F4B0643F61889E0E307AF +:108450000ED4012C44D003986410011C00F040FCA1 +:1084600000280ED1039B5B430393002CEFD137E030 +:10847000301C039900F034FC002802D1039B5E43BA +:10848000E7E7E917281C1BF026FC061C69E0002C16 +:1084900000D185E00021022001F014FC211C061C03 +:1084A000281C1CF0C1FA012740003843B060211C91 +:1084B000281C1CF0A9FAB8403843F060301C9DE03D +:1084C000A54200DB00E78DE0A54200DCFCE689E088 +:1084D000A54200DDF8E685E0A54200DAF4E681E099 +:1084E00073001A1C724002D40120184386E0301C2D +:1084F0001BF000FC82E003231340022B03D1324B1C +:108500001340062B70D1029B1F2B2AD1381CF9F780 +:10851000D7FA8369051C002B07D16B6A002B16D094 +:10852000381CFFF725FE041C0BE00298391C321C96 +:108530009847002862D1F0E7311CF9F759FB002871 +:1085400050D1201CFFF762FE0028F5D1BCE6381C94 +:108550001AF041FF1D49021C1D4808F015FFF7F7EE +:108560005AFE301CF9F7ACFA8369002B05D002984B +:10857000311C3A1C98473FE02F1C029B301C9A008C +:10858000144BD5581AF027FF041C381C1AF023FF8F +:10859000114900902A1C231C0D4808F0F5FEDEE767 +:1085A0000E480F491FF0ABFCD9E7C04634CD02009E +:1085B00078CD0200BCDC020010F80200BD4A0300C6 +:1085C000FFFFFF3F00008080070080FF73820300F1 +:1085D00000FD0200A8EB0200AE8203006CFC02006A +:1085E0004D4A0300064809E0281C12F023FB3A1C00 +:1085F000011C0298FCF788F90028BED005B0F0BD38 +:1086000034CD0200F0B513688DB00693002803D175 +:10861000131D0393041C03E0131C546808330393D5 +:10862000FF220B1C13400193090A1140019A4B00D1 +:1086300005939B18039A9B00D558D3185F68049143 +:10864000381E09D00020BB0706D17F4B3A689A42FA +:1086500002D1381C1BF03BF9049BC618002D16D123 +:10866000019B760001339B19980000931AF0F0FFEC +:10867000251C061C002C01D001250460019BA800CC +:108680009A003018039922F0B7FD019B30E0AB0748 +:1086900031D12B686D4A934202D06D4A93422AD160 +:1086A000281C09A90AAAF9F797FB099B019A01332B +:1086B0009B1876009B19980000931AF0C9FF251C9F +:1086C000061C002C01D001250460019BA8009A0023 +:1086D0000399301822F090FD019B0A99E818099B34 +:1086E00080009A00301822F087FD019B099A9B18A0 +:1086F0005B19029338E0019B7600181D83199800DE +:1087000000931AF0A5FF0294061C002C02D001234E +:1087100004600293029B03999800019B30189A0011 +:1087200022F06AFD019A029B9446281C634402933E +:10873000FFF71EFD029B07909C000798FFF766FD60 +:10874000051E11D0029B009A934207D3301CD10022 +:108750001AF094FF061C009B5B000093029B3551AE +:10876000013302930434E8E7029B9800049B30181D +:10877000DA00019B9900039B591822F03DFD029AF3 +:10878000059B944663441C1C002F4ED00325381CC7 +:108790003D4019D12C4B3A689A4215D11BF0ADF8E7 +:1087A00041688D4241D08368EA009F58002F09D06C +:1087B000042F07D0A300F7508768F318BA1852683F +:1087C00002345A600135ECE7C5210AAAFFF784FCA0 +:1087D00000200AAA011C1CF0DDF8FFF7C9FCA50067 +:1087E00001900198FFF712FD071E1ED0009A631C2E +:1087F00093420BD353000093032B01D8042300931F +:10880000009B301C99001AF039FF061C09AA381C7D +:108810000221F9F703FB099B02341B687351099B82 +:108820005A6873195A600835DBE7029B0698E21A0A +:10883000191C5208331CFFF7A1FB041C301C1AF052 +:108840002EFF201C0DB0F0BD64CE0200BCDC020087 +:108850009CC6020073B50C1C161C83071FD103684D +:10886000224A934207D0224A934218D1694601AA6C +:108870001AF05DFB03E0694601AA1CF07DFB009B3A +:10888000A34227D32AD80023019DA000A3422CD0C5 +:108890009900421A043AAA5801337250F6E7FFF7DA +:1088A00067FC0023051C0093009B281CA3420CD2EC +:1088B000FFF7ACFC00280DD0009A0E49A31A5B18F4 +:1088C0009B00013298510092EEE7FFF79FFC0028D1 +:1088D0000BD003E008480949009A02E0221C064830 +:1088E000074908F051FDF7F796FC73BDBCDC0200A8 +:1088F0009CC60200FFFFFF3F10F80200D382030076 +:10890000F6820300F7B5141C0A0AFF230E1C151C7F +:108910001E401D4083073CD107683E4B9F4203D059 +:108920003D4B9F4235D104E0694601AA1CF024FB6F +:1089300009E0FF231143194201D1206068E0694634 +:1089400001AA1AF0F4FA009BAA19934259D39A008B +:108950009446002001998200A84206D06746BF1ABB +:10896000043FCF590130A750F5E79B1BB500181AFB +:108970004919A4181AF0C3FA019B20605D1900235D +:1089800001360133B34243D09A0051426958A15095 +:10899000F7E7FFF7EDFB0023071C0093009BB342B2 +:1089A0000CD2381CFFF732FC00282AD0009AB31AE8 +:1089B0005B199B00013218510092EFE70020011C67 +:1089C0001AF09DFA061C381CFFF720FC011E03D08C +:1089D000301CF8F74FF9F6E7B168A94211D3AB00A4 +:1089E000E3181E6088009C4206D0C21AF768A218DD +:1089F000D259043B1A60F6E7491B301C1AF09CFA66 +:108A000006E00649009A064808F0BEFCF7F703FCAA +:108A1000F7BDC046BCDC02009CC60200D382030046 +:108A200010F80200F0B587B01D1C061C0C1C01924A +:108A3000F9F746F82F4B984206D1301C211C019AB9 +:108A40002B1CFCF7F9FF53E0876A2B4B002F07D054 +:108A50009C4220D1301CB8472860002816D147E03E +:108A60009C4218D1301C102103AAFFF705FB039B81 +:108A7000002B0DD1301CCD2103AAFFF72DFB0120C7 +:108A80000021059403AA1BF085FF286001202FE038 +:108A9000381C391CF6E7002CECD1019B201C002B64 +:108AA00026D0181CF9F70CF8144903F023F8002815 +:108AB0000FD0301CCC2103AAFFF7DEFA039B002B5A +:108AC00007D0201C211C03AA1BF064FF2860201C77 +:108AD0000EE0301CCE2103AAFFF7CEFA039B002B39 +:108AE00003D00120002101AACDE70220019B2B60C9 +:108AF00007B0F0BD20D2020074E00200B4FD020015 +:108B000010B5041C08F088FC002806D00021201CA9 +:108B10000A1C0B1CFFF732FA0AE0201C1FF0F3F9C5 +:108B2000031C201C002B03D1024803491FF0E7F966 +:108B300010BDC04600FD02001E8303007FB5062362 +:108B4000C0001843054B01900491052001A9029330 +:108B500003930592FDF72AFC07B000BD74E0020004 +:108B60000C23F0B58BB000AFFA18051C0C1CFFF7F6 +:108B700083FA3B69002B06D02B49221C2B4808F0B6 +:108B800003FCF7F748FBF86800284AD1281C1BF0C3 +:108B90000FFA0028F0D00C23281CFA180D21FFF73B +:108BA0006BFA0823F868F91803F0F6FD3860201C0A +:108BB000BD6819F05FFF6A4601352B187B600E33E4 +:108BC000DB08DB00D31A9D46BD6839682A1C68465D +:108BD00022F012FB6E462E23201C735519F04FFF16 +:108BE0003860201C19F046FF01357519021C3968E0 +:108BF000281C22F001FB79686846F7F7B5FB0623CD +:108C0000C00018430A4B0822BB61FB61094BBA182C +:108C10003B6201237B620B337861D1180520FDF79D +:108C2000C5FBBD460BB0F0BD48830300B8FB020096 +:108C300074E0020034CD0200F0B5174C0F1C6168DF +:108C400095B003912168061C08A804916260236016 +:108C5000F7F7C6FA051E06D0039B09986360049BCC +:108C60002360F7F7D8FA336805A8311C3A1C019342 +:108C7000F8F78EFB2A1C2B1C019905A807F09AFA1D +:108C80001BF079FE051CF7F7C1FA281C039B6360F3 +:108C9000049B236015B0F0BD882E002010B5041C85 +:108CA000FDF7D0FF031E064803D006491FF027F941 +:108CB00003E00549221C08F067FBF7F7ACFAC04651 +:108CC00090F802005E83030087830300011C08B54F +:108CD00002481FF014F9F7F79EFAC046A8FC0200FC +:108CE00070B5061C0D1C002811DD002906DD154895 +:108CF00010F042FF0124864213DC11E0C020311C39 +:108D0000000610F039FF012485420ADB08E0002943 +:108D100009DDC020000610F02FFF0124864200DB91 +:108D20000024E4B20BE00024A04208D00548311C26 +:108D300010F022FF0123854200DB231CDCB2201C43 +:108D400070BDC046FFFFFF3FF0B5051C89B002AF04 +:108D50000E1CBA603B60FAF78BFDAB687B61142395 +:108D6000F8181CF03BFB14237860F8181CF036FB55 +:108D7000032358437B68C0188300FB602C2B0AD860 +:108D80006B46F8682A30C008C0001B1A9D460023B5 +:108D900002ACFB6005E0F8681C301AF066FC041EAB +:108DA000EED0AA687B69201C9B1A63607B68321C2A +:108DB000A3613B68291C0093BB6801F07DFF184E3E +:108DC000201C7368002163616B68736008F098FB76 +:108DD0006369B8607360002802D0022803D00BE0FA +:108DE000E3681D6809E07B6805339B00E3185D6854 +:108DF000FB68002B0CD005E00A4DFB68002B0AD065 +:108E00000023BB60201C1AF04AFCBB68002B02D078 +:108E1000281CF7F700FA281CBD4607B0F0BDC04675 +:108E2000882E002074E002000122031C30B513409C +:108E300085B04510002B4ED128491D1C88424AD0D0 +:108E4000274B984247D0274B151C984243D0032309 +:108E5000041C034006D1244A0168914202D11AF051 +:108E600086FF0EE0214A251C2240062A05D0002B51 +:108E700009D11F4B22689A4205D1201C01A903F099 +:108E80008BFC051C27E0201CF8F71AFE194B9842B2 +:108E900007D1FF23DB05E0180323984311F0AAFE56 +:108EA000EFE7154B984205D1201C694601AA1CF03A +:108EB00063F80FE0114B984205D1201C694601AAC6 +:108EC0001AF035F806E0201C01A902221AF099FADE +:108ED000002800D0019D281C05B030BD74E00200C0 +:108EE00078CD020034CD020030D30200070080FFAD +:108EF00080CA02000CD00200BCDC02009CC602004A +:108F0000F0B585B0051C0E1C029203931F4F00287C +:108F100004D043680193002903D125E0002903D040 +:108F20000190019B581C01E0081C01910430800055 +:108F30001AF08EFB164B041C03607B684360029B97 +:108F40008360039BC360002D07D0291C201C019B5C +:108F500008319A00103022F04FF9002E13D0019BF7 +:108F600004339B001E510EE0019B181D80001AF077 +:108F70006FFB074B041C03607B684360029B8360AC +:108F8000039BC360E1E7201C05B0F0BD882E0020E4 +:108F9000C0D8020070B5061C10200D1C141C1AF05D +:108FA00057FB034B466085600360C46070BDC046DC +:108FB00048D8020008B50B1C02495A681DF0F9FD9B +:108FC00008BDC046B583030070B5151C12680C1CA3 +:108FD0008368002A09D1CC000621181D2143FBF724 +:108FE0005FFD00281ED043681BE01A79181C920709 +:108FF0000BD50D4A934215D10C4E736C002B03D147 +:1090000001201AF02EFC7064706C06216A68E4007E +:109010002143002A02D11AF067FC01E01AF05AFC41 +:1090200000232B6070BDC04658F70200882E002038 +:10903000F8B50625C3001D43071C291C0C48012256 +:10904000FBF72EFD061C4068002810D10C301AF0EA +:10905000FFFA084B041C0360476001201AF001FC72 +:109060006E21A0602A1C1AF035FC201C7460F8BD2B +:10907000AC2E002028D9020008B502480321FBF7D6 +:1090800029F808BDA82E002010B50C1C0621C00030 +:10909000014301220248FBF703FD446010BDC046B6 +:1090A000AC2E002073B50625C3001D43061C291CE9 +:1090B0000F480022FBF7F4FC041E17D1221C0D48B8 +:1090C000291CFBF7EDFC041E11D0606808216A46DC +:1090D000FEF7D2FF009B002B08D000206A46011C3F +:1090E0001BF058FC301C6168FFF7CEFF606876BD4E +:1090F000AC2E002064D9020010B588B0694601AAE0 +:10910000041C08F0E7F9009B022B2AD904A832219D +:1091100002AAF7F7F3F9019B13495A6802A81DF058 +:1091200048FD201CF8F7CCFC104BC2689A4210D1C5 +:10913000236802A85A680E491DF03BFDE368002B26 +:1091400007D05A68002A04D002A899680022F8F7CC +:10915000D1FC04A819F05DFD0AF0FEFE04A819F088 +:1091600008FD08B010BDC046C383030071120100A2 +:10917000CC83030070B5051C90B0002803D11F48B4 +:1091800018F0E8FC38E004A8F7F72AF8041E19D113 +:109190002E6801A8291C0122F8F7FAF8221C231CCA +:1091A000311C01A807F006F8041C03200AF058FE41 +:1091B000201C1BF0E0FB012040420AF051FEF7F7B3 +:1091C00025F819E0012040420AF04AFE05990C48B2 +:1091D000F8F7B4FC0598F8F773FC0A49041C02F090 +:1091E00089FC002808D1201C074902F083FC0028D4 +:1091F00002D10598FFF780FF10B070BDD083030047 +:1092000010F0020030F90200C8F7020037B5294B10 +:1092100001AA1A60FAF706FBE120C000FAF716FB74 +:10922000254B2648C118FDF7D1FCFEF791FD0AF049 +:10923000F5FDF9F747F80BF0D1FE0023204CA367AA +:10924000204B1A781D1C012A1FD1F8239B021A7883 +:109250004D2A07D15A78502A04D159881A481BF050 +:109260008FFC12E0002219480721131CFBF726F996 +:10927000002802D01BF08FFC07E0A6201449012231 +:109280004000FFF75BFC1BF09EFB2B78002B0ED100 +:10929000FEF7B6F80028F8D00E481FF00EFB0023AA +:1092A0000D4A5360136063671BF061FB37BDFEF727 +:1092B00003F9EFE74C270020DC25000070010020B7 +:1092C000882E00200601002004E00300FD83030037 +:1092D000F8DC020005840300F42E002007B5FDF73A +:1092E00001FD054B01A81968091A8908FDF7B4FCAE +:1092F000FDF70CFD07BDC0464C2700209F23002131 +:10930000024A5B000248D1527047C046882E0020B6 +:1093100074E002009F230121024A5B000248D152FF +:109320007047C046882E002074E002009F23044A44 +:109330005B00D35A0348002B00D103487047C04656 +:10934000882E002034CD020078CD020008B5FFF74A +:10935000C5FF014808BDC04674E002000023820733 +:1093600008D10268044901338A4203D0034BD31A5F +:109370005A425341181C704764DC02002CDB020087 +:1093800070B5061C0D1C0124B44206D2A300286847 +:10939000E9581BF02AFC0134F6E7014870BDC046CD +:1093A00074E0020010B5041C10201AF051F9044BAF +:1093B00084600360034B43600023C36010BDC0465C +:1093C0003CE20200C94C020038B5051C10201AF01E +:1093D0003FF9041C074B696808C01AF09DFBAB6895 +:1093E000E968A3606B68E0689A0021F005FF201C23 +:1093F00038BDC04664DC02000023F7B5041C0D1C18 +:1094000001938B0705D10B68224FDF1B7A427A410B +:109410000192AB68002B09D1019B002B03D0201CCB +:109420001D491DF0FAFA201C1C492FE0019B002B5E +:1094300003D0201C1A491DF0F0FA201C19491DF018 +:10944000ECFA002601236A68964216D2B200171C75 +:10945000EA68D259002A0ED0042A0CD0002B03D17E +:10946000201C11491DF0D9FAEB68201CD9590122A2 +:10947000F8F740FB00230136E5E7201C0B491DF0FF +:10948000CCFA019B002B03D0201C09491DF0C5FA22 +:10949000F7BDC0462CDB0200138403001A840300CE +:1094A00020840300A04903008B400300DD44030037 +:1094B0001B43030008B5FFF751FF002805D10349FE +:1094C000034807F061FFF6F7A6FE08BD2B840300F2 +:1094D00000FD020038B50D1C041CFFF7EBFF281C33 +:1094E000FEF746FE051C281CFEF790FE011E07D065 +:1094F000201D00221AF01AFB0028F4D0014800E0D9 +:10950000014838BD78CD020034CD020008B583078C +:109510000BD10368084A93420DD0084A934204D104 +:10952000074908481EF0EBFC03E00748074907F02D +:109530002BFFF6F770FE08BD64DC02002CDB020096 +:109540004184030034FB020000FD02002B84030071 +:1095500038B50D1C041CFFF7D9FF281CFEF708FEC8 +:10956000051C281CFEF752FE011E04D0201D0322FC +:109570001AF0DCFAF5E7014838BDC04674E0020095 +:1095800038B50D1C041CFFF7C1FF291C201D01224A +:109590001AF0CCFA004838BD74E0020038B50D1C52 +:1095A000041CFFF7B3FF291C201D02221AF0BEFA8B +:1095B000004838BD74E0020010B5041CFFF7A6FF98 +:1095C000201D1AF03CFB014810BDC04674E00200AB +:1095D00008B501221BF042FB004808BD74E0020000 +:1095E00038B5041C0D1CFFF791FF201D291C022219 +:1095F0001AF09CFA002804D103481EF073FCF6F719 +:109600000AFE024838BDC046F0FD020074E00200C8 +:1096100010B5041CFFF77AFF201D1AF0F2FA00289B +:1096200005D1034903481EF06AFCF6F7F4FD10BDAE +:1096300063840300F0FD0200F8B501280AD0002879 +:1096400002D002280AD029E08B681548002B26D1C9 +:10965000144824E08B685B00184320E003250020B9 +:109660000D4085421BD10C680F4B281C9C4216D123 +:109670000E1C4F68BD420DD0F268AB00995800290E +:1096800006D0042904D00220FEF70EFC4010241856 +:109690000135EFE701206400204300E00020F8BD21 +:1096A00034CD020078CD02002CDB0200F7B5071C98 +:1096B0001020019119F0CCFF051C0A4B061C08C5AF +:1096C000281C391C1AF028FA0024BC4208D0019A40 +:1096D000A300D158281C01221AF028FA0134F4E71B +:1096E000301CFEBD64DC0200F7B5051C0E1C171E05 +:1096F00005D0FFF70BFF1A4CB54209D12EE0FFF75A +:10970000D9FEB54204D1281C1BF080FA041C25E0C8 +:109710000020011CFFF7CAFF041C301CFEF728FDC7 +:1097200001900198FEF772FD061E0BD0281D311C1A +:1097300000221AF0FBF90028F3D0201C311CFFF79F +:109740001FFFEEE7002F09D0E86819F0A8FF636853 +:109750006B60A368AB60E368014CEB60201CFEBD4E +:1097600074E00200F0B585B0041C039002910192F0 +:109770000027FFF7F3FDB84207D13A1C204801212A +:1097800003AB1BF0C6FA041C0137029D0026281CFF +:10979000FFF7E4FDB04207D1321C1948012102ABAA +:1097A0001BF0B7FA051C0136019B002B05D0A368FE +:1097B000AA68934201D1002310E0201CFFF7F2FDBC +:1097C000019001981BF080FA011E06D0281D00228E +:1097D0001AF0ACF90028F4D1EDE701230193002F32 +:1097E00002D0201CFFF7E8FE002E02D0281CFFF755 +:1097F000E3FE019B0348002B00D1034805B0F0BDF8 +:1098000064DC020034CD020078CD020037B500914F +:1098100001921F2850D8151C0C1C10F0FFF81015D1 +:109820001A4D4D4D1F4D4D4D4D4D4D10151A4D4D71 +:109830004D1F4D4D4D4D4D24272C393E4D43081C99 +:10984000111C1BF0EDF938E0081C111C1BF0F6F997 +:1098500033E0081C111C1BF051FA2EE0694602206F +:109860001BF02DFA29E0081C111C00E0101C01223D +:10987000FFF778FF21E0081CFFF71CFE281CFFF70C +:109880006DFD031E0D4818D0A368AA68934214D139 +:10989000201C291C1BF06EFA0FE0081C111C1BF089 +:1098A00061FA0AE0081D111C00221AF03FF9031E9C +:1098B000034802D1014800E000203EBD78CD0200FF +:1098C00034CD02003E2803D0402809D03C280ED1D8 +:1098D0004239C9B22F290AD8084B585C012308E045 +:1098E000712904D8064B585C064B5B5601E00123F6 +:1098F0000020002A00D013607047C0465D85030039 +:1099000079840300EB84030008B5512836D00FD8C2 +:10991000492827D006D842281CD048281FD0002824 +:109920004BD117E04F2840D042D84C281AD044E001 +:10993000682811D007D864282AD0662825D0622844 +:109940003BD188563AE06C2832D071280FD0692874 +:1099500033D12DE0885C31E05200505E2EE05200A1 +:10996000505A2BE0920050581AF0DFF929E0D2004B +:109970008A18106851681AF0AEF922E0D2008A18ED +:10998000106851681AF0C2F91BE09200505805E0C7 +:10999000D2008A181068516813F01CF8032398430A +:1099A000013B1843074BC0180BE09200505808E0E9 +:1099B000920050581AF09EF903E000200123400065 +:1099C000184308BD00008080F7B5161C156801AA71 +:1099D000041C0F1CFFF776FF402C05D1019B043CB3 +:1099E0005A1EAD185B421D402B183360221C5A26AC +:1099F0003E3ABE42B6415442624176422B1CD2B23C +:109A0000311C1BF0BCF9041C0D1C4F2F3ED0532FF2 +:109A100008D1201C21F012FD0022011C201C02F0A4 +:109A200003FA33E0662F06D1032302209C43184B30 +:109A30000443E0182AE0642F09D1201C12F0CAFF69 +:109A4000032302249843124B2043C0181EE0002E2B +:109A500010D080220023D20512196B41201C002B4C +:109A600004D1002A02DB1AF045F90FE0291C1AF094 +:109A700032F90BE0201C002905D1064B9C4202D88C +:109A80001AF053F902E0291C1AF040F9FEBDC04655 +:109A900000008080FFFFFF3FF0B587B0141C03AAD1 +:109AA000071C0E1C01931D68FFF70CFF0090402F50 +:109AB00005D1039B043F5A1EAD185B421D40009B1D +:109AC000019AEB1813603E3F642E09D0662E02D037 +:109AD0004F2E22D140E0201CF8F740F9041C3BE057 +:109AE000201CF8F73BF97C427C4112F01FFFE4B2E6 +:109AF00004900591A30006AAD318083B211C2A1C38 +:109B00001B6804201BF064F901235C40A40006AB31 +:109B10001C19083C043524681EE0A3070CD1154B22 +:109B200022689A4208D179427941201CC9B2009A30 +:109B30002B1C1AF0B7F81AE0201CF8F7ABF8009BC2 +:109B4000041C042B08D95A2E06D9002804DA281D33 +:109B50001A1FFF2121F06DFB0098042800D9042072 +:109B6000794279412A1CC9B2231C1BF031F907B094 +:109B7000F0BDC04630D3020070B5061C0D1C141C8D +:109B8000181C642E0CD0662E04D04F2E11D19400D8 +:109B9000635127E094000D19F8F7E0F8286021E000 +:109BA000D4000D19F8F7DAF812F0C0FE28606960E9 +:109BB00018E020233343712B0CD10321014009D13C +:109BC000094B02689A4205D1E4002B1908221AF0C9 +:109BD00069F807E0F8F75EF8291C031C221C301C0A +:109BE0001BF009F970BDC04630D3020070B50E1CE1 +:109BF0001049041C00251CF010FF73689D420ED212 +:109C0000002D03D0201C0C491CF007FFAB00F318FB +:109C1000201C99680122F7F76DFF0135EDE7012B54 +:109C200003D1201C05491CF0F8FE201C04491CF03F +:109C3000F4FE70BD638703008B4003008D85030035 +:109C40001B43030070B501281ED0002805D0022850 +:109C50001ED10D1C0F4C002605E04B680E48002B52 +:109C600017D10E4815E06B689E4209D2B300EB187D +:109C700002209968FEF718F9401024180136F2E71F +:109C800001206400204304E04B685B00184300E0BF +:109C9000002070BDF8DC020034CD020078CD020057 +:109CA00010B5041C102019F0D3FC044B8460036031 +:109CB000034B43600023C36010BDC0463CE202007A +:109CC000374F020070B50E4A002816D0841CA4003D +:109CD000061C201C0D1C19F0BBFC0A4A46600260E1 +:109CE000021C002D09D00022083CA24204D0AB582F +:109CF00081188B600432F8E7021C101C70BDC0464E +:109D0000F8DC0200BCDC02007FB5041C0E1C151C34 +:109D1000072829D002D8052805D062E0031C193B8A +:109D2000042B3ED95DE0101CF7F7CAFE2F4901F065 +:109D3000E1FE011E56D06B68726800219818FFF78B +:109D4000C1FF311C7368041C9A000831083021F0EF +:109D500053FA291C70686B680230800020189A0042 +:109D6000083121F049FA18E003A9101CF7F7D0FFD9 +:109D70000021884236D00398884210DD736858432A +:109D8000FFF7A0FF041C231C301C0833009308308D +:109D900004217268039B1BF041FB211C22E0144943 +:109DA00020E0081CF7F78CFE281CF7F789FE114B02 +:109DB000426A9A4206D0281C0C491BF0B2FC0E499C +:109DC000051E0FD0311C2B1C6A6808310092083325 +:109DD000201C726801F07AFA0849002802D106496D +:109DE00000E00021081C04B070BDC046BCDC0200CD +:109DF000F8DC0200A19C000078CD020034CD020006 +:109E000030B585B0042A2DD103240A1C051C0C4052 +:109E10001FD1164B096899421BD1111C406801AA39 +:109E200001F01AFA002802D11148FEF74FFF019BFA +:109E30000298211CC01AFFF745FF041C6368083014 +:109E40009A00019B991C8900691821F0D5F9201C02 +:109E500009E0286869680023F7F7F4FF0230800002 +:109E6000405900E0002005B030BDC04600E20200CD +:109E70009B400300F0B51D1C002385B0081C009317 +:109E80000C1C111C1A1C0133F6F7AEFB1748002CF2 +:109E90002AD02868830703D1154B02689A4223D041 +:109EA000102019F0D5FB041C2868FEF761F9002585 +:109EB000042603900398FEF7A9F9071E0BD0B542BC +:109EC00005D3F100201C19F0D9FB041C7600AB006F +:109ED0001F510135EEE7281C211CFFF7F3FE051C7E +:109EE000201C19F0DCFB281C05B0F0BDF8DC0200DA +:109EF000BCDC020010B5041C081C1BF05FF8031C3E +:109F0000002C04D0012C07D14000204305E0034879 +:109F1000002B02DC024800E0002010BD34CD02001E +:109F200078CD020070B54568C6688468102019F0C5 +:109F30008FFB034B4560C6600360846070BDC04604 +:109F400058DD020038B50D1C041C6A680749AB686F +:109F50001CF02FFEEA68201C012A03D104491CF0E2 +:109F60005CFD02E003491CF024FE38BD8F85030030 +:109F70001B4303009C85030030B5041C87B0002000 +:109F8000042A30D1201C0D1C1BF018F8011CAB0753 +:109F90001DD1164B2A689A4219D1291C03AA01F037 +:109FA0005BF9102019F054FB114B039A0360E3682E +:109FB00061685A4352184260049A111C5943019235 +:109FC00062688A188260059A5343C3600BE00023DD +:109FD00020682A1CF7F736FFE36858436368C01807 +:109FE00001234000184307B030BDC04600E2020024 +:109FF0001CDD020008B5F7F7B1FE12F097FC002255 +:10A00000074B11F00DFE074B074A11F0CBF912F088 +:10A01000E1FC03239843013B1843044BC01808BDDF +:10A0200000806640FB210940182D445400008080C8 +:10A0300008B5F7F793FE12F079FC084A084B11F0C7 +:10A04000EFFD084B002211F0ADF912F0C3FC032321 +:10A050009843013B1843044BC01808BD182D4454C5 +:10A06000FB210940008066400000808008B5F7F7BA +:10A0700075FE034B184002231843024BC01808BD5D +:10A08000FCFFFF7F0000808008B5F7F767FE13F044 +:10A09000F9F8034B002800D0024B181C08BDC0463D +:10A0A00034CD020078CD020008B5F7F757FE13F063 +:10A0B000E9F8034B012800D0024B181C08BDC0462C +:10A0C00034CD020078CD020008B5F7F747FE13F053 +:10A0D000D9F8034B012800D8024B181C08BDC04614 +:10A0E00034CD020078CD02001FB500230193F7F7AD +:10A0F00035FE01A913F036F90322031C0220934315 +:10A10000064903435B180293019B934303435B1887 +:10A1100002A90393FFF7D6FD05B000BD00008080C3 +:10A1200038B50D1CF7F71AFE041C281CF7F716FEAD +:10A1300010F060FD011C201C13F0F0F8032398437D +:10A14000013B1843014BC01838BDC0460000808059 +:10A150001FB500230193F7F701FE01A913F0B2F830 +:10A16000032302249843074B2043C0180290019810 +:10A1700019F0C0FD02A90390201CFFF7A3FD04B055 +:10A1800010BDC0460000808038B50D1CF7F7E6FD15 +:10A19000041C281CF7F7E2FD011C201C13F06EFBC9 +:10A1A00003239843013B1843014BC01838BDC046F8 +:10A1B0000000808038B50D1CF7F7D0FD041C281C6A +:10A1C000F7F7CCFDC00FC307600040081843032316 +:10A1D0009843013B1843014BC01838BD00008080F4 +:10A1E00038B50D1CF7F7BAFD041C281CF7F7B6FDAF +:10A1F000011C201C13F0CAFA03239843013B1843A7 +:10A20000014BC01838BDC0460000808008B5F7F784 +:10A21000A5FD12F03DFE03239843013B1843014B7B +:10A22000C01808BD0000808008B5F7F797FD13F04F +:10A230005BFA03239843013B1843014BC01808BD48 +:10A240000000808008B5F7F789FD13F0FBF90323C0 +:10A250009843013B1843014BC01808BD00008080A3 +:10A2600008B5F7F77BFD13F069F903239843013B29 +:10A270001843014BC01808BD0000808008B5F7F7EF +:10A280006DFD13F019F903239843013B1843014B6B +:10A29000C01808BD0000808008B5F7F75FFD12F018 +:10A2A0005FFF03239843013B1843014BC01808BDCF +:10A2B0000000808008B50349034807F065F8F5F70A +:10A2C000AAFFC046A285030010F8020070B5061C64 +:10A2D00008680D1CF7F742FD0021041C0FF098FDE3 +:10A2E000002801D0FFF7E6FF201C13F029FB041C17 +:10A2F000012E06D1032302209C430D4B0443E0189A +:10A3000015E06868F7F72AFD0021051C0FF080FDB5 +:10A310000028E7D1281C13F013FB011C201C0FF0B0 +:10A32000C7FF032302249843014B2043C01870BD8C +:10A330000000808008B5F7F711FD13F02BFA032316 +:10A340009843013B1843014BC01808BD00008080B2 +:10A3500038B50D1CF7F702FD041C281CF7F7FEFCAE +:10A36000011C201C13F06AFB03239843013B184394 +:10A37000014BC01838BDC0460000808010B5F7F70B +:10A38000EDFC0021041C0FF039FD002801D0FFF77F +:10A3900091FF201C13F0FAFC03239843013B184360 +:10A3A000014BC01810BDC04600008080F0B5071CEE +:10A3B000443787B0041C381C0191002618F0E4FBD8 +:10A3C0002069431C18D00A2804D1201C1AF036FF3B +:10A3D0000126F5E7FBF716FC002823D12369232B80 +:10A3E00008D1201C1AF02AFF23695A1CE8D00A2B36 +:10A3F000F7D1E5E75C2B07D0E369256A019AA363EF +:10A40000E563002A12D117E0201C1AF017FF236918 +:10A410000A2B07D0E369A363236AE3630423403470 +:10A420002370F9E2201C1AF009FFC9E7012B03D1C0 +:10A430000622012D00D07AE1636A002B04DA221C87 +:10A440000721403211702FE0002B06D0221C06217C +:10A4500040321170013B6362B8E1002E39D0A36A2B +:10A46000002B36D1211C052240310A706362226B19 +:10A47000BA4B606BD3185B001B5A013D9D4200D163 +:10A48000A4E113D9E16A8A4207D30831490019F0DF +:10A49000F5F8E36A60630833E362236B5A1C2263B6 +:10A4A000626B5B009D52636A0133D4E7236BAB4A56 +:10A4B0009A185200125A954205D2013B2363636AEF +:10A4C000013B6362F2E7954200D17FE102230B700A +:10A4D0007CE12069431C1BD1A04A236B616B9B1854 +:10A4E0005B005A5A231C4033002A00D121E1052287 +:10A4F0001A7000236362994A236B9A185200525AC9 +:10A50000002A00D162E1013B2363636A013BF1E76A +:10A51000272800D17EE1222800D17BE1752804D0D4 +:10A520001023021C9A43622A04D16369272B11D09D +:10A53000222B0FD0722803D16369622B2ED104E045 +:10A5400062282BD16369722B28D1A369272B01D0F4 +:10A55000222B23D1752803D1201C1AF06FFE59E15C +:10A5600062280ED1201C1AF069FE00230193236992 +:10A57000722B00D048E1201C1AF060FE01230193E9 +:10A5800042E100230193722800D045E1201C1AF01B +:10A5900055FE2369622BEED001233CE1FBF73EFB25 +:10A5A0002169002803D15F2901D07F291ED9231CEE +:10A5B000082240331A70C9B2381C18F03DFB201C29 +:10A5C0001AF03CFE2069431C00D1FFE0FBF726FB9C +:10A5D000002801D0217CEFE720695F28FAD07F288E +:10A5E000F8D8FBF727FB0028F4D1EFE0081CFBF7B5 +:10A5F00021FB002808D0251C216940352E290CD1CB +:10A600000A2300262B7035E023692E2B52D1606976 +:10A61000FBF710FB0028EED14CE0092300262B703D +:10A62000302927D16269173313430122161C622B8C +:10A6300020D06F2B1ED0783B5E425E411AE020692D +:10A64000431C00D1C2E0002E1BD12023021C9A43E0 +:10A65000131E452B15D13B3B2B706521381CF5F79C +:10A6600059FF201C1AF0EAFD216902220B1C2B3B2A +:10A670009343E4D1381CF5F74DFF201C1AF0DEFDA2 +:10A68000DDE7FBF7CBFA002803D021692E2909D199 +:10A690000DE02069FBF7CEFA0028F6D123692E2BB6 +:10A6A000F3D093E020230A1C9A434A2AE2D10A23DA +:10A6B0002B70DFE721692E291FD1261C381CF5F7E6 +:10A6C00029FF201C1AF0BAFD236940362E2B00D03A +:10A6D00093E165692E2D00D08FE1381C291CF5F718 +:10A6E00019FF291C381CF5F715FF201C1AF0A6FDD0 +:10A6F000201C1AF0A3FD0D2380E10026184D2F78B1 +:10A70000002F0ED0B9420CD03B1CFD20633B6A1CCD +:10A71000034202D0452F01D1013E151C01360135FF +:10A72000EDE7201C1AF08AFD002F04D10122231C22 +:10A7300040331A704AE0371C01352B78652B11D154 +:10A740006B78226901379A4205D1201C01351AF035 +:10A7500075FD3E1C06E00235EFE7C046FFFFFF7FB8 +:10A76000DF8503002B78452B0AD16B7822699A424A +:10A7700004D1201C1AF062FD3E1C0EE001220EE006 +:10A78000632B0AD16B78226901379A4205D1201CCC +:10A790001AF054FD02353E1CCFE7A04B9A5D231CF6 +:10A7A00040331A70231C40331B780422191C914338 +:10A7B000422901D0442B02D1A36A013305E0432989 +:10A7C00001D0452B02D1A36A013BA362211C403179 +:10A7D0000B78082B00D01FE10023E56CA66C904A93 +:10A7E0009800805800228418B24205D0875CAC5C87 +:10A7F000A74205D10132F6E72278002A00D1FFE016 +:10A800000133222BEBD107E1231C0C2240331A70B9 +:10A81000012306E000230193231C0B2240331A700E +:10A8200000232722049323690392222B00D1039350 +:10A83000201C1AF003FD0123039A05932369934218 +:10A840000AD16369934207D1201C1AF0F7FC201C3F +:10A850001AF0F4FC032305930026236902930133C5 +:10A8600000D1B0E0059B012B03D1029B0A2B00D144 +:10A87000A9E0059B9E4200D3ACE0029B039A934261 +:10A8800005D1381C111C0136F5F744FE97E0029BF8 +:10A890005C2B00D08DE0201C1AF0D0FC019B2569B8 +:10A8A000002B02D0381C02996BE0622D00D1A2E08F +:10A8B00012D84E2D4BD007D8222D66D0272D64D02C +:10A8C00000260A2D7BD045E05C2D5ED0612D00D1A5 +:10A8D0008FE0552D3ED11BE0742D11D007D86E2D81 +:10A8E00010D0722D12D0662D34D10C2550E0762D6B +:10A8F0000AD00DD30226782D16D06B1C5ED029E02D +:10A90000092545E00A2543E00B2541E00D253FE000 +:10A91000049B002B04D0381C5C21F5F7FBFD37E0CD +:10A920000426752D00D0B6190025013E2BD3201C1E +:10A930001AF084FC2369181C0293FBF787F900289E +:10A940004DD0029819F0A0FA2D014519EDE73548D0 +:10A95000FEF7BCF92B1C303B072B10D81D1C03261F +:10A960006369303B072B0ED8013E002E0BD0201C14 +:10A970001AF064FC2369ED00303B5D19F0E7381CE8 +:10A980005C21F5F7C7FD6B1C18D0274B9D420BD8F7 +:10A99000049B002B04D1381C291CF5F7BBFD0DE0EE +:10A9A000FF2D01D8E9B206E0231C012240331A70C2 +:10A9B00004E06B46197A381C18F03EF90026201C7A +:10A9C0001AF03CFC49E7059B9E4203D2231C03225C +:10A9D00040331A70381C311C18F076F9F6E6231C47 +:10A9E000012240331A70049B051C002BDAD11D1C78 +:10A9F000D1E70725CCE70825CAE74A233370E5E607 +:10AA0000212B07D1094BA0331A681023002A02D04A +:10AA1000023B00E00E330B7007B0F0BDB4850300BD +:10AA2000ECDF020021860300FFFF1000882E0020CB +:10AA3000054B002805D00023022802D101224B003B +:10AA40001343181C7047C04678CD020008B5024970 +:10AA50001BF0E3FF08BDC0465C29030073B501A9E4 +:10AA600001F09AFE019B061C502B02D91848194987 +:10AA70001CE08020400018F0EBFD174C051C231C47 +:10AA8000883318600023019A934203D0F15CE954A3 +:10AA90000133F9E75B22281CEA5403F01DFA2B1C52 +:10AAA000002807D1883420600C4909481DF027FA96 +:10AAB000F5F7B1FB5A1B0133591E09789B29F9D1CF +:10AAC000291C07481AF0B5FE00238834236076BDA0 +:10AAD00010F80200A0860300882E0020AF86030035 +:10AAE00080CA0200F0B58BB0061C10A80778364863 +:10AAF00005AD00900195081C111C1A1C0523F5F7E3 +:10AB0000A5FD9120000118F0A3FD304B304A1860DC +:10AB1000059B476043702B7904A903702B7A041CB2 +:10AB200083702B7BC3702B7C301C136001F034FED0 +:10AB30000025284B071C0C201D6018F089FD264BB2 +:10AB4000061C036008F0F2F9B06008F0EFF9234B3F +:10AB500023491860234B70601D70234B301C1D70FF +:10AB6000224B0A1C1D602B1C08F0EEF8201C391C1F +:10AB7000049A18F03BFD201CF8F7F0FD1C4B071E53 +:10AB80000393134E194D164C0AD108F001F80F4BE0 +:10AB900018481F60184B19681DF0B1F9F5F73BFB19 +:10ABA0000122164B1A7008F0BBF90028FBD1039B59 +:10ABB000883318603368002B03D01148296816F0D9 +:10ABC000F7FE201C0BB0F0BDC0E00200102F0020EB +:10ABD0006C01002058270020FCE0020054270020D0 +:10ABE00074E00200FB2D0020FC2D00205C270020DB +:10ABF000882E002010F8020004000020FA2D00200A +:10AC0000C686030000220D4910B50B78DBB29342D3 +:10AC100012D10B4A1478002C02D001240C7013704E +:10AC2000084B1B78002B06D0074A136820331360AB +:10AC3000064B1A6800E08268101C10BDFC2D002035 +:10AC4000FA2D0020FB2D002058270020542700203B +:10AC5000D2235B005843134A30B51368000C83427B +:10AC600006D9114C2368013323601368203B13601D +:10AC70001F23051C14689D43A54203D901240B4BD7 +:10AC80001C70F5E703401A1D202A00D92022084C29 +:10AC90002468934203D2E51829710133F9E7054B83 +:10ACA000186030BD582700205C270020FB2D0020B5 +:10ACB0005427002050270020F0B5151C42688FB0A3 +:10ACC000944606938369CA6802938B6882606344E2 +:10ACD0005A1C42601A78041C01929A1C4260DA1CC9 +:10ACE0005F7842609A78059104921A1D4260DB7881 +:10ACF00000210393031C1833C360029B03339B00A2 +:10AD0000C31804330361029B1C309B001A1C079379 +:10AD100020F08FFA149AAB00D3180B93029B049A7D +:10AD2000DB1B08939B1A05339B00E3181E1D0122B1 +:10AD30000199BD420FD9114203D1834883493A1C7E +:10AD40002CE01E1C149BB900E81B5918FEF7BAFF33 +:10AD50003D1C706027E0114202D01E1C7C4B7360CA +:10AD6000069B002B1FD1019B1B071CD4039BFA1AC7 +:10AD7000954211D3D91B8B009C462A1CBA4212D291 +:10AD8000614693005818059901320818079900691F +:10AD9000CB1AE3189861F1E76B486C492B1C06F05D +:10ADA000F3FAF5F738FA0022AA4208D01499079866 +:10ADB0009300C958C31AE31899610132F4E7069B5E +:10ADC000002B03D1019B1B0700D494E00223019ABE +:10ADD0001A4000230A920793002A04D0069818F01C +:10ADE00040FD079030600026A3680B9D0993069BE9 +:10ADF0009E4228D000222968049BDB199A4215D272 +:10AE000009989300C35899420ED1029B013B9B1AAB +:10AE10009B00E318DA69002A03D0CA084A484D4962 +:10AE200066E06A68DA610BE00132E5E70A9B002B15 +:10AE300002D14548484963E007986A6818F04AFD1E +:10AE400001360835D3E7089B03989A1D039B9200AF +:10AE5000D91CA218059B043289005918131C00281C +:10AE600008D01D68002D01D10D681D600138043324 +:10AE70000439F4E7039B9B00D318029A0632920030 +:10AE8000A2180432934209D20433191F0968002919 +:10AE9000F3D1D21A92102C48304929E0089B099A24 +:10AEA0009D00BB00D31865190693002610E0039B94 +:10AEB000059904339B0058580699B3000430C958CB +:10AEC000F9F7EEFD00280CD04368AB610136043D74 +:10AED000049B9E421ED2AA69002AF7D1019B1B0740 +:10AEE000E5D4F619099BB600F25817481C49D20858 +:10AEF00006F04AFA55E7049B002B04D01248194982 +:10AF00001CF0FDFF4DE7019B9B0703D5049818F04B +:10AF1000A8FC306065680DA825600D951AF05EFAF2 +:10AF20002E180136731E1D78FF2D09D0029B013BA0 +:10AF30005D1BAD006519E869FBF79AFBE861F0E776 +:10AF400066600FB0F0BDC04600FD0200803F030008 +:10AF5000F8DC0200DC430300573F0300D586030002 +:10AF6000078703003787030070B5041C0D1C1049C8 +:10AF70001BF053FD6968201C0122F6F7BBFD0D4E46 +:10AF8000201C311C1BF049FDA968201C0122F6F78A +:10AF9000B1FD311C201C1BF040FDE968201C012282 +:10AFA000F6F7A8FD201C04491BF037FD70BDC04614 +:10AFB0005E8703008B4003001B43030070B5061C33 +:10AFC00010200D1C141C18F043FB034B46608560D9 +:10AFD0000360C46070BDC04600E202008022044BE2 +:10AFE00052001A600123034A1360034A136070473A +:10AFF00000E100E00C8C0040008000408022054B06 +:10B000005200DA67044BFF3A5A600022034B1A6081 +:10B010007047C04604E100E0008000400C8C004016 +:10B0200038B501251D4B1E4C18601E4BE550C0461F +:10B03000FFF7E4FF1C4A1D4BE560E25000230221AC +:10B040001B4AC220A3500432A15049180832A15013 +:10B050008021C12209039200A150053AFF21FF3A45 +:10B06000A3504024134B80001A588A432243802463 +:10B070001A500C301A5824061202120A22431A508F +:10B0800004301A588A433F390A431A508022120466 +:10B090001A60802252041A6038BDC0466027002022 +:10B0A00000800040FC0F0000701700004C050000FD +:10B0B0000405000000E100E038B5224C224D636C2D +:10B0C000002B0AD000236364204B1B689847A822FA +:10B0D000D200AB580001C018A850A36C1A4D002B29 +:10B0E0000AD00022174B9A64184B5B689847184A9D +:10B0F0000001AB58C018A850E36C134D002B0BD0C7 +:10B100000022104BDA64114B9B689847A922D200A9 +:10B11000AB580001C018A850236D0B49002B0FD06D +:10B120000022084B0B481A650B4A8B581B188B5092 +:10B130000A4A1368063313608022094B12045A60CE +:10B1400038BDC046FC800040008000401400002054 +:10B1500044050000701700004C050000FC2C002086 +:10B16000FCE100E0F7B50191032824D8134B8000DF +:10B17000C758C2230125124C9B00E75003191D64D8 +:10B18000A825ED005E59B4460E4EA659921B6244A6 +:10B19000D117090F8C4662441211013200920A49FC +:10B1A000019A4250C121009A89001201B6186750D5 +:10B1B00000205E5101E001204042FEBD78E2020025 +:10B1C000008000404C0500001400002003280BD82C +:10B1D000074B8000C158C223064A9B00D150064A43 +:10B1E000064BC250002001E0012040427047C0469B +:10B1F00078E2020000800040175402001400002092 +:10B2000008B5024B1B68984708BDC0466027002060 +:10B2100010B50024054AA358002B02D00021A150EC +:10B2200098470434102CF5D110BDC0466427002087 +:10B23000074A89008B58002B06D188508021054A87 +:10B2400049045160181C01E0012040427047C0468B +:10B2500064270020FCE100E030B585B003AB051C9D +:10B26000141C081C02AA01A91AF0C9F8019A16496F +:10B2700000238A4200D0531002984210884200D125 +:10B280002A1C002B04DA5B19D843C017034002E0E4 +:10B29000AB4200D92B1C002A01DA521902E0AA4263 +:10B2A00000D92A1C23609A4200DA1A1C039B6260B0 +:10B2B0008B4205D0032B03D05B10A360002001E07C +:10B2C0000120A06005B030BD74E00200F0B587B089 +:10B2D000061C151C0C9F1B2803D1BA4212D000205B +:10B2E0003FE0192808D01C280CD13D1C171C0A1C53 +:10B2F0001D26191C131C05E03D1C171C0A1C1A26D0 +:10B30000191C131C0397AF4200D903951C1C002382 +:10B3100002910193019B039A93421BD0029B0594D7 +:10B32000049301CB02CC0293F6F762FC002802D012 +:10B33000019B0133EDE71B2ED1D0049B301C196813 +:10B34000059B1A68FCF7A2FF074BC01A43425841FD +:10B35000C0B206E0BD4201D002D2C0E71A2EBED074 +:10B36000012007B0F0BDC04634CD0200F0B51E1C70 +:10B3700085B0039018680D1C171CF6F7A1FB7368C5 +:10B38000019002930024022F18D9291CB2680123CE +:10B39000F6F758FD041C032F10D0291C0198F26801 +:10B3A0000123F6F74FFD051C08E0039AA300D058CF +:10B3B0000299F6F71DFC002808D10134AC42F4D301 +:10B3C000054906481CF09BFDF4F725FF01206400A9 +:10B3D000204305B0F0BDC0466587030010F80200A9 +:10B3E000F8B5041C0D1CA368002B0AD0334AE96889 +:10B3F000914206D0EB58002B03D00422E3681A6078 +:10B400005AE0A86B002820D0062163680430DB00D6 +:10B4100019430022F9F744FB031E16D0227C002AB0 +:10B4200002D0002021680BE02068002807D0234AC2 +:10B43000E968914203D0224A954200D00069291C54 +:10B440005A68E368FCF7D6FD36E02368002B03D189 +:10B450006E6B002E14D12FE0227C002AF8D1174AFF +:10B46000E9689142F4D0164A9542F1D018696168B2 +:10B47000E268FCF701FEE3681B68002BE8D01BE0E4 +:10B4800075680836002D17D000276B1E0C4A9F42A6 +:10B490000CD2BB00F158914206D0201CFFF7A0FF50 +:10B4A000E3681B68002B07D10137EEE7054BED1869 +:10B4B000AD00AD59954296D1F8BDC04675B70000B4 +:10B4C00078FF0200FFFFFF3FF0B5146889B0002C41 +:10B4D0001FD143685E6B002E1BD0171C736803AD31 +:10B4E00001938368083603936960AC60EA602C744A +:10B4F000019B9C4209D0A300F158281CFFF770FF64 +:10B500003B68002B05D10134F2E7281C0249FFF704 +:10B5100067FF09B0F0BDC04678FF020008B50B1CFC +:10B5200002495A681BF045FB08BDC0467C870300F2 +:10B5300070B50E1C00218AB0041C151C05A814222D +:10B54000009101911FF075FE202307936B4605942F +:10B5500008931C23002D02D0042D07D11A23216843 +:10B5600005A80693FFF73CFF022106E01B23216894 +:10B5700005A80693FFF734FF03210098042805D19E +:10B580002069311C2A1CF6F711FD0DE000280BD0B4 +:10B5900002AB0022029403960495FCF7EFFC031C17 +:10B5A0000248042D00D1181C0AB070BD74E00200DE +:10B5B000F0B5204B82008BB0D25805AE00237260EC +:10B5C0001422019003AF05910D1C301C09680393F0 +:10B5D0007B60B260F7603374FFF702FF039C042CBA +:10B5E00005D101982969FCF75FFC041C1EE0002CC2 +:10B5F0000DD0201C291C19F0C5F9019B041C022B3D +:10B6000014D1F6F773FB0124400004430EE0019BC4 +:10B61000022B0BD12433301C29687360FFF7E0FE46 +:10B620003B68002B02D101246D002C43201C0BB081 +:10B63000F0BDC046F0EC0200F0B5161C724272413B +:10B6400089B00C1C1F3200230492082201A903AD0B +:10B650000691071C2168281C019302932B74039404 +:10B660000592FFF7BDFE019B002B08D1002E06D1ED +:10B670001F33281C21686B60AE60FFF7B1FE019894 +:10B68000042819D12069F6F71BFA164BC2689A42B2 +:10B690000ED1002E07D02368586817F0F0F9011C6E +:10B6A000381C1BF0BAF98022381C324321690BE0A8 +:10B6B000381C2169321C07E0002808D0211C19F031 +:10B6C00061F90022011C381CF6F714FA08E0201C6E +:10B6D00017F081FE0449021C231C381C1BF069FA78 +:10B6E00009B0F0BD711201008987030038B5041C50 +:10B6F0000D1C0B491BF091F96968201C0022F6F71C +:10B70000F9F9201C07491BF088F9A968201C0022C0 +:10B71000F6F7F0F9201C04491BF07FF938BDC0464C +:10B720009B8703008B400300C1830300F7B500250E +:10B73000436808300F1C061C2C1C0193019B9D4282 +:10B7400012D0AB00F358094A93420BD0084AD9688B +:10B75000914202D03B60013404E0586B391CFFF782 +:10B76000E5FF24180135E9E7201CFEBD78FF020043 +:10B7700075B70000F0B58FB0051C0F1C406B05A914 +:10B7800001920293FFF7D2FF061DB600301C17F09E +:10B790005FFF041C002120C018F08AF9321C201C15 +:10B7A000103A103000211FF044FD012F05D1029BFB +:10B7B0001B680393042B00D183E00922002309A80E +:10B7C000426007AE0332291C8260C660037407938F +:10B7D00073600993FFF704FE0798042807D10598C2 +:10B7E000391CC668019A029BB047206123E00028FB +:10B7F00021D0019A3A4306D1012106AB0695FCF708 +:10B80000BDFB041C17E0019B5C003C190134A40043 +:10B81000201C17F01DFF221F0390029920C01FF06B +:10B82000EBFC791C3068019A039BFCF7A7FB041C16 +:10B83000039817F034FF201CF6F742F9A84240D1D4 +:10B840000023082209A8291C089307930B93099445 +:10B850000A92FFF7C5FD079B002B32D001993943AF +:10B8600005D1081C07AA19F095F8061C1CE0019BDD +:10B870005E00BE190236B600301C17F0E9FE321C1D +:10B88000051C079B083A03600393089B02994360D9 +:10B8900008301FF0B1FC381C01992A1C19F07AF805 +:10B8A000061C281C17F0FBFE074B9E4209D0301CDB +:10B8B00017F091FD0549021C054805F065FDF4F7F8 +:10B8C000AAFC201C0FB0F0BD74E00200A4870300A6 +:10B8D00000FD020038B5C568041C002D06D10449DE +:10B8E0006268044805F050FDF4F795FCA84738BDA0 +:10B8F000CC87030000FD0200F8B5041C0F1C161CC9 +:10B900001D1C19F00FFE002809D1201C17F063FD43 +:10B910000949021C094805F037FDF4F77CFC0428AE +:10B9200001D1206902E0211CF8F7B2F9391C321C60 +:10B930002B1CFCF723FBF8BDF681030000FD020081 +:10B94000F0B5154B89B0161C8200D5580C1C0C2282 +:10B950000021071C68461FF06CFC182303A84560F3 +:10B96000836000256B462168C36005740394FFF76C +:10B9700037FD0098042805D1381C2169321CFCF7DA +:10B9800085FC07E0002805D00120291C6A460296A4 +:10B9900019F000F809B0F0BDA8EB0200F0B585B0D1 +:10B9A000071C0D1C081C161C01A902AA19F0E4FAB8 +:10B9B0000023019902988B420CD09A008258D468D7 +:10B9C000002C05D123495268234805F0DDFC26E010 +:10B9D0000133F0E73C2017F04DFE204B041C0360C0 +:10B9E0001F4B476083601F4B4563C3601E4B8663DC +:10B9F00003611E4B03A943611D4B83611D4BC36152 +:10BA00001D4B03621D4B43621D4BC362281CFFF795 +:10BA10008DFE012805D910481A491CF070FAF4F778 +:10BA2000FAFBA36B4E21181D0022F9F739F8051E09 +:10BA30000DD0032243681A4009D11B685B68F22BC2 +:10BA400005D1031D0121104819F0C7FD6860201CB5 +:10BA500005B0F0BDE987030000FD02006CEB0200B9 +:10BA600039B6000075B70000F9B80000B1B50000A4 +:10BA700041B900004F55020031B500009F56020049 +:10BA80005B56020012880300A8EC020037B51C1CAC +:10BA900000230D1C0093081C0333111C0122F4F732 +:10BAA000A3FD012D09D0032D0BD1206800F0DEF994 +:10BAB0006168A268FFF772FF09E02068F6F700F8F6 +:10BAC00005E0034903481CF01AFAF4F7A4FB3EBD55 +:10BAD0004088030000FD020038B5051C0C200C1C3A +:10BAE00017F0B6FD024B45600360846038BDC04668 +:10BAF00030EC0200F8B50F1CB8421ED003240440FD +:10BB00001DD1134B02689A421BD1466B002E1AD0EE +:10BB100075680836002D18D06B1E9C4208D2A30011 +:10BB2000F058391CFFF7E6FF00280FD10134F3E786 +:10BB3000084BED18AD00A859DEE7012006E0002013 +:10BB400004E0201C02E0301C00E0281CF8BDC046C8 +:10BB50006CEB0200FFFFFF3FF0B585B0051C0191C3 +:10BB6000081C8B0710D10B68154A934204D101239E +:10BB7000029301AB03930DE0124A934204D102A950 +:10BB800003AA19F0F9F905E00F4910481CF0B7F9BC +:10BB9000F4F741FB0024029E039FB4420BD0A300A4 +:10BBA000F9580B4B994208D0281CFFF7A3FF002837 +:10BBB00003D10134F1E7074800E0074805B0F0BDC4 +:10BBC0006CEB0200BCDC02005C88030000FD02009C +:10BBD00078FF020078CD020034CD020008B583075B +:10BBE00003D1064B02689A4205D0054905481CF06E +:10BBF00086F9F4F710FBFFF7AFFF08BD6CEB02000E +:10BC00009588030000FD0200F7B5CC1CA400071CBA +:10BC1000201C0E1C019217F01BFD221C051C054B5D +:10BC20004760866003600C3A01990C301FF0E4FA1B +:10BC3000281CFEBD18ED0200032210B502400121B0 +:10BC4000002A04D10A4C03688C46A3420ED00B1C78 +:10BC500003409C4608D1002A08D1036805481B1AF6 +:10BC60005A425A41944601E001239C46604610BD69 +:10BC70003CCD020030D3020010B5041CFFF7DCFFFE +:10BC80000123002809D10322031C2240022A04D1E7 +:10BC9000034B2340063B581E83410120184010BD32 +:10BCA000070080FF08B517F096FB0349021C034804 +:10BCB00005F06AFBF4F7AFFAB888030000FD020054 +:10BCC00010B5041C102017F0C3FC044B8460036003 +:10BCD000034B43600023C36010BDC0463CE202003A +:10BCE000A35A0200F7B50E1C0193041C8B180A1C02 +:10BCF00000210093009B9A420ED21378272B04D088 +:10BD0000223B58424341DBB201E0002301210132D2 +:10BD1000002BEFD0272503E02725002900D0053D83 +:10BD20001F4F201C391C2A1C1AF043FF009B9E4207 +:10BD30002FD23278AA4203D1201C1A492A1C24E0AF +:10BD40005C2A02D1201C18491AE01F2A0AD97F2A2E +:10BD500019D0019B002B02D053B2002B0CDB201C0E +:10BD6000391C12E00A2A02D1201C104908E00D2AD1 +:10BD700002D1201C0E4903E0092A04D1201C0D49E0 +:10BD80001AF04BFE03E0201C0B491AF012FF01369B +:10BD9000CCE7391C2A1C201C1AF00BFFF7BDC0464B +:10BDA000934103009241030096410300994103002F +:10BDB0009C4103009F410300A2410300194B70B551 +:10BDC000061C0D1C98420ED188684968F4F796FA53 +:10BDD000041E08D0281C16F0CCFE00230620E40028 +:10BDE0002B6020431DE0102017F032FC6968041C12 +:10BDF00081600660A868F4F763FA6B686060591C9C +:10BE00002B68994202D1AB68E36003E0A86817F0A1 +:10BE100035FCE0600023201CE268A1685354AB604D +:10BE20002B6070BD80CA020038B5051C0C1C002AAE +:10BE300002D0F4F799FA03E0F4F760FA002803D08F +:10BE40000623C000184304E00248291C221C19F0F4 +:10BE5000F0FC38BD80CA020008B5031C0A1C024869 +:10BE6000191C19F0E6FC08BD48EF020008B50B4BA1 +:10BE70000340062B01D1C0080EE0031C820708D145 +:10BE8000074A0168914204D19968C068F4F76CFAD6 +:10BE900002E0181CFFF706FF08BDC046070080FF40 +:10BEA00080CA020008B5064B0340062B03D1C00828 +:10BEB00016F0EAFD02E08368C0680B6008BDC0466A +:10BEC000070080FFF0B5002689B0051C0F1C081C78 +:10BED0001C1C111C0096321C0323F4F785FB0E205A +:10BEE000B74237D0012F0ED104A802AA1021F4F7CF +:10BEF00005FB02A82168321CF5F7FCFD281C04A9EB +:10BF0000FFF75CFF26E0206804A983071AD1124BD3 +:10BF100002689A4216D1FFF7C5FF104B061C206835 +:10BF20000340062B04D1C00816F09FFD041C00E05E +:10BF300044681020049F17F08BFB05608760C66083 +:10BF4000446007E00122F6F765F80498059900229D +:10BF5000FFF76AFF09B0F0BD48EF0200070080FF5D +:10BF6000F0B58BB0049008680D1C06920793F5F7A6 +:10BF7000A7FD041C6868F5F7A3FD061EA64202D0C3 +:10BF80006868FFF78FFE08A92868FFF78BFF041C7D +:10BF900009A96868FFF786FF089A0590A31803931C +:10BFA000049B271C022B19D9AB681F498B4206D072 +:10BFB0000121301C0091211CF5F7ACFC071C049BEF +:10BFC000032B0BD0EB68184A934207D00122301C98 +:10BFD0000092211C089AF5F79DFC0390039B381CE6 +:10BFE000D91B069B059A0093099B19F003FC011EBF +:10BFF0000AD10120079B4042002B12D00B490C486C +:10C000001BF07DFFF4F707F90A4B9E4205D1201C77 +:10C0100017F007FF0121400002E0001B4100012052 +:10C0200008430BB0F0BDC04674E00200E488030092 +:10C0300010F8020080CA0200F0B58DB0041C039114 +:10C04000F5F73EFD04A9061C201CFFF72BFF01900D +:10C05000039883070BD10368314A934204D105A9A1 +:10C0600006AA18F089FF10E02E4A934208D02D4806 +:10C070000121C36800220293029C03ABA0470390F6 +:10C08000039805A906AA16F052FF0024251C059B5B +:10C090009C421ED2069BA700D859F5F711FDB0426D +:10C0A00005D0214921481BF02AFFF4F7B4F8002CF1 +:10C0B00001D0049BED18069BD8591D4B0340062B5D +:10C0C00003D1C00816F0D6FC00E080682D180134BA +:10C0D000DDE7291C002508A816F038FD0A9C059B01 +:10C0E0009D4217D2002D06D0201C0199049A1FF002 +:10C0F00083F8049BE418069AAB00985807A9FFF749 +:10C10000D1FE079A011C201C1FF076F8079B013511 +:10C11000E418E4E7301C08A9FFF750FE0DB0F0BDAD +:10C12000BCDC02009CC60200F888030000FD02008F +:10C13000070080FFF0B5071C87B008680D1CF5F7F5 +:10C14000BFFC04A9061C2868FFF7ACFE05A9041C67 +:10C150006868FFF7A7FE0390201C022F07D9012370 +:10C16000301C0093211C049AAB68F5F7D3FB059AA9 +:10C17000041B0499A418064B8C4206D803991FF09F +:10C180002CF8044B002800D0014B181C07B0F0BD60 +:10C1900078CD020034CD020073B50D1C061C086872 +:10C1A0006946FFF77FFE01A9041C6868FFF77AFE65 +:10C1B000011C022E02D90848FCF788FD019A009B59 +:10C1C00006489A4207D8981A20181FF006F8031E4E +:10C1D000034800D0014876BD3D89030078CD0200B8 +:10C1E00034CD0200F0B58FB0079010680C1C171CFE +:10C1F000F5F766FC0690012C10D07868F5F760FC26 +:10C20000069B984202D07868FFF74CFD78680DA92C +:10C21000FFF748FE0D9B0890099303E0072309935D +:10C220002C4B089338680DA9FFF73CFE0D9B0B9033 +:10C230000493079B012B05D1049B5D1E01235B42E8 +:10C240000A9302E0012300250A930024261C049B84 +:10C2500003940593059B002B22D00B9B08985A1939 +:10C2600001230999009319F0C5FA002812D1039B04 +:10C27000002B0ED1079B002B03D1049B2E1C5D1EAF +:10C2800019E0079B012B15D001232C1C2E1C0393B6 +:10C2900000E02C1C0A9BED18059B013B0593D9E798 +:10C2A000039B002B08D10C4B069A0E209A420FD00C +:10C2B0000A480DE0039E2C1C049B0134A21B9A42E9 +:10C2C00001D1386804E00B9B0698991919F0B1FA6E +:10C2D0000FB0F0BD0B8D030080CA020054ED0200C8 +:10C2E000F0B589B0049008680D1CF5F7E9FB041C53 +:10C2F0006868F5F7E5FB071EA74202D06868FFF7FC +:10C30000D1FC06A92868FFF7CDFD061C07A96868BF +:10C31000FFF7C8FD069A0590B3180393049B341CDD +:10C32000022B19D9AB681F498B4206D00121381C5A +:10C330000091311CF5F7EEFA041C049B032B0BD083 +:10C34000EB68184A934207D00122381C0092311C36 +:10C35000069AF5F7DFFA0390079B0025002B10D112 +:10C36000039B201C191B17F06BFD013040000125B9 +:10C3700014E0201C05991EF030FF002807D101357C +:10C38000341C079A039BA6189E42F2D904E0201C95 +:10C3900017F040FD061CF3E701206D00284309B0AB +:10C3A000F0BDC04674E00200F0B58BB00E1C071C57 +:10C3B0000392F5F785FB041C301CF5F781FB8442E2 +:10C3C00002D0301CFFF76EFC05A9381CFFF76AFD90 +:10C3D00006A9051C301CFFF765FD069B021C002BFF +:10C3E00005D11A491A481BF08AFDF3F714FF1949C1 +:10C3F0008C4201D10E2100E0174907910891099163 +:10C400000399002901DD079700E009970399281C8B +:10C410000091059919F0EEF9002811D0471B3A1C3C +:10C42000291C201C19F005FA069A059BB918DF1B78 +:10C4300007906918BA1A201C089619F0FAF90990A1 +:10C4400007A90320FDF73EFC0BB0F0BD4F890300A8 +:10C4500010F8020080CA020054ED020008B5011C69 +:10C46000014819F0FDFA08BD613E020008B5011C43 +:10C47000014819F0F5FA08BD753E0200F7B5061C33 +:10C48000081C01A9FFF70EFD019B051C002B01D123 +:10C49000144826E0144B041C9E4201D1002712E0F0 +:10C4A000124B9E42FAD0019A631B934218D2207815 +:10C4B000B04701340028F6D1EAE72078F9F7AEFB5F +:10C4C000002805D10134019A631B9342F5D305E09E +:10C4D0002078B0470028DBD00127F3E7002FD7D022 +:10C4E0000348FEBD78CD0200855C00009D5C000025 +:10C4F00034CD020008B5011C0148FFF7BFFF08BD9D +:10C50000055C000008B5011C0148FFF7B7FF08BD36 +:10C510001D5C000008B5011C0148FFF7AFFF08BD16 +:10C52000355C000008B5011C0148FFF7A7FF08BDF6 +:10C53000855C000008B5011C0148FFF79FFF08BD9E +:10C540009D5C0000F0B585B0041C0D1C171CF5F7B0 +:10C55000B7FA6946061C201CFFF7A4FC041C042F34 +:10C5600022D1AB0715D1124B2A689A4211D10098FB +:10C57000291C01AAFEF770FE002802D10D48FCF725 +:10C58000A5FB019B029AE118D21A301C19F051F94F +:10C590000BE00023301C00992A1CF5F753FC012303 +:10C5A000205C4000184300E0002005B0F0BDC0460C +:10C5B00000E202009B40030070B58AB000296BD0F6 +:10C5C00018681C1C031C364D2B40062B05D0830716 +:10C5D0001ED1344B02689A421AD10239012955D82A +:10C5E00006A9FFF75FFC061C20680540062D04D154 +:10C5F000C00816F03AFA041C00E044681020069DBA +:10C6000017F026F8284B85600360C660446044E05C +:10C6100001293BD8012210420CD04410211C06A84D +:10C6200016F094FA089B0021181C221C01931EF09E +:10C6300000FE26E003A916F0E4FE002805D00399C9 +:10C64000049A194819F0F5F827E02068F5F73EFC40 +:10C65000002802D106A8102101E0411006A816F01A +:10C660005EFA2068FBF784FD041C201CFBF7CEFD5E +:10C67000002806D0F5F70EFBC1B206A816F0DCFACA +:10C68000F3E706A90848FFF799FB06E007490848C1 +:10C690001BF035FCF3F7BFFD06480AB070BDC0467D +:10C6A000070080FF80CA020048EF02005F89030094 +:10C6B00000FD020054ED020073B5041C081C01A922 +:10C6C000161CFFF7EFFB051C201C042E05D10849A2 +:10C6D000019A2B1C1AF06DFA08E006491AF09DF930 +:10C6E000201C291C019A0123FFF7FCFA73BDC046E8 +:10C6F0008D410300EB260300F7B5021C1A4B051C05 +:10C700000C1C1A401E1C062A08D10B40401A062B8E +:10C7100026D0E80816F0A9F9071C00E04768264073 +:10C72000062E03D1E00816F0A0F900E06068002FA3 +:10C7300005D0002803D0874201D0002013E0281C38 +:10C740006946FFF7AFFB01A9051C201CFFF7AAFBF8 +:10C75000009A019B011C9A42EFD1281C1EF03DFD5E +:10C7600044426041C0B2FEBD070080FF084B07B5E0 +:10C770000340062B08D0830704D103689A69054B50 +:10C780009A4201D0FFF78EFA01A9FFF78BFB0EBD8D +:10C79000070080FF79CD00000A4B13B503400C1C45 +:10C7A000062B08D0830704D103689A69064B9A4286 +:10C7B00001D0FFF777FA01A9FFF774FB019B236013 +:10C7C00016BDC046070080FF79CD0000F0B59BB0D4 +:10C7D0000B900C1C079212A810210EAA0993F3F7D4 +:10C7E0008DFE079B9C4200D3ACE221787D2909D1C4 +:10C7F000079B671C9F4202D261787D2910D0BE48FA +:10C80000BE493EE07B2904D012A816F015FA271C79 +:10C8100087E2079B671C9F4254D261787B2903D132 +:10C8200012A816F009FA7CE27D2916D0212914D02D +:10C830003D1C3A2911D02B787D2B08D0212B06D016 +:10C840003A2B04D0079B01359D42F4D140E0079B71 +:10C850009D423DD23C1C2F1C01E000252C1C3B7846 +:10C86000212B12D1079A7B1C9A4208D97E78331C5F +:10C87000723B012B03D8BB1C934208D328E09E488F +:10C880009F491BF03CFBF3F7C6FC3B1C00261A78C3 +:10C8900000273A2A00D048E25F1C5B787D2B14D039 +:10C8A0003B1C393A07998B4212D219787B2901D166 +:10C8B000013205E07D2903D1013A002A00D134E29A +:10C8C0000133EFE70026351C341C079B9F4202D33F +:10C8D00089488C49D5E7002305933B787D2B02D00E +:10C8E00085488949CDE7002C47D00023207816934E +:10C8F000F9F7A0F9211C002822D0099B1B6804939A +:10C90000002B02DD7C488149BBE716AA201C291CAC +:10C9100018F058FF209A169B013A0690934237D29E +:10C92000219A01339B009B58099A049301235B428F +:10C9300013601CE00B782E2B04D05B2B02D001314E +:10C94000A942F7D30691201C091B0122FFF76CFABC +:10C95000041C00222298211CF8F7A2F8002804D118 +:10C96000211C6B481BF0C4FA8DE743680493069BB7 +:10C97000AB4217D26748FCF7A9F9099B1B68002B4B +:10C9800002DA5D4864497CE7209A013A934202D377 +:10C990006248634975E7013321999A00525804921D +:10C9A000099A1360059B002B03D1002E00D1BAE138 +:10C9B00001E0002E12D016A8102110AAF3F79EFD58 +:10C9C000321C733A531E9A4110A8D2B20499F5F75B +:10C9D00091F8544816A9FFF7F1F9049001235B423E +:10C9E0000D931093059B002B00D1A3E0F6F740FFB9 +:10C9F000209B16A80093219B05990193229B3A1C2A +:10CA00000293099BFFF7E2FE16A816F002F9179BA6 +:10CA10000678C3180A930023041C05939E4216D07F +:10CA2000414D311C281C1EF0F1FC002800D07FE194 +:10CA300063780593002B09D0281C191C1EF0E6FC16 +:10CA4000002800D078E10590061C00E0059E2378C0 +:10CA500008932B2B05D02D2B05D00425202B05D199 +:10CA600002E0022500E00025013401E000250895E0 +:10CA70002378232B02D1133B1D4301342378302B21 +:10CA800007D1059B002B01D13D330593002E00D12A +:10CA90003036201C0A990DAA18F094FE03780690EF +:10CAA0002C2B04D10C3B1D43031C01330693069B26 +:10CAB0001B782E2B06D106980A99013010AA18F07F +:10CAC00081FE0690069B1C78002C07D01748211C7D +:10CAD0001EF09CFC002800D030E1041C069B1B7853 +:10CAE000002B02D004481249CBE616A816F041F8F4 +:10CAF000059B002B2BD121E010F80200798903005F +:10CB0000A1890300BA890300D2890300F6890300D2 +:10CB1000F0FD0200598A0300768A03006CF90200D6 +:10CB2000408A030080CA0200C08A0300C58A03004D +:10CB3000D58A0300059D2C1C2E1C08950498FFF730 +:10CB40009BF83E230593002801D1023B0593002E5C +:10CB500000D12036089B002B09D0732C02D17E48CF +:10CB60007E498EE6632C02D17B487D4989E6059B90 +:10CB70003D2B05D05E2B05D03C2B05D13B3B02E085 +:10CB8000402300E080231D430498FFF755F8002858 +:10CB90005FD0632C23D016D8472C06D8452C58D20A +:10CBA000002C27D0252C54D04CE0582C3CD0622CA3 +:10CBB00048D10D9B009502930023019603930EA884 +:10CBC000049902222EE0672C02D8652C12D340E093 +:10CBD0006F2C19D0782C27D06E2C33D10AE0049812 +:10CBE000F5F758F80D9B16A90870012200960193DD +:10CBF0000EA889E00D9B00950293002301960393F4 +:10CC00000EA804990A220DE0EB0602D580239B00B2 +:10CC10001D430D9B08220293002304990095019661 +:10CC200003930EA861330AE00D9A231C029200229E +:10CC300004990392173B009501960EA8103201F05B +:10CC400057FC6EE0049816F0C6FB4649031C4248A8 +:10CC500063E00498FFF710F8002838D0002C1FD0AC +:10CC60006E2C1DD0472C15D8452C1AD2252C27D137 +:10CC70000498F5F773F83C490DF00CFD80230D9AEC +:10CC80005B000192109A011C02922B4300960EA8A1 +:10CC9000662212E0231C653BDBB2022B10D800E0B9 +:10CCA00067240498F5F75AF80D9B221C0193109BFA +:10CCB000011C02932B1C00960EA819F02BFF30E0EC +:10CCC000049816F088FB2949031C234825E0059B9E +:10CCD0003D2B02D120482649D3E50498002C01D0F1 +:10CCE000732C15D116A9FFF757FD109B011C169A3E +:10CCF000002B00DA1092109B9A4200D916930D9BDC +:10CD0000169A009601930EA82B1C01F093FB08E0E5 +:10CD100016F061FB1749031C0F48221C04F034FB7A +:10CD2000B1E57C1C5DE5732645E605971F1CD4E53F +:10CD30000596013400268AE6023488E6069B013314 +:10CD40000693CBE60B9A12AB13CB13C21B6813608E +:10CD50000B981BB0F0BDC04610F80200EE8A03002D +:10CD60001A8B03004D8B03000000C8427E8B03002A +:10CD7000B28B0300E78B0300F0B5A1B0041C0D1CBF +:10CD80000D920A2800D0E6E1073C0692144010D12B +:10CD90001368B94A934206D1069810A90FAA18F051 +:10CDA000EBF806940BE0B54A934202D10F9410942D +:10CDB00005E00DAB0F930123109300230693109B06 +:10CDC000281C08930F9B11A90A93FFF76BF8002307 +:10CDD0000B900C93AB0705D1A94A2B689B1A5A42BA +:10CDE0005A410C9214AA18A81021F3F787FB119A44 +:10CDF000002794460B9B0B9C63440593059B9C4228 +:10CE000000D39BE12178252903D018A815F014FF41 +:10CE100092E1059B661C9E4202D39A489A4916E00D +:10CE20006178252904D118A815F006FF341C83E188 +:10CE30000025282919D1A01C061C00E001363378F2 +:10CE4000292B08D0059B9E42F8D38E488F491BF0B2 +:10CE500056F8F3F7E0F9311A0122FEF7E5FF011C5D +:10CE60000698F7F723F9051C01360023341C002629 +:10CE7000099320330793059B9C4211D223782D2BD5 +:10CE800001D12C3B06E02B2B01D1293B02E0202BCA +:10CE900002D11C3B1E430FE0232B0BD0302B05D0BF +:10CEA00000231293059B9C4208D320E04022079365 +:10CEB000164301E0102309930134DCE723782A2B81 +:10CEC0000FD1089A3B1E934202D371487149BEE7C5 +:10CED0000A9A9B009858F4F7DDFE0137129001344E +:10CEE00005E0201C059912AA18F06CFC041C012313 +:10CEF0005B421393059B9C428FD223782E2B1ED12D +:10CF0000059B601C984288D263782A2B0CD1089A22 +:10CF10003B1E9342D9D20A9A9B009858F4F7BAFE66 +:10CF200001371390023406E00023059913AA1393E6 +:10CF300018F048FC041C059B9C4200D36DE7002DB3 +:10CF400007D1089A3B1E9342BFD20A9A9B009D5874 +:10CF500001372378672B0FD8652B6AD2582B00D165 +:10CF6000D1E004D81A1C453A022A62D9DBE0632BCF +:10CF700012D0642B42D0D6E0732B07D8722B00D38B +:10CF800092E0692B3AD06F2B63D0CCE0752B35D073 +:10CF9000782B00D1B7E0C6E03F4B2B40062B05D0E5 +:10CFA000AB0714D13D4B2A689A4210D11CA9281C0A +:10CFB000FFF7F2FB1C9A011C012A02D034483849C1 +:10CFC00045E720230093129B14A801930FE0281C2F +:10CFD000FEF732FE00280ED0281CF4F75BFE20235B +:10CFE00001221CA908700093129B14A80193331C02 +:10CFF00001F020FAA0E026482A4928E703222B1C4A +:10D00000291C1340022B0AD1234B2B40062B06D0A0 +:10D01000FF23DB05E8189043F7F736FF011C079B59 +:10D0200000960193129B14A80293139B0A22039368 +:10D030001FE0281CF4F792FE079B22780093129BB6 +:10D04000011C0193139B14A80293331C19F062FD79 +:10D0500072E0099B002B02D084239B001E43291CF5 +:10D060000822079B00960193129B14A80293139B1E +:10D070000393612354E0C046BCDC020064CE02008E +:10D0800048EF020010F80200198C03002B8C0300FB +:10D0900000FD0200418C0300070080FF80CA0200EF +:10D0A000688C0300818C030016AA1CA81021F3F7DA +:10D0B00025FA23780122722B0BD000220C9B93427D +:10D0C00007D0AB0705D12B68644A9A1A51425141E7 +:10D0D0008A0016A8291CF4F70DFD139A1D9B002A3F +:10D0E00000DA1393139A9A4200D91A1C2023009352 +:10D0F000129B14A801931E99331C01F09BF91CA8E4 +:10D1000015F037FD18E0099A291C1643079A173BBA +:10D110000192129A00960292139A14A80392102276 +:10D1200001F0E6F908E00B9A4D49A41A00941A1C84 +:10D130004C4804F029F98CE601345FE6089B9F42D5 +:10D1400002D04948494982E60C9B4448002B00D153 +:10D15000474818A96EE0081CF4F7B2FC16A9061C93 +:10D16000281CFEF79FFE071C0D98072C1DD118A93F +:10D17000F4F7CEFD0025A8426DD01899A94205DC30 +:10D180003B4B0E359E4266D03A4D64E0169B1CA880 +:10D19000594315F0DBFC1E9B381C059300930121BD +:10D1A000169A189B18F03AF942E0F4F789FC864287 +:10D1B00006D10D981CA9FEF775FE1C9D05900DE08B +:10D1C000264B00259E4246D10D981CA9012216F03F +:10D1D00018F9A8423FD01C9B1D9D05931D2C06D815 +:10D1E000192C2BD2052C0DD0122C0BD032E01F2C79 +:10D1F00030D10123381C00931699059A2B1C18F086 +:10D20000F9FA22E0169B1CA8E91815F09FFC1E9B5A +:10D21000391C181C169A06931DF0EEFF169A1E9BD9 +:10D22000944606936344181C05992A1C1DF0E4FFDC +:10D23000301C1CA9FEF7C2FD051C0CE00095201C4B +:10D24000391C169A059B18F01DF90B4D002802D1C8 +:10D250000A4D00E00025281C21B0F0BD48EF020077 +:10D26000928C030010F8020000FD0200C78C03003E +:10D2700080CA020054ED020034CD020078CD0200D5 +:10D2800070B58AB0061C0C1C086804A9151CFEF7B2 +:10D2900009FE00230593049B011CC218009606A8F2 +:10D2A00005AB01940295FFF791FA06A90248FEF733 +:10D2B00085FD0AB070BDC04680CA0200F0B5071CEB +:10D2C00087B008680D1CF4F7FBFB0190012F07D90C +:10D2D0006C68022F05D0A868F4F7DCFC071C02E09C +:10D2E000444C01277F420020011C15F008FE04A9D0 +:10D2F00000902868FEF7D6FD049B051CC6183D4B20 +:10D300009C4238D1B54229D22878F8F77BFC002816 +:10D3100024D00135F6E7002F23D02C1C2078F8F715 +:10D3200071FC002802D10134B442F7D1291C621BE0 +:10D33000019818F07EFA011C0098F3F79BFCB442A8 +:10D3400055D2251C2878F8F75DFC002802D001355D +:10D35000B542F7D1FB17DB1BDB0FFF1AB542DAD35F +:10D3600045E0291C721B019818F063FA011C009813 +:10D37000F3F780FC3BE0201CF4F7A2FB019A02903B +:10D38000031C201C934201D0FEF78CFC05A9FFF77B +:10D3900003FA059B0390002B25D1174917481AF073 +:10D3A000AEFDF2F738FF019BE3189E4209D3201C23 +:10D3B0000399019A1DF011FF002803D00134002FBA +:10D3C000F1D1341C291C621B029818F032FA011C9E +:10D3D0000098F3F74FFCB44209D2059BE518FB1700 +:10D3E000DB1BDB0FFF1A059B2C1C0193E7E7009862 +:10D3F00007B0F0BD74E002004F89030010F802008E +:10D40000F0B50C1C8BB0022802D8FFF757FF7EE066 +:10D410000868F4F755FB08A9049020686668FEF7D1 +:10D4200041FD0090A068F4F735FC431C051C002169 +:10D43000181C059315F063FD364B041C9E4202D167 +:10D440003548FBF743FC301C09A9FFF7A5F9099BF8 +:10D450000690002B05D1314931481AF050FDF2F702 +:10D46000DAFE089A2F1C9446009B63440293AB009B +:10D470000393099B0193019A029B9E1A002D0BD0E6 +:10D48000009B9E4208D3301C0699019A1DF0A5FE10 +:10D49000002822D0013EF1E7E368BD005E19009A42 +:10D4A000029B04989A1A009918F0C3F93060002F73 +:10D4B00011D0059BDF1BE368BE005919181C321CF4 +:10D4C0001DF0A3FE63680021DA1BE368920098193F +:10D4D0001DF0AFFEA760201C19E0039AE368944694 +:10D4E00063440793019B0498F118029B013F9A1B28 +:10D4F000019BD21A18F09DF9079B02961860EB1752 +:10D500005B1BDB0FED1A039B043B0393B1E70BB0EE +:10D51000F0BDC04674E00200FC8C03004F8903009C +:10D5200010F8020008B50368186B00280ED0CB076E +:10D5300002D50368002B09D08B0702D54368002B66 +:10D5400004D04B0708D58368002B05D10349044854 +:10D550001AF0D5FCF2F75FFE08BDC046128D03003D +:10D56000C0F90200F0B5012189B00190FFF7DAFFA0 +:10D570008021061C490004A815F0D1FA802400235C +:10D58000069D6400009303AB0198291C221C376898 +:10D59000B847431C0ED103990B2904D1009B1848AE +:10D5A000002B21D12AE001234900194315481AF024 +:10D5B0009FFC14E0002817D0009B1B180093A0428A +:10D5C00002D2241A2D18DEE7802104A8490015F0A4 +:10D5D000F5FA051E05D10B480B4903F0D5FEF2F70D +:10D5E0001AFE80246400CEE7009B08480593337B35 +:10D5F000DB0700D4064804A9FEF7E0FB09B0F0BD44 +:10D6000074E00200C0F90200318D030080CA0200FC +:10D6100048EF0200F0B589B00091041C08680121B0 +:10D62000FFF780FF071C012C04D1009B1868FFF74F +:10D6300099FF98E0009B5868F4F72CFB051C431CED +:10D64000F3D001243B7B23426DD0041C291C04A889 +:10D6500015F065FA00230193002C62D0211C04A868 +:10D6600015F0C5FA011E04D14049414803F08CFE73 +:10D670001FE0009B3E681868221C03ABB047031CE8 +:10D68000061C013317D1211C04A815F01DFB0399BA +:10D690000B2908D1059B0093002B42D104A815F05B +:10D6A00068FA34485FE001234900194332481AF010 +:10D6B0001FFCF2F7B0FDA04202D30699059C14E0CE +:10D6C000211A04A815F000FB002EF6D129E0101C49 +:10D6D0001E3398431D3BC0280ED1019A9B18A342CC +:10D6E0001BD8013DA34216D20193019BCA5C0123C2 +:10D6F00050B20028F1DAEAE7101C0D3398430C3BD6 +:10D70000E028EAD004339A43131CF03B5A425A41B2 +:10D7100005239B1AE1E72C1C9DE7013B5B191C1BB1 +:10D720009AE716481CE0291C04A815F00FFA009B84 +:10D730002A1C1868069903AB3D68A847431C09D109 +:10D7400004A815F016FA03990A480B290BD04900D2 +:10D750002143ABE73B7B05900848234200D10848B2 +:10D7600004A9FEF72BFB09B0F0BDC0463F8D0300B6 +:10D7700090F8020074E00200C0F9020080CA0200C2 +:10D7800048EF02007FB50C1C061C08680121FFF75A +:10D79000C9FE0222051C01A96068F4F73BFC029A4D +:10D7A000022E07D9A068F4F775FA029B021E9A426E +:10D7B00000D91A1C6B462D6820680199A847431CA4 +:10D7C0000BD1009907480B290AD0012349001943BE +:10D7D00005481AF08DFBF2F71EFD012340001843A7 +:10D7E00004B070BD74E00200C0F90200F0B589B069 +:10D7F0000191041C08680121FFF794FE061C04A88F +:10D80000012C08D9019B5B685C10631C03D0211CB0 +:10D8100015F085F913E00124102115F080F9644218 +:10D820000DE0019B391C1868012203AB3568A8473D +:10D83000431C11D0002823D03B780A2B2AD0631C2C +:10D8400023D104A8012115F0D2F9071EE9D1164908 +:10D85000164803F099FD11E003990B2908D1059BA7 +:10D860000193012B0CD104A815F083F9104819E09D +:10D870000123490019430F481AF03AFBF2F7CBFC99 +:10D8800004A8012115F020FA04E0631E002C01D049 +:10D890001C1CD6E7337B0848DB0700D4074804A9E3 +:10D8A000FEF78CFA09B0F0BD3F8D030090F802003E +:10D8B00074E00200C0F9020080CA020048EF0200D2 +:10D8C000F7B50F1C0221041C161CFFF72BFE01AB41 +:10D8D0004568391C201C321CA847431C0BD10199F8 +:10D8E00007480B290AD001234900194305481AF0BB +:10D8F000FFFAF2F790FC012340001843FEBDC0463A +:10D9000074E00200C0F9020070B5051C00290CDBB0 +:10D91000032905D8081C00240CF080F80808050528 +:10D9200001238C1E9C43FE2601E00024F226B52133 +:10D9300009023143281C18F033F9002C04D00449A3 +:10D94000281C214318F02CF9EE612C6270BDC046F2 +:10D9500080B0000008B50B1C02495A6819F029F97B +:10D9600008BDC0465B830300F0B50E1C496885B056 +:10D97000041C151C002901D0002A04D1201C311CD4 +:10D9800018F0FFFA58E00F3213095918009318F0F5 +:10D9900068FA0F22A368B16870682A4000D110327B +:10D9A000009D264F2D18EF197F00DB190393234BA1 +:10D9B0000190C3185B00CB189C46039B0293002385 +:10D9C00001991027002913D061460988BF1A0B431B +:10D9D000191CF9400F1C02991B040F800199013991 +:10D9E0000191029902390291022149428C44E7E7F0 +:10D9F000BF1AFB4003994000081A104903808C4667 +:10DA0000009B01995F00C71B023763445A00381C12 +:10DA10001DF00FFC002D06D06B00023BFB5A002BC3 +:10DA200001D1013DF6E70121656033780B401A1CF6 +:10DA300023788B431343237005B0F0BDFFFFFF7FB6 +:10DA4000F0B54B68151C526887B0061C0C1C93423D +:10DA500001D22C1C0D1C0123227861681A4201D1CD +:10DA60002A7813405918301C18F0FBF9B36829784C +:10DA70009C46A3680F1C0193636820780093AB68F1 +:10DA8000474002936B68059301231A1C1F408B4388 +:10DA90000493009B8243591E6346101C03934B1C46 +:10DAA00027D0019B1F4A1B889B181818009A059BBA +:10DAB0009B1A5B188B4207D8029B1A4A1B889B183B +:10DAC000029A0232029200E0164B049A0139D318EE +:10DAD0001A1C424092B2D719039A1B0C0493131CD0 +:10DAE00002330393019B17800233000C3F0C019318 +:10DAF000D5E7009B59006144002F02D001230B8021 +:10DB00000231604618F098F90121706022782B7874 +:10DB100053400B401A1C33788B431343337007B0C8 +:10DB2000F0BDC046FFFF0000F0B55C6891B0002C6E +:10DB300002D144604C6049E1051C0B9353680E1CF4 +:10DB4000591C0692019318F08CF9069B00215B6822 +:10DB5000A8685A1C520001931DF06BFB00236B60F8 +:10DB6000069B301C5B68591C019318F07AF9301C35 +:10DB7000069918F006FAB368776802930B9B9B68C6 +:10DB800003930B9B5B680593AB680893059B9F42CF +:10DB90000ED310D80298391C039A18F0A8F900285F +:10DBA00004D10123089A7060138002E0002802DA91 +:10DBB00000236B60FFE00021059B854A9A18039BB8 +:10DBC00052009B1804931B88019119B2002905DBB0 +:10DBD00001995B0001319BB289B2F5E7931C0C936C +:10DBE0000C9A039B9B1800229C46039B63450BD217 +:10DBF000198801980C1C844022431A801022121AA2 +:10DC0000114102338AB2F1E700227C00029BA01C82 +:10DC10001A531B1801370993029B77600792099AE0 +:10DC200093420FD21988019A081C9040021C079851 +:10DC300010431022188001980233121A11418AB23F +:10DC40000792ECE7049B1B880F93029B1C19059B12 +:10DC5000FF1A5F4B6F60FF18089B7F00DB19099369 +:10DC60007368059A0A93934260D9A31E20880E9385 +:10DC70001B88000418430F990BF0EEFE0C9B00224A +:10DC8000E31A191C039F07900D93A1421AD207981B +:10DC90003B88434308888446834202D2C01A90429C +:10DCA0000AD860461B1A9A1853420B80130C92B282 +:10DCB000501E8241D21802E0821A0A8000220231EC +:10DCC0000237E2E723889A4208D3D31A5A42190C42 +:10DCD0009BB222805A1E93415A180BE09A1A228056 +:10DCE000002207E02388C018079B2080013B000C1E +:10DCF000121A0793002A0ED00020039F0D99A1420B +:10DD0000F0D20B889C463B88023763441818088081 +:10DD1000000C0231F3E76A46099B928B023B5A8062 +:10DD200009930A9B0E9C013B736099E70023049AB8 +:10DD300003998A420FD3049A01981288111C014159 +:10DD40000B4304990B8010231B1A9A4093B2049A38 +:10DD5000023A0492EBE71E4A0A9B9446029A6344F5 +:10DD60005B00D318002202998B4214D31988019CBE +:10DD7000081C204102431A801022121B9140023BD2 +:10DD80008AB2F0E7124A08999A185200525A002AA9 +:10DD90000ED1013B6B606B68002BF3D108E00C4A9D +:10DDA00002999A185200525A002A04D1013B73601A +:10DDB0007368002BF3D101210B9B1A78069B1B780B +:10DDC0005A400A4202D02B780B432B7011B0F0BDA1 +:10DDD000FFFFFF7F436830B55A0000238468A21814 +:10DDE000944207D2084D023AAB420AD815881B0468 +:10DDF0002B43F5E70278D20700D55B420B60012088 +:10DE000000E0002030BDC046FF7F0000F8B58D1E49 +:10DE100000241E2D16D81F1C40680B4B0001595CB6 +:10DE2000151C0BF019FE061CA74204D0013003217B +:10DE30000BF012FE041C281E01D01DF0FFFA033661 +:10DE400034192418201CF8BD4D8D0300064B0139F0 +:10DE5000C9B21970411880310B78044A1370044A12 +:10DE6000D25C044B1A707047FD2D0020FE2D00205F +:10DE70009C8D0300FF2D0020064B0131C9B21970A3 +:10DE8000411880310B78044A1370044AD25C044B69 +:10DE90001A707047FD2D0020FE2D00209C8D030080 +:10DEA000FF2D0020074B984204D9074B1818411842 +:10DEB000064B03E0064B1818064B4118C9180878A2 +:10DEC0007047C046A4920000228E03005B6DFFFFE6 +:10DED000E18F03000083FFFF031C20228033F0B595 +:10DEE0001A70CB4B1F3A1A70041C002389B0591CBE +:10DEF000E05C7F23CAB203406F2B01D95F2302E0AD +:10DF00005F2B01D94F230340A21880321370CBB28C +:10DF10007F2BECD1BF4A1370231C1B22FF331A70D6 +:10DF2000E432171C531CDBB203936B46B8491B7BCE +:10DF3000B94D0B70039B2E1CE31880331B782B709C +:10DF40005B2B06D19B227B1CDBB20B702A70E25448 +:10DF50002DE02E2B11D10232D2B20A70A2188032DB +:10DF60001278AC480270AD48825CD20705D47A1CA6 +:10DF7000D7B22B70E355039AD4E7A64A1370A74A89 +:10DF8000D05C820727D4002813D120220B782A7076 +:10DF9000E31880331A707B1CDFB20F70782F01D822 +:10DFA000E255E8E79B23E3556B461B7B337001206A +:10DFB00035E27F229043984A107003D1984A994BDA +:10DFC0001A602CE2413B984ADBB29849D25CCB5CA8 +:10DFD0001202134300E0964B0593059B0093009BB0 +:10DFE000002101339BB2181C0093FFF75BFF03066F +:10DFF000F5D5009B05930123029300980299FFF742 +:10E0000051FF029B0133DBB22828F5D1029D013577 +:10E01000EBB20098191C0193FFF744FF019D2928DA +:10E02000F5D10135EBB2191C00980693FFF73AFFC2 +:10E030007F23069D18403D28F3D16A46764B127B1C +:10E040001870734B039E1A70029B04965D1C714BF3 +:10E05000EDB21D70A31980331B780098291C07931B +:10E06000FFF720FF079B9842B7D10135019A731C37 +:10E07000EDB2DBB2954202D01E1C0493EAE7644B7A +:10E08000039D1E706A46029B0098013BDBB202931F +:10E09000127A604B02991A70FFF704FF5E4E030676 +:10E0A00000D590E07F225A4B18705C4B1B5C934369 +:10E0B000337009D0564B013DEDB21D7063198033AA +:10E0C0001B788342DED088E73070202812D02328C6 +:10E0D00019D02E281FD0262825D0402841D05E28D0 +:10E0E00049D02B2852D03A285FD0524A4D4B0020BD +:10E0F0001A6094E1201C291CFFF7A8FE7F223378C8 +:10E10000934340D069E7201C291CFFF79FFE33781A +:10E110005B0638D461E7201C291CFFF797FE337893 +:10E120001B0730D459E7201C291CFFF78FFE102253 +:10E1300033781340337026D1354B1B78E11880318A +:10E1400009783170482900D047E7013B3049DBB2FC +:10E150000B70E31880331B789343432B00D03CE7CC +:10E1600011E0201C291CFFF771FE042332781340B4 +:10E17000337008D131E7201C291CFFF767FE337884 +:10E180009B0600D429E7224B1D787BE7204B013DFD +:10E19000EDB21D70651980352B78452BF3D0102218 +:10E1A0009343492B00D018E7EDE7291C201CFFF70B +:10E1B0004DFE2023184A11780B40137000D161E7FF +:10E1C000134B1D78F1E7049D019B124E0133DBB226 +:10E1D00001936B461B79069A3370019B934200D1E1 +:10E1E00005E1191C0098FFF75DFE7F22084B0A4EDF +:10E1F00018700A4B1B5C934333701DD0044B0135E0 +:10E20000EDB21D70631980331B788342DCD0E4E6E5 +:10E21000FD2D0020FE2D0020FF2D00209C8D0300F1 +:10E22000888D0300040000206E8D0300088E03001B +:10E23000A5920000928D0300307020286ED0232814 +:10E2400075D02E287BD0262800D180E0402800D130 +:10E250009BE05E2800D1A2E02B2800D1AAE03A285A +:10E2600000D1B6E0252800D03FE76B1C6D4ADBB239 +:10E270001370E31880331B786B490B70452B37D133 +:10E28000A81CC0B2231880331B78684E3370684EC8 +:10E29000F65CF60900D18AE010700B70522B00D1A9 +:10E2A00085E0532B00D182E0442B00D17FE04C2B42 +:10E2B00008D10335EDB21570651980352B78592BCF +:10E2C00075D08AE6462B00D087E6EB1CDBB21370D4 +:10E2D000E31880331B780B70552B00D07DE6043596 +:10E2E000EDB21570651980352B784C2B5FD074E634 +:10E2F000492B00D071E6AB1CDBB21370E3188033FE +:10E300001B780B704E2B00D067E60335EDB215700D +:10E31000651980352B78472B49D05EE6201C291CD7 +:10E32000FFF7AAFD7F223378934340D055E6201CA7 +:10E33000291CFFF7A1FD33785B0638D44DE6201C7D +:10E34000291CFFF799FD33781B0730D445E6201CC4 +:10E35000291CFFF791FD102233781340337026D12A +:10E36000304B1B78E118803109783170482900D092 +:10E3700033E601332B49DBB20B70E31880331B7893 +:10E380009343432B00D028E611E0201C291CFFF703 +:10E3900073FD042332781340337008D11DE6201C2E +:10E3A000291CFFF769FD33789B0600D415E61D4B49 +:10E3B0001D7809E71B4B0135EDB21D7065198035DD +:10E3C0002B78452BF3D010229343492B00D004E641 +:10E3D000EDE7291C201CFFF74FFD2023124A11787E +:10E3E0000B40137000D1EFE60E4B1D78F1E7019D55 +:10E3F0000098291CFFF756FD7F2303403D2B02D0D8 +:10E400007A1CD7B2E3556A1CD2B2010605D5064A7A +:10E4100035701370049B0393ADE5151CE8E709B054 +:10E42000F0BDC046FD2D0020FF2D0020FE2D002058 +:10E430009C8D0300F0B587B0039205910D9A039966 +:10E44000051C541A0CAA12782021101C884305D0F0 +:10E45000302A05D00CAA0292012204E0224A00E0F0 +:10E46000224A02921022019280221A4005D0E30F24 +:10E470001B195B10E71A1C1C03E001210B4012D191 +:10E480001F1C002C12DD261C019B04969E4200DD01 +:10E4900004936B6828680299049A9847049BF61ABB +:10E4A000002EF1DC03E0271C141C00E00024039B79 +:10E4B000002B06D01A1C28686B6805999847039BA7 +:10E4C000E418002F0DDDE419019B3E1E9E4200DD85 +:10E4D0001E1C28680299321C6B689847BF1B002FCE +:10E4E000F2DC201C07B0F0BDF09F0300DF9F0300AB +:10E4F000F0B593B01F1C18AB10CB05901B780D1C0A +:10E50000161C0793CB070BD48B0703D1814B0A68EA +:10E510009A4205D0281CF3F7BDFB012540000543B6 +:10E5200081231C4209D1079B302B06D11A9B1B9AD1 +:10E53000934200DA1A9200231B93281C15F0B7FBB4 +:10E540000AAA131C00280DDDA30703D52B23137083 +:10E55000123B05E0131C620704D520221A70192310 +:10E5600004AA9B18E20618D5022E03D130221A7095 +:10E570007A1C10E0082E08D130221A70A20501D4AE +:10E5800001330AE03A1C0E3205E0102E05D130228C +:10E590001A703A1C17325A70023300220AA91A70F4 +:10E5A0005B1A0693A30600D52C320EAB0B931023F7 +:10E5B0000C9300231B990D93012901DD40210C438D +:10E5C00004A9CB75FBB20096610614D50021029315 +:10E5D000019103922B1C0BA80CA90DAAF7F7AAFD19 +:10E5E0000378061C2D2B15D104AAD3750D9B01367B +:10E5F000013B0D930EE00AA90191029303922B1C9B +:10E600000BA80CA90DAAF7F795FD1B9B061C012B67 +:10E610004BDC02E01B9B012B6ADC00273D1C6306E0 +:10E6200021D5172104ABC9180B78002B0AD0002381 +:10E630000122009301920598FFF7FCFE1A9B2D180A +:10E64000013B1A93069B002B0DD00023012200935F +:10E6500001920598069A0AA9FFF7ECFE1A9B069A02 +:10E660002D189B1A1A931B9B012B00DD1A93079BF5 +:10E67000059800931A9B311C01930D9A231CFFF7F8 +:10E68000D9FE2D18002F09D02023002200930197D6 +:10E6900005982149131CFFF7CDFE2D180B980EABE2 +:10E6A000984234D014F0FBFF31E00D9A1B9B93424B +:10E6B0001CDB1A9A934206DA0127D51A274004D0A8 +:10E6C0002F1C002501E000273D1C01239C43002D49 +:10E6D00009D000221F330093019505980E49131CA1 +:10E6E000FFF7A8FE051C3023079398E7131CE0E70B +:10E6F0000D9A1B9B934200DA131C172204A952188F +:10E700001278511E8A419B18069A9B18D1E7281C43 +:10E7100013B0F0BD30D30200BF740300F0B5071C86 +:10E7200000248DB005920D1C2B78002B09D18D4251 +:10E730000BD96E1A3868321C7B689847A419291CBB +:10E7400003E0252BF3D00135EEE70B78002B00D149 +:10E7500034E120230026013109930B78002B12D0DD +:10E760002D2B01D12C3B02E02B2B02D1293B1E4348 +:10E770000FE0202B01D11C3BF9E7212B01D1193BE4 +:10E78000F5E7302B02D00023069304E040220993E2 +:10E7900016430131E1E70B781A1C303A092A07D8F1 +:10E7A0000A22069801314243D318303B0693F2E720 +:10E7B00008912E2B27D14B782A2B05D00B1C013327 +:10E7C0000893002307930CE0089B02330893059BF2 +:10E7D0001D1D1B680793DB43079ADB171A4007923E +:10E7E00015E0089B1B781A1C303A092A09D80A221E +:10E7F00007994A43D318303B0793089B013308938A +:10E80000EFE7059D03E00123059D5B420793089B0D +:10E810001B786C3B59425941089B5B1808931B7845 +:10E820000493002B00D1C9E0642B00D187E013D8FA +:10E83000502B00D191E004D8453B022B00D89CE03E +:10E84000B2E0049B622B1AD032D8582B00D0ABE038 +:10E850002B1D0593412383E0049B712B34D005D8F5 +:10E86000672B00D889E0702B77D09DE0049B752B37 +:10E8700058D0782B71D0732B00D095E036E02B1D4B +:10E8800005932B68002B07D0099B381C0093069B2F +:10E890004C490193042206E0381C0522099B4A4991 +:10E8A0000093069B0193331CFFF7C4FD241882E0FC +:10E8B0002B1D05932B680BA90B70099B381C00932B +:10E8C000069B01220193EEE72B1D0BA928680593F7 +:10E8D00014F0DAF8079B011C013301D10B9B07935D +:10E8E000099B381C0093069B019311E02B1D2D689A +:10E8F0000593002D0ED0079B013303D1281C1CF07B +:10E900009DFD0790381C291C099B0093069B0193D1 +:10E91000079AC8E7099B381C0093069B2B49019373 +:10E920000622C0E72B1D059361230093099B0196E6 +:10E930000293069B381C0393296800220BE02B1DD1 +:10E9400005936123381C01220093099B01960293D1 +:10E95000069B039329680A230CE02B1D0593612372 +:10E960000093099B381C0293069B002203931023FB +:10E970000196296818F05FF898E7072307359D434B +:10E980002B1C28686968083305930EF023F8099B4F +:10E99000011C0093069B381C0193079B049A029369 +:10E9A000331C18F0B7F881E73868089901227B68B2 +:10E9B00098470134059508990131B4E6201C0DB043 +:10E9C000F0BDC046CD9F0300D29F0300D89F030037 +:10E9D00008B50B1C4179021C012904D1C06A191C1D +:10E9E00016F04FFA04E0006B0249D26A16F085FA7D +:10E9F00008BDC04628D7020008B50B1C4179021C8F +:10EA0000012904D1C06A191C16F05BFA04E0006BFE +:10EA10000249D26A16F071FA08BDC04618D7020042 +:10EA200008B50B1C4179021C012904D1C06A191CCC +:10EA300016F047FA04E0006B0249D26A16F05DFA5C +:10EA400008BDC04638D7020008B53F22014B18F078 +:10EA50003FF908BDE176020008B59122014B18F09C +:10EA600037F908BD05FC0000F7B5041CC579868A96 +:10EA70000F1CC18A00200191E071A082E082111C6C +:10EA8000201C1A1C0F4B18F023F9A368002B18D177 +:10EA9000E18A002908D0A38A002B05D1206B15F04C +:10EAA000EAFD206B15F079FCA38AE28A201C391C50 +:10EAB00018F0BEF86B1E9D416B469B88E571A682DF +:10EAC000E382F7BD09F8000038B58368002B0BD14D +:10EAD000041C0D1C0548111C19F011FAA060201C23 +:10EAE000291C0C3018F059F938BDC04678FD0200D9 +:10EAF000F0B58DB06B4601921B79041C4371012364 +:10EB0000E16203610B780D1C012B02D000219B4AAE +:10EB100046E0019B012B07D9836B01991E68231CDA +:10EB2000406B2A1C0833B047AB68181C049314F0E0 +:10EB3000C6FB63790490032B0FD109900C2109A81F +:10EB400014F0D6FBA36B021C9B68606B0999984775 +:10EB5000A3686883002B00D009E1049814F0AFFB90 +:10EB600004900378011C002B23D00A3B0F2B1CD8E8 +:10EB700009A918F031F8099B772B14D004D8032287 +:10EB80000292312B17D008E0812B04D0022202928E +:10EB9000992B10D001E001230CE0201C0499784A45 +:10EBA000FFF792FFE8E0002304E0201C754AFFF71E +:10EBB0008BFF02230293049814F081FB5A210490E6 +:10EBC00004A814F095FB049D0390039B9D4200D183 +:10EBD000C2E004952B78432B00D1B8E0392B03D049 +:10EBE000201C0499684ADBE7281C05A914F071FB76 +:10EBF0000378061C912BF3D114F061FB059B98421E +:10EC0000EED1301C05A914F064FB0378071C0A3B05 +:10EC10000F2BE5D814F053FB059B061E9E42DFD058 +:10EC20000378A02BDCD114F04AFB059B9842D7D186 +:10EC300006A9381C17F0D0FF301C14F045FB9C21AE +:10EC4000079007A814F054FB011C079814F02BFB45 +:10EC5000069B061C2E2B1FD1012804D10798037890 +:10EC60000A3B0F2B03D9201C0499484A98E72669D0 +:10EC7000731C2361019B012B66D909A917F0ACFF16 +:10EC8000A36B606BDB68311C099A984700285BD145 +:10EC9000201C04993E4A83E72F2B15D1012803D16C +:10ECA00007980378032B03D0201C0499394A77E78F +:10ECB000019B012B48D9A36B676B1E6914F0DFFA27 +:10ECC000011C381CB0473FE0302B27D1012803D965 +:10ECD00007980378032B03D0201C04992E4A5FE782 +:10ECE000019B012B30D908A914F0BAFA012707902B +:10ECF00007980378032B03D0201C0499274A4FE779 +:10ED000009A914F0ADFAA36B07905B69606B0899D1 +:10ED1000099A01379847B742EAD115E0019B012BC8 +:10ED200012D9032800D95BE7079B181C099314F03C +:10ED3000C6FA0A9014F0C3FAA36B0B909F69606B3C +:10ED40000699321C09ABB847A368002B0FD1281CC9 +:10ED500014F0B5FA051C38E76379012B04D9A36BCD +:10ED6000606B5B6802999847A368002B04D0201C55 +:10ED700004990C3018F011F80DB0F0BD0CA0030090 +:10ED800030A003003DA0030065A0030088A003009D +:10ED9000A4A00300B4A00300D0A00300F5A00300CA +:10EDA00008B5024AFFF790FE08BDC04617A1030050 +:10EDB00030B50B7885B04C1C002B7AD00C1C051C90 +:10EDC000032B09D1081C03A914F04AFA0399041C67 +:10EDD000286B15F07BFA6CE0012B07D149780234DF +:10EDE000052966D0006BF7F73BFE62E0042B07D1E4 +:10EDF0008978637809021943006B15F0ADFA16E0C3 +:10EE0000052B19D14379042B02D0006B2A490CE061 +:10EE100088784B780002184303A913F035FE039954 +:10EE20002D6BFDF719F8011C281C15F0A1FA201C08 +:10EE300014F045FA041C3CE01A1C0A3A081C0F2A7C +:10EE400008D803A917F0C8FE0399041C281CFFF773 +:10EE5000BFFD2EE0082B0BD103A914F0F7F9039B9B +:10EE60002A6A9B00041C9958286B15F081FA20E04F +:10EE700002AA03AB01A914F053FA041C0299286BEF +:10EE8000F7F7A4FD019B0D4A9B009B58281C211CF1 +:10EE9000002B03D10A4AFFF717FE09E0039A9847AF +:10EEA000AB68002B04D0EB68002B01D1029BEB6018 +:10EEB000039C201C05B030BD74E0020018F0020075 +:10EEC00034A10300F0B587B005930B1C141C5A1E27 +:10EED00093410091DBB2061C0599201C019300258B +:10EEE00014F0E1F9019B0290AB4209D0009B1B7822 +:10EEF000842B05D1291C306B029A15F03AFC009D39 +:10EF0000271C029B013B0493019B0393059B9F429B +:10EF10001CD03B78842B0ED1002D06D1306B039989 +:10EF2000049A15F026FC3D1C05E0301C391C214AD2 +:10EF3000FFF7CAFD3BE0381C14F0C1F9039B071C26 +:10EF400001330393049B013B0493DFE7002D07D1BA +:10EF5000019A029B94466344191C306B15F0FDFB2B +:10EF6000019B002B1CD0009BAB4205D1281C14F048 +:10EF7000ABF9011C301C01E0301C0099002200F0AC +:10EF80001BF80DE0AC420FD1201C14F09DF9011CC0 +:10EF9000301C002200F010F8201C14F090F9041C22 +:10EFA000059B9C42EED102E0301C211CF1E707B02A +:10EFB000F0BDC0464CA10300F0B50B78171C1A1C1D +:10EFC0000A3A85B0041C0D1C0F2A0FD8081C03A98F +:10EFD00017F002FE201C0399002F01D0022F02D14E +:10EFE000FFF70AFDE1E0FFF7F3FCDEE0192B01D8A3 +:10EFF0006F4AD8E01A3B7C2B00D183E004D8252B44 +:10F0000076D0772B06D0CBE07E2B00D188E0912BF9 +:10F010006ED0C5E0081C02A914F05BF9061C022F93 +:10F0200003D0201C311CFFF7C3FE301C14F047F93D +:10F030000299061C17F0C8FD002800D0B0E0337814 +:10F04000922B14D1301C03A914F043F9061C301C78 +:10F0500014F035F9039A0190904208D2022F01D1A1 +:10F06000019EF4E7201C311CFFF7A2FEF8E733787D +:10F07000A12B19D1022F04D1206B15F013FA206BAC +:10F080000FE0301C14F020F9011C201CFFF790FE4B +:10F09000206B012F05D115F0D9F9206B15F0A9F9D6 +:10F0A0001DE015F0BEF91AE0A22B79D1301C14F046 +:10F0B0000BF903A917F090FD012F07D1206B15F074 +:10F0C000BBF9206B039915F072F908E0022F02D109 +:10F0D000206B15F0D0F9206B039915F095F9301CD1 +:10F0E00014F0EDF8029917F06FFD00285DD157E09C +:10F0F000002F51D103A9281C14F0EBF8391C021C75 +:10F10000201C3CE0081C03A914F0E3F80399061C3A +:10F1100017F05AFD002843D1002F3DD1351C17E0D0 +:10F12000002F39D1081C03A914F0D3F80399051C4A +:10F1300017F04AFD031E04D0201C391C3A1C3B1C4E +:10F1400027E02A789A2A03D0201C291C1A1C20E0C8 +:10F1500003A9281C14F0BDF8061C14F0B0F80378BD +:10F160009D2B04D10022201C311C131C11E09E2B6E +:10F1700007D103A914F0ADF8311C021C201C039B1D +:10F1800007E0BE2B0CD014F09AF80021031C321CAF +:10F19000201CFFF797FE08E0201C291C054A02E00E +:10F1A000201C291C044AFFF78FFC05B0F0BDC046A7 +:10F1B00066A1030099A103007EA10300F0B50B78BE +:10F1C00091B00A3B041C019105920F2B00D9ECE091 +:10F1D000081C14F074F80378912B00D0E5E0019836 +:10F1E00014F06DF80DA914F074F8037842780A3B16 +:10F1F0001B021343AD2B00D0D7E014F060F8037866 +:10F20000051CA02B00D0D0E014F09EF8002800D000 +:10F21000CBE0281C14F053F80D9B984200D0C4E0BA +:10F22000281C14F051F89C210E900EA814F060F8E0 +:10F230000E9B051C0293012302980F9314F03FF8D4 +:10F24000061E0E90AE4210D014F039F80E90A8426F +:10F250000ED00378032B00D0A7E00FA914F000F81C +:10F260000E90A84200D0A0E002E07A4B029E0293EA +:10F27000029B1B784833DBB2022B00D895E0337831 +:10F280004833DBB2022B00D88FE00D9B181C04938F +:10F2900014F015F8059A2769831A5A1E9341021C27 +:10F2A0005B421A400F9B03920593238B278309939C +:10F2B000638B0A93E38B0B937B1C0693BB1C079316 +:10F2C0006B461B8B6383A38BE383FB1C08933B1D63 +:10F2D00023613578033D6B1E9D41EDB2002D03D0B7 +:10F2E000201C311CFFF764FD0299201CFFF760FD14 +:10F2F000206B089915F0EBF80799206B14F0B2FF1A +:10F30000206B15F099F80022201C0199FFF754FE9C +:10F310000499201CFFF74CFD206B069914F0A2FF06 +:10F32000206B059914F0D2FF206B122115F080F9A3 +:10F33000206B089914F096FF206B002D05D015F076 +:10F3400085F8206B15F097F805E015F075F8201C8E +:10F35000311CFFF72DFD059B206B1921002B00DAD6 +:10F360001A2115F065F9206B0121079A15F0BBF8F9 +:10F370006B469B8C23836B461B8D63836B469B8DF7 +:10F38000E383039B002B03D0201C191CFFF710FD07 +:10F39000206B391C14F066FF206B15F061F8002D0E +:10F3A00056D0206B15F05CF852E0238B256903934F +:10F3B000638B6E1C0493E38B66830693AB1C0293F2 +:10F3C000A38B0198E383244B2B432383EB1C236102 +:10F3D00013F075FF011C201CFFF7EAFC071C206BD3 +:10F3E00015F0D2F8206B311C14F03CFF206B029911 +:10F3F00015F0D4F8201C01990022FFF7DDFD391C1F +:10F40000201CFFF7D5FC071C206B14F022FF0028FE +:10F4100003D1206B311C15F05AF8206B029914F0BF +:10F4200021FF206B15F0C6F86B469B8923836B4642 +:10F430001B8A63836B461B8BE383059B9F4203D030 +:10F44000201C391CFFF7B4FC206B291C14F00AFFA8 +:10F4500011B0F0BDE04003000080FFFFF0B5171CC5 +:10F4600085B0041C081C0D1C13F029FF391C061C58 +:10F4700017F0AAFB019000281CD02379201C002B38 +:10F4800011D0E36A1E78002E0DD11321FFF7A0FAE8 +:10F49000291C201CFFF78CFC206B0121321C331C23 +:10F4A00015F0A6F902E0291CFFF782FC206B14F08E +:10F4B000D7FF58E033783B2B1BD1291C201C01229D +:10F4C000FFF77AFD301C13F0FFFE4378811C4E3BA2 +:10F4D000DBB218260A2B01D8244AD65C201CFFF781 +:10F4E00067FC206B311C15F0A3F8201C291C02229C +:10F4F00037E03C2B2ED1301C03A913F0EAFE061C8A +:10F50000071C039B9F4205D0381C13F0D8FE0197BF +:10F51000071CF6E70199201CFFF74AFC206B14F04A +:10F520008BFF201C291C0022FFF746FD019B9E42F9 +:10F5300019D0301C13F0C3FE019B051E9D4202D062 +:10F54000206B14F079FF311C201C0022FFF734FDE2 +:10F550002E1CEBE7311C201CFFF72AFC201C291C69 +:10F56000019AFFF729FD05B0F0BDC04601A00300D8 +:10F57000F0B589B0041C0D1C059104921F1C0029D4 +:10F5800024D18379002B27D0C36A02911B78012BE9 +:10F5900023D10521FFF71CFAE26A108D854211DAAA +:10F5A000D16AEB00CB1801215E780E4208D05A8850 +:10F5B000206B14F0CEFD0022206B0221131C97E07B +:10F5C0000135EBE7201C00214B4A22E005A89C21D5 +:10F5D00013F08EFE029000E0029300231E1C059D96 +:10F5E00000930393019308E0281C1E4313F06CFE64 +:10F5F0000390281C13F063FE051C029B9D4254D00F +:10F600002B78B82B08D1B73B1E42EDD0201C291C0B +:10F610003A4AFFF759FA6DE0B92B0CD1B73B1E42BD +:10F6200003D0201C291C364AF3E7281C1E4313F084 +:10F630004BFE0090DDE7BA2B2BD1281C13F044FEC3 +:10F64000051C13F03CFE0378BE2B09D1201C291C9D +:10F65000062217F0DFFB281C013713F030FEC9E744 +:10F660002B780A3B0F2B03D9201C291C254AD0E7F5 +:10F67000281C07A917F0B0FA051C0799206B14F095 +:10F680006BFE291C201CFFF793FB019B051C01331B +:10F69000A8E7019B201C291C002B01D01A4AB8E7BF +:10F6A000FFF786FB0137051CA7E7002E15D0039B4B +:10F6B000002B03D1206B14F070FE03E0201C039993 +:10F6C000FFF776FB009B002B03D1206B14F065FE47 +:10F6D00003E0201C0099FFF76BFB049B206B391C97 +:10F6E000019A002B03D0331C15F08CF802E0331C78 +:10F6F00015F07EF809B0F0BDC5A10300E3A1030039 +:10F70000FAA1030012A2030033A20300F0B589B0EE +:10F71000041C039103A8072113F0EAFD0027E36A04 +:10F7200001905E7E0398019B98424AD005A913F090 +:10F73000D0FD4021039003A813F0DAFD06A9051CB3 +:10F74000039817F049FA069B02902A2B19D1A84278 +:10F750000DD2029813F0B3FDA84208D1029807A970 +:10F7600017F03AFA079B2B2B07D02D2B07D0201C24 +:10F770000021244AFFF7A8F920E001261EE0042614 +:10F780001CE0201C0399FFF713FB0137039003983B +:10F79000A84208D007A917F01FFA07990390206B19 +:10F7A00014F005FEF3E7281C059917F00DFA002860 +:10F7B00004D1A071291C201CFFF7FAFA059B0393C2 +:10F7C000B0E7181C13F080FD019B03901B78011C0F +:10F7D000321C201C242B02D117F0B3FA01E017F0E1 +:10F7E0002FFD051C013F06D30022206B0121131CB5 +:10F7F00014F0FEFFF6E7201C291CFFF7FDF809B006 +:10F80000F0BDC04655A20300F7B50A780824131CC2 +:10F81000293BA343DBB2002B02D10133C37168E063 +:10F82000131C2A3BA343DBB2002B62D0131C0A3B00 +:10F830000E1C041C0F2B1DD9081C282A13D101A94A +:10F8400013F047FD071C13F03AFD019B0025984279 +:10F8500012D013F034FD019B051CC31A5A1E9341AC +:10F860005B421D4008E013F02FFD071C13F027FD3D +:10F87000051C01E00F1C0025381C01A917F0ACF98C +:10F88000E379002D02D02A78002A0AD1002B30D14A +:10F89000E38A002B2DD0201C311C164AFFF714F9E7 +:10F8A00027E0002B1ED0A38A01339BB2A382012B39 +:10F8B0000CD1E18A206B002902D014F0DCFE01E0BB +:10F8C00014F06BFD206B002114F0FCFE291C201CA1 +:10F8D000FFF76EFA206B019914F03EFD206B14F0D7 +:10F8E000FDFE06E0E38A201C0133E382291CFFF7BA +:10F8F0005FFAF7BD73A20300F0B5041C0E1C056986 +:10F9000087B003936B1C0293AB1C0361291C006B33 +:10F91000171C14F016FE201C17F066F9311C201C71 +:10F92000FFF746FA206B14F04BFE206B029914F09F +:10F93000CEFD206B291C14F095FC206B14F0A7FF62 +:10F940002669731C2361039B9F4200D191E0381C00 +:10F9500013F0BAFC002305932369051C01930133BE +:10F9600023610378002B0FD113F0A9FC13F0A7FC3F +:10F97000039B984223D0201C291C4B4AFFF7A4F874 +:10F98000A38B013BA3838CE0071C6A2B07D113F0E8 +:10F990009BFC071C13F093FC05A917F01DF9206BC5 +:10F9A00014F04AFD391C201CFFF702FA206B2121BC +:10F9B00014F03EFE206B0021019A14F094FD281CE7 +:10F9C00013F07DFC071C206B14F04AFD05990029FB +:10F9D00003D1206B14F044FD02E0201CFFF70CF86B +:10F9E0000025206B14F03CFD059BAB4209D0256936 +:10F9F000206B6B1C2361291C14F0AFFD201C17F039 +:10FA0000F3F8391C201CFFF7D3F9059B071C002BCA +:10FA100002D0206B14F0D4FD206B14F0F2FD059B96 +:10FA2000002B19D0206B0F21F7F71AF8206B291C37 +:10FA300014F018FC206B0F21F7F712F8201C059921 +:10FA4000FEF7DAFF201C0599FEF7EAFFA38B206B77 +:10FA5000013BA38314F08DFD206B311C14F037FDA6 +:10FA6000206B019914F0FEFB206B032114F0F6FBD0 +:10FA700069E7A38B206B013BA38314F07AFD206B15 +:10FA800014F009FF206B029914F0ECFB0C9B002B87 +:10FA900003D0201C191CFFF78BF9206B311C14F0CC +:10FAA000E1FB07B0F0BDC046A1A20300F0B587B0EE +:10FAB00003914379012B42D1C36A041C1B78002BAC +:10FAC00003D1204AFFF700F839E0039B03A8432144 +:10FAD000019313F00DFC02900398029B98422ED0E4 +:10FAE00005A90B2717F078F802AB059DFF180390C6 +:10FAF000291CE06A3A1C15F02CFB3B78061C002BF5 +:10FB000006D10378042B03D0201C01990E4A0CE087 +:10FB1000E06A291C15F04AFB002803D00378023B59 +:10FB2000022B05D9201C0199084AFEF7CDFFD3E727 +:10FB300004233370E06A291C15F04AFBCCE707B0B8 +:10FB4000F0BDC046C0A20300E5A2030006A3030067 +:10FB5000F0B585B001914379012B2BD10091041CA4 +:10FB6000432101A813F0C4FB071C0198B84221D01F +:10FB700003A90B2517F030F8039E6D440190311C4A +:10FB8000E06A2A1C15F0E5FA2B78002B08D10378DF +:10FB9000012B05D0201C0099074AFEF795FFE4E7EA +:10FBA00001250570E06A311C15F0F7FA0028DCD059 +:10FBB0000570DAE705B0F0BD24A3030010B5438B50 +:10FBC000041C002B02D1054AFEF77EFFA38BE28BBB +:10FBD000618B9A1A206BF6F769FF10BD43A30300EF +:10FBE00010B5038B041C002B02D1054AFEF76CFFF5 +:10FBF000A38BE28B218B9A1A206BF6F757FF10BD6F +:10FC00005BA30300F7B50B78041C1A1C0A3A0E1C00 +:10FC10000F2A08D8081C01A916F0DEFF201C019944 +:10FC2000FEF7FEFE76E0912B3FD1081C694613F0EB +:10FC300050FB011C201CFFF7BBF80378051C922B1E +:10FC400010D101A913F045FB051C281C13F037FB4C +:10FC5000019B071E9F4205D0291C201CFFF7A8F816 +:10FC60003D1CF2E72B78A12B0BD1281C13F02CFBA9 +:10FC7000011C201CFFF79CF8051C206B14F01CFCD9 +:10FC80000CE0A22B41D1281C13F01EFB01A916F099 +:10FC9000A3FF0199051C206B14F0F7FB281C0099A9 +:10FCA00016F092FF002830D034E0962B2DD1081C9E +:10FCB00013F04AFB002828D1301C13F005FB061C6A +:10FCC00013F002FB051C201C291CFFF79BFF281CBE +:10FCD00013F0F5FA0378011C9D2B1BD09E2B0ED13F +:10FCE00001A913F0F6FA019B051E9D4212D0201CBB +:10FCF000291CFFF787FF281C13F0E1FAF3E7BE2B5E +:10FD000003D0201CFFF77EFF04E0201C311C024AB8 +:10FD1000FEF7DAFEF7BDC04670A30300F7B5022672 +:10FD20000D1CC16A041C097E314003D0201C291C13 +:10FD3000334A5EE001912978081C0A380F2801D85F +:10FD4000281C05E01A32914212D1281C13F0BCFA8B +:10FD500001A916F041FFE279E36A002A04D15A8B27 +:10FD600001325A83012635E09A8B01329A83F9E7F2 +:10FD70001A33994223D1E379002BD7D10127281CCC +:10FD8000E77113F0E1FA0326002823D1281C13F0B1 +:10FD90009BFA0278E36A0A3A0F2A04D81A7E281CD2 +:10FDA00017431F7605E01A7E281C17431F7613F0B1 +:10FDB0008BFA13F089FA01A916F00EFF0AE0281C4D +:10FDC00013F082FA01A916F007FFE26A137E1E43C0 +:10FDD000167605260199002911D06B46DF1CE06AD2 +:10FDE0003A1C15F0B6F93B78002B05D1201C291CD4 +:10FDF000044AFEF769FE02E0022346700370F7BD75 +:10FE00007E41030088A3030038B5C36A041C1B7835 +:10FE10000D1C012B04D000210B4AFEF755FE11E00A +:10FE2000081C111C16F0D0FE002804D0206B0F21F6 +:10FE3000F6F716FE03E0201C291CFEF7B9FF206B25 +:10FE400014F0EBFC38BDC046A1A3030038B5C36A6B +:10FE5000041C1B780D1C013B012B04D90021164A00 +:10FE6000FEF732FE26E0081C111C16F0ADFE00283D +:10FE700004D0206B0F21F6F7F3FD18E02B78C22B8E +:10FE800011D1281C13F020FA011C201CFEF790FF52 +:10FE9000206B14F079FB206B0F21F6F7E1FD206B4E +:10FEA00014F0E5FC06E0201C291CFEF781FF206B06 +:10FEB00014F0CEFC38BDC046BBA30300F0B5041C53 +:10FEC00085B00D1C081C111C16F07EFE002804D005 +:10FED000206B002114F0F6FB80E02B78AF2B0BD1C8 +:10FEE000206B012114F0EEFB201C291CFEF760FFA3 +:10FEF000206B14F0F3FB71E0AE2B67D1281C13F0DC +:10FF0000E3F9051C13F0DBF902900378B22B53D10F +:10FF100003A913F0DEF9039B0290984203D002A8D4 +:10FF2000992113F0E5F92B78AF2B11D103990298A1 +:10FF3000266B13F0B8F9411C301C14F0C3FB291CCC +:10FF4000201CFEF735FF206B14F0C8FB012304E0F2 +:10FF5000201C291CFEF72CFF0023029F0193039B0A +:10FF60009F421ED03E78391CAF3E201C73425E413A +:10FF7000FEF71EFF019BF6B2071C002B09D0002ED6 +:10FF800003D1201C291C164A08E0206B14F0A6FBA4 +:10FF9000E5E7002EE3D0201C291C124AFEF794FD51 +:10FFA0001CE0019B002B19D1391C0298246B13F023 +:10FFB0007AF9411C201C0FE02B78201C291C0422FC +:10FFC000AF2B00D0052216F025FF07E0291C201CCE +:10FFD000FEF7EEFE0121206B14F098FB05B0F0BD9A +:10FFE000D4A30300F7A30300F0B50123041C0D1CE8 +:10FFF000427187B0E1620361111C006B2A1CF6F7A5 +:020000040001F9 +:100000001DFC6379012B02D100236B84AB84AE68A5 +:1000100033781E2B07D1301C13F056F9011C201C1D +:10002000FEF7C6FEB9E02B78002B04D1201C311C52 +:10003000FEF7BEFEA7E0012B1ED1301C13F03FF9E6 +:100040006379051C012B07D10023201CE371291CB7 +:100050000C22564B16F03CFE281C13F030F913F01E +:100060002EF9011C201CFEF7A3FE206B14F0F1F802 +:10007000002800D094E086E0022B18D16379012B90 +:1000800007D10023201CE371311C1422484B16F0C9 +:100090001FFE301C13F013F9011C201CFEF788FE14 +:1000A0002B7E5B0779D5206B14F0DAF96BE0033B0C +:1000B000032B3AD8301C13F002F905A913F009F903 +:1000C00013F0FDF867790390012F09D10B2202ABE1 +:1000D000D218E06A391C15F03CF8022303706F83D4 +:1000E0002B78032B04D1206B002114F0D1FA0CE003 +:1000F000042B04D1206B002114F0E4FA05E0052B59 +:1001000003D1206B002114F001FB201C0121FEF71C +:100110005FFC0023201C00930399331C059A17F001 +:100120008DFB2B78062B38D12DE06379012B06D17E +:10013000281C052105AA15F00CF80223037005A957 +:10014000A86816F049FD201C0D21FEF741FC201C7B +:100150000C21FEF751FC206B296914F0FDF81121E8 +:10016000201CFEF749FCA86813F0A9F813F0A7F8C3 +:10017000011C201CFEF71CFE281C052114F0D9FFD1 +:100180000378022B04D1206B0F21F6F769FC04E001 +:1001900042880521206B13F0DCFF206B14F03DFB3F +:1001A000206BF6F7D9FB07B0F0BDC04665740200BE +:1001B00059740200F0B51E1C0F1C99B009AC002147 +:1001C0000590151C201C3C221BF033F8059B099759 +:1001D0005B6826712362059B186813F070F813F0B2 +:1001E0004EF86062800013F045FA0021059BA06282 +:1001F00000951B68201C0A1C16F000FD14F013F873 +:1002000000230290206303930026331C626A964207 +:1002100002D3002BF8D12CE0A268002AF9D1A16A00 +:10022000B2005558002D16D06A69002A13D113F078 +:100230008BF96B7E6861291C201C0122042B02D1E2 +:10024000FEF756FC01E0FFF7CFFE2369039A9A42BE +:1002500000D2039301230136D8E70B9A002A00D07D +:10026000AEE00499139B8900CB58002B09D1049B65 +:1002700001330493129B0693069A049B9342ECD39A +:100280009EE0197EC90723D51C8D601EC000002C7E +:100290001ED0D96A09184D78AE0711D5002A17D09B +:1002A00050880F1C8446506816780690557811CFF8 +:1002B00011C262464A80069A0E704D704A6007E08D +:1002C000002A02D1012D00D10A1C013C0838DEE7CA +:1002D000002119841A8D944691421CDAD86ACA000A +:1002E00082181878072802D15468052C11D00138DB +:1002F000052804D81078002801D10130107010783A +:10030000022802D05078C00703D5188C441C1C84E6 +:1003100050800131DEE7002161450ED0D86ACA0065 +:1003200082181078032806D15078C00703D4188C9F +:100330005080013018840131EEE75E68002E96D0BF +:100340000024328D0792221C07998C421CDAF16A34 +:10035000E00009180691097800250339012911D810 +:1003600065450FD0DF6AE90079180F78042F07D1AF +:1003700006984768381E4F68B84201D14A8001325A +:100380000135EDE70134DFE70020824200D16EE75E +:1003900060450DD0DC6AC10061180C78042C02D1D4 +:1003A0004C78E40702D54C8814194C800130EFE7F3 +:1003B000598B92B251185983198C52181A8456E7E6 +:1003C00000260298039913F033FF351C129B049307 +:1003D0009E4210D30B9B0393002B4FD0149B0CA871 +:1003E000996816F0DAFC149B0B9809990C9A1B6912 +:1003F00001F038F842E00B9B0493002BEAD1139BE9 +:100400000493049AB3009C58002C35D0637E042BCF +:1004100019D1002D03D1039813F078F8051C00239F +:1004200015932D4B09A8211C032217931695FEF74F +:100430005FFB0B9B0493002B1ED109A8211C0422F7 +:10044000FEF756FB18E0029B09A8211C0222159317 +:10045000FFF7CAFD0B9B0493002B04D109A8211CB4 +:100460000322FFF7C1FD0B9B0493002B04D109A8C5 +:10047000211C0422FFF7B8FD0136A7E7029813F00C +:10048000DFFE002D02D0281C13F051F8002405983F +:1004900012F064FF139B1B685D69129B02939C42E0 +:1004A0000AD2139B0293029AA3009858002801D005 +:1004B00014F036FE0134F0E7139813F0F0F80B9ABD +:1004C000002A02D0101CEFF7A6FE281C111C13F006 +:1004D00046F819B0F0BDC046ECCB0200F0B5051CE3 +:1004E0008BB008680C1CFCF741F9049004A817F0C5 +:1004F0000EFC0027049B03900693069B19780029A5 +:1005000012D0081CF5F796FB0126002807D006A894 +:1005100017F00FFC069B1B78732B00D0061C069B64 +:10052000BF1901330693E8E7381CF9F7CBFB01222A +:10053000009007A96068F1F76DFD079B089A059385 +:100540009B1801920293022D0AD9A068F1F7A2FB31 +:10055000002802DA089BC01826D4059B18180590BD +:1005600000240DE0291CFBF777FC059B009A5D1920 +:10057000A31C9B00059501349850049B0133049300 +:10058000BC4230D2049B187800282CD0F5F752FBDF +:100590000125002803D004A817F0CBFB051C059803 +:1005A000029A43199A4205D21049114817F0A7FC44 +:1005B000EFF731FE049B1B78732BD3D0009BA60072 +:1005C0009E190195019B0436002B0AD0049B0398C9 +:1005D000197805AAF9F7F8F9019B7060013B0193BE +:1005E000F0E76419C9E700980BB0F0BD16A403004A +:1005F00010F80200F0B589B0039101921E1CFCF7BF +:10060000B5F8049004A817F082FB00250290B542CB +:100610004ED2049B187800284AD0F5F70BFB012432 +:10062000002803D004A817F084FB041C039B019A44 +:100630001B199A4205D21F491F4817F060FCEFF7BB +:10064000EAFD049B1B78732B04D02D190E9BAF0081 +:10065000DF191CE00E9B6F1CAD00E85805A90122B4 +:10066000F1F7D8FC069B251E9D4200D91D1C2A1CB3 +:10067000059903981AF0C0FD039B621B58190021CD +:100680001AF0D7FD039B3D1C1C1903940CE0002CB1 +:100690000AD0049B02981978A3005B42FA5803AB76 +:1006A000F9F7FAF9013CF2E7049B01330493AEE752 +:1006B00009B0F0BD16A4030010F80200F0B50E1C3E +:1006C00089B0039001CE0F1C17F049FB4410211C88 +:1006D00004A812F03BFA069D221C281C00211AF0E7 +:1006E000A8FD039B00962A19013B3868291CFFF7D7 +:1006F00081FF04A90248FBF761FB09B0F0BDC046C9 +:1007000048EF020030B50C1C89B0051C0222486875 +:1007100005A9F1F77FFCA068F1F7BCFA002809DA17 +:10072000069B0393C01805D509490A4817F0E7FB53 +:10073000EFF771FD059B069A1918201C0C309A18CA +:100740000090EB1E2068FFF755FF034809B030BD4D +:1007500016A4030010F8020074E00200F0B50024B3 +:100760000E1C85B0071C0393081C0D4B111C009434 +:10077000221CEFF739FFB01C800012F069FF051C46 +:1007800007604660B44208D0039BA700D859F7F72A +:10079000EFFCEF19B8600134F4E7281C05B0F0BD98 +:1007A000FFFF0000014B58687047C046882E0020AC +:1007B000014B18687047C046882E0020F0B5194ECE +:1007C00087B03368051C00200C1C019313F049F816 +:1007D00030600090206814F0CEF8019B071C336055 +:1007E000114E022D03D0A068F1F76AF9061C211CF6 +:1007F00063680831A81E0393F9F764FA009B04901C +:100800000593301C03AB03210022F7F7B7FB074B1E +:10081000041C9F4203D0381C211C13F0D5FB201C64 +:1008200007B0F0BD882E00206CEB020074E00200DF +:10083000F8B50326051C071C3540022D15D10E4BBB +:100840000340062B11D0FF23DB05C418B443201C42 +:10085000002109F0D3FA00280BD080231B06E018F2 +:10086000B043064B2843C01804E0381CF4F7E4FA00 +:1008700000E0381CF8BDC046070080FF0000808003 +:1008800010B5F7F775FC041C201CF7F7BFFC002817 +:1008900005D0F1F73FFB0028F6D1024800E00248FE +:1008A00010BDC04678CD020034CD020010B5F7F778 +:1008B0005FFC041C201CF7F7A9FC002805D0F1F709 +:1008C00029FB0028F6D0024800E0024810BDC046CF +:1008D00034CD020078CD020007B5044B0190694683 +:1008E000022000220093FCF7CBFC0EBD06040000A2 +:1008F00008B5F1F76BF9034B002800D1024B181C27 +:1009000008BDC04634CD020078CD020037B5F1F7FE +:10091000C1F901AB7F2802D8187001213CE02149C0 +:10092000820988420AD8402149420A431A703F226C +:100930001040BF3A1043587042312DE01A49040B61 +:1009400088420ED8202149420C431C7080245F311C +:100950000A4064420840224320435A7098703C3950 +:100960001AE01249884211D81025810C6D422943A2 +:1009700019703F21703D0C400A4008402C432A4327 +:1009800028435C709A70D8703B3905E008490948E3 +:1009900017F0B5FAEFF73FFC181C0122FBF744FAF9 +:1009A0003EBDC046FF070000FFFF0000FFFF100034 +:1009B00027A4030010F8020008B5021C02490A200F +:1009C000F7F764FC08BDC046BE04000008B5021C71 +:1009D00002490A20F7F75AFC08BDC0463E05000050 +:1009E000F0B585B002900192101C0C1C0022324917 +:1009F0000393F4F755F80090002801D04368009362 +:100A0000029B012B03D000252E1C01953CE02068A1 +:100A10000024F7F7ADFB271C02900298F7F7F6FBCE +:100A2000051E17D0009B2E1C002B04D0181C291C5F +:100A300013F0A8FF061C002C09D00398311C3A1CA7 +:100A4000F7F724FC1D4B984201D0251C3E1C2C1CA2 +:100A5000371CE2E7221E2BD101981949F4F720F840 +:100A6000002801D0426823E01649174817F047FADA +:100A7000EFF7D1FB009B002B0AD12768002E0DD188 +:100A80002668019701350434029B9D42F2D10EE0A5 +:100A90000098216813F076FF071CEFE70398391CD4 +:100AA000019AF7F7F3FB054B9842EBD1E8E7321CCC +:100AB000101C05B0F0BDC046D606000034CD0200C3 +:100AC0001E05000048A4030010F8020037B501A974 +:100AD000051CFBF761FE1E4B041C2B40062B05D0AA +:100AE000AB072AD12A681B4B9A4226D1201C0199B8 +:100AF00013F0A6F90190012822D1207843B2002BEF +:100B000004DB012320784000184320E07F230134D8 +:100B100018403F3B184202D098435B10FAE7227816 +:100B20003F23111C9943802904D1800113400134D3 +:100B30001843F4E713F0DEF809E0019B012BE0D045 +:100B40000549019A054800F01FFCEFF764FB3EBD24 +:100B5000070080FF80CA020061A4030000FD0200BC +:100B6000F0B587B0141C02900391101C2349002299 +:100B7000F3F796FF2249051C0022201CF3F790FF93 +:100B80000123041C049305931E4F002D07D06868B1 +:100B90001D4B984203D004A9FBF7FEFD071C1B4D1B +:100BA000002C07D06068184B984203D005A9FBF7CA +:100BB000F3FD051C0024029B154E9C4212D0002C14 +:100BC00007D00023301C00930193391C049AFDF7D1 +:100BD00031FC039AA300D158301C0022F0F78AFFA1 +:100BE0000134E8E70023301C00930193291C059A87 +:100BF000FDF720FC044807B0F0BDC046EE0500003C +:100C0000F6050000CDA7030074E002003F4B03008F +:100C100010F002007FB50D4DA84214D0041C0C4EFC +:100C20000122301C211CF0F765FF0A49301C15F029 +:100C3000F4FE04230293084B0394DB690748032165 +:100C400002AA01939847281C04B070BD74E002000A +:100C500010F002003F4B030028D9020078F3020095 +:100C600010B5041C86B002A86A461021EFF746FCB6 +:100C70006846211C0122F0F73DFF02A90248FBF75C +:100C80009DF806B010BDC04680CA020070B50C6861 +:100C9000031C201CE2074AD4A20703D1244A25687A +:100CA000954244D0012B1FD94868F0F7F3FF061C8A +:100CB000201CF1F753F8051C301C09F0BBFF011C88 +:100CC0001C480CF0BBFE041C211C281C09F0E2FC93 +:100CD0000CF066FB211C09F0EBFA03239843013B5F +:100CE0001843154BC01822E0201CF1F737F8061CFA +:100CF0000CF056FB051C09F07DFF291C041C301C60 +:100D000009F0FAFDFC218905051C09F071F800289D +:100D100001D0013406E0BF21281C090609F068F85B +:100D2000002801D001239C43201C12F0E3FF70BD7A +:100D300030D30200000020410000808013B5041C65 +:100D4000081CFBF793F86A46011C201CF7F794F97E +:100D5000009B0248002B00D1014816BD34CD020093 +:100D600078CD020037B50024022800D98C68486885 +:100D70000D68FBF77BF8094B011C002C00D0084BD9 +:100D8000281C6A4698470098002805D00199002938 +:100D900003D0F2F77DFF00E0201C3EBDD9800000AB +:100DA0007980000038B5051C081C141CFBF75EF8A0 +:100DB000221C011C281CF7F7B7F9014838BDC046B2 +:100DC00074E0020008B5F7F7FBF9002804D10348E6 +:100DD00017F088F8EFF71FFA08BDC046BCFA02000A +:100DE00030B50B1C85B0141C012805D90A490B48E5 +:100DF00017F085F8EFF70FFA09480121C268019250 +:100E0000019D0022A84703A90390221C0120EFF7AF +:100E100095FF039805B030BD9BA4030000FD0200C0 +:100E20009CC60200F8B50E1C002803D12A4B041CF6 +:100E30001D6823E0086883070AD10368274A9342A4 +:100E400003D113F09AFE051C0EE0254A934201D00F +:100E5000F0F736FE856B002D06D02A68214BD31A99 +:100E6000594259414B421D403068F0F729FE1E4B54 +:100E7000C26800249A4201D1346804340020011C65 +:100E800012F03DF80027061CBD4209D10025AC42F6 +:100E900016D11FE0EA68FB009958002904D10137F8 +:100EA000AB689F42F6D3F1E70429F8D0301CEFF786 +:100EB000E1FEF4E7A268EB009958002904D101355E +:100EC00063689D42F6D305E00429F8D0301CEFF7A3 +:100ED000D1FEF4E7301CF8BD882E002028D902008E +:100EE0006CEB020064CE020075B70000F8B5041C7C +:100EF00003780020834200D19AE0402B01D10125E4 +:100F000028E0201C4B4916F0CAFF0028F7D1201C0E +:100F1000494916F0C4FF0028F1D1201C474916F0BA +:100F2000BEFF0028EBD1201C454916F0B8FF002871 +:100F3000E5D1201C434916F0B2FF0028DFD1201C68 +:100F4000414916F0ACFF0028D9D1201C3F4916F0CA +:100F5000A6FF051C0023191C1E1C1F1C2278002A3A +:100F600051D0272A10D1002B01D0032B08D1627851 +:100F7000272A05D1A278272A02D10234243A16E082 +:100F80000122012B3DD812E0222A12D1181C1E3A50 +:100F9000904309D16078222804D1A078222801D179 +:100FA000023404E0002B01D0022B2AD10222D31AF2 +:100FB00027E05C2A09D16078272801D0222804D1B3 +:100FC0001A1C501E8241A4181BE0002B19D15B2A69 +:100FD00012D006D8282A0DD0293A50424241BF1AD1 +:100FE0000FE07B2A0AD07D2A0AD05D3A5042424166 +:100FF000B61A06E0013704E0013602E0013100E0F4 +:1010000001390134AAE70120002F11DC002E0FDC8A +:1010100000290DDC033B83420AD9013C23785C2B79 +:1010200006D0101C002D03D00A3B581E8341D8B2B5 +:10103000F8BDC046598603008A8603007086030007 +:1010400086860300F22C030056B00300B28803002A +:10105000F0B5051C8BB04618049207930296029BCC +:101060005C1EAC4210D32078F4F7D8FD002809D1DB +:101070002078F4F7DFFD002804D123785F2B01D01E +:101080002E2B02D10294EAE70295724B1D68029C56 +:10109000B44209D3029BE31A0193B44209D300245A +:1010A000261C271C039448E023782E2BF2D0013411 +:1010B000EEE70027AB689F421CD2FB000393039A24 +:1010C000EB689858002817D0042815D009A9FBF719 +:1010D00063FB019B099A011C93420DD102981A1CD3 +:1010E0001AF0B3F9002807D1EB68039A9B185868E7 +:1010F000002803D10020AAE00137DBE783070AD1EB +:101100000368554A934203D113F037FD051C0BE0E9 +:10111000524A934201D0F0F7D3FC856B002DE9D001 +:101120004F4B2A689A42E5D1631C0293AFE7EA6805 +:10113000E3009858002804D10134AB689C42F6D3F0 +:1011400029E00428F8D009A9FBF726FB099B0590A4 +:101150000693069A019B9342EED8029805991A1CB1 +:101160001AF073F90028E7D1019B002F0BD0B3428E +:101170000DD8069A93420AD8059AF95CD25C91423E +:1011800004D10133F3E7069E059F00E01E1C039B7C +:1011900001330393D0E7039B002BABD0012B02D08C +:1011A000019B9E4206D9019B079AFB181360019B85 +:1011B000F01A4CE0002340260393039BAA68934255 +:1011C0003FD2039BEA68DB009858002835D00428FA +:1011D00033D009A9FBF7E0FA099F019B0590BB42B8 +:1011E0002BD8029805991A1C1AF02FF9002824D13F +:1011F000331C0F33DC17240FE41824112401A41B23 +:10120000012C00DC10343319DB190027402B0ED8D9 +:101210000498A74204DA134915F0FFFB0137F7E7FA +:10122000059915F0FAFB099BF618361905E00498A4 +:101230000D49059A15F0BDFC099E039B01330393EC +:10124000BBE70498094915F0E8FB012040420BB0C8 +:10125000F0BDC046882E002028D902006CEB0200A9 +:1012600064CE0200CDA70300C6A403003F4B0300D9 +:10127000F7B51F1C0023061C0093081C0D1C111C35 +:101280001A1C0B4BEFF7B0F9102012F0EEF9041E08 +:1012900004D1084A084B094CDA6104E0281C391CC7 +:1012A000F8F710FDE06000232660201CA360FEBD5F +:1012B000FFFF0000F8DC0200882E0020982E00209E +:1012C00010B5013810C9F8F7FDFCE060004810BD0A +:1012D00074E00200F8B57F23171C151C041C0E1CBB +:1012E0001F409A430AD17B1E012B07D80B68586810 +:1012F00011F0C5FB011C201C15F08FFB022F04D13F +:10130000201C0F4915F089FB01E0002F12D1F36872 +:10131000002B02D05A68002A04D1201C094915F07C +:101320007CFB0CE0012A05D1201C99680022F0F713 +:10133000E1FB04E0201CF1682A1CF8F757FCF8BD1B +:10134000A1870300BF740300C36803485A68002ADA +:1013500000D098687047C04674E00200136810B56A +:10136000002B0ED17D2902D1C368136009E0054B23 +:1013700004689C4205D1BA2903D1141CFFF7E4FF8D +:10138000206010BDBCFA02000EB470B5051C87B019 +:10139000102012F06AF9041E06D11B4B1B4A1D6176 +:1013A0009861DA611A4C29E0002105608160012012 +:1013B000F8F788FC0B9B051CE060002B1ED0181C66 +:1013C00025211AF023F8061E08D10B981AF036F8DA +:1013D000321C011C0B98FAF727FD0EE002A8102121 +:1013E00011F09DFB0CAA02A80B990192EFF7E6F809 +:1013F000084802A9E568FAF7E1FCA860201C07B0DC +:1014000070BC08BC03B01847882E0020F8DC02002E +:10141000982E002080CA020008B5031C820708D15C +:10142000064A0168914204D1054AD96801209142D7 +:1014300003D0181C0349FAF75DFB08BD6CEB0200F2 +:10144000711201007CFB020010B5041CF0F738FBA0 +:10145000034BC2689A4200D024690023A36010BDE8 +:1014600071120100F7B5161C0193041C0F1CF0F754 +:1014700027FB174BC2689A4200D02469A568002D4B +:1014800009D10C2012F0F1F8A06000281ED003232F +:10149000E580A38010E0E388A18802338B420BDB58 +:1014A00003318900281C012212F0F5F800280DD024 +:1014B000A388A0600333A380E288A168930003326D +:1014C000E280019ACB181F605E609A60F7BDC0464B +:1014D0007112010070B5151C041C0E1CF0F7F0FA17 +:1014E000064BC2689A4200D02469A368002B01D140 +:1014F000336001E0E28832602B6070BD7112010040 +:10150000F0B5836999B05A1E04925A1D9200821850 +:101510000432079102920F21012206339B00C31867 +:10152000043303930369019006A81A4009180A704E +:10153000032293430A930CA8EEF752FE031E01D038 +:1015400000F08CFD019A5568D468079A002A26D0CD +:101550002A785E2A23D00798079300F0BEFCAB7868 +:101560006A781B021343B84AEB189B186360EB7848 +:101570000834236023685A0600D1B1E20A9A013B7D +:101580005268920700D49FE2221C08C205236360C0 +:10159000141C0A9B1F680A9B0C3B0A933D1C019B71 +:1015A0006F1C5D602B78181C10385A2801D900F088 +:1015B00005FD08F03DFA5B005D0062000305640074 +:1015C0000305730081008700030589009E00AF00BA +:1015D000BE00CD00DB00EA00EF00F70005011901B5 +:1015E0002901380155015E01710189019601030548 +:1015F000030503050305A301A5011A05AC01B2010A +:10160000BC01C401D101DE01E901030503050305A5 +:10161000F90126029C029C02B902CF02D302E60223 +:10162000E602D4FF030503050305030503050305CF +:10163000030503050305F20204031503260334031F +:101640003D03520363037B039703A90354048004FF +:10165000A70495040305C003CC03D703E003F003FC +:101660000B0420043C04DE04EE04FE04774B00E08F +:10167000774B6360043400F0E5FC764BF9E76B7858 +:101680005B06DB177F213A78DB01114052B20B4336 +:101690000137002AF6DB5B0001220BE000237F21EB +:1016A0003A78DB01114052B2CB180137002AF6DB41 +:1016B0000622DB001343DCE70323FD1C9D432F1CA4 +:1016C00008CFD6E70023D4E700237F213A78DB0157 +:1016D000114052B2CB180137002AF6DB9B005B4267 +:1016E000029A9858002800D049E25B485B4900F014 +:1016F0005CFD00237F213A78DB01114052B2CB1808 +:101700000137002AF6DB029A9B005B42985812F0E0 +:1017100059FCE7E700207F223B78C0011A405BB20A +:1017200010180137002BF6DB251DF6F761FB00F0E2 +:101730003EFC00207F223B78C0011A405BB21018AB +:101740000137002BF6DB251DF6F720FB00F02FFC00 +:1017500000217F223B78C9011A405BB25118013742 +:10176000002BF6DB206813F023F926E200217F220C +:101770003B78C9011A405BB251180137002BF6DBE8 +:101780002068221CF6F7A8FC74E7251DF6F748FB35 +:1017900000F00DFC251F286821680422F0F706FCE4 +:1017A00000F036FC00237F213A78DB01114052B271 +:1017B000CB180137002AF6DB9B005B4200F012FCDD +:1017C00000237F213A78DB01114052B2CB18013758 +:1017D000002AF6DB029A9B005B4298582168251F7D +:1017E00012F0F2FB00F015FC00207F223B78C001D4 +:1017F0001A405BB210180137002BF6DB2168251F59 +:10180000F6F722FB00F005FC00207F223B78C001A8 +:101810001A405BB210180137002BF6DB2168251F38 +:10182000F6F72AFBF5E300217F223B78C9011A4035 +:101830005BB251180137002BF6DB231F20681A68B2 +:10184000F6F772FC07E2C0460380FFFF78CD020086 +:1018500074E0020034CD0200FCF90200CAA40300C7 +:10186000231C221F083B106821681A68F0F79EFBB2 +:101870003BE100237F213A78DB01114052B2CB18C3 +:101880000137002AF6DB029A9B00D31A1A68002A55 +:1018900000D12AE700223EE000257F223B78ED01BF +:1018A0001A405BB255190137002BF6DB029BAD00E5 +:1018B0005D1B286812F086FB002800D115E7286818 +:1018C000002112F081FBBDE300207F223B78C001A4 +:1018D0001A405BB210180137002BF6DBF6F7C0FA9E +:1018E000B0E300207F223B78C0011A405BB21018A1 +:1018F0000137002BF6DBF6F7CBFAA3E32368B8E653 +:101900002368A360231F1B68636008349AE3231FC6 +:101910001968226821601A6094E3221F1368216805 +:101920002360231C083B1868106019608AE3AB78B9 +:101930006A781B021343ED18D94BEF1882E3AB789A +:1019400020686E780593F0F7E5FAEF1C251F2C1C34 +:10195000002800D176E321E0AB7820686E7805930B +:10196000F0F7D8FAEF1C251F2C1C002800D069E3E3 +:1019700014E0AB7820686E780593EF1CF0F7CAFA94 +:10198000002800D131E309E0AB7820686E78059338 +:10199000EF1CF0F7BFFA002800D026E3059B1B02DE +:1019A0001E43C04BF618E8E0261C27681721381C98 +:1019B000221C0836F6F790FB381C1621321CF6F76D +:1019C0008BFB0020321C011C12F0E4FFAB786A781C +:1019D0001B0213430A9A0F210C320A920A9AEF1C37 +:1019E000FB181360022206ABC9180A9D0B7813433B +:1019F000221D13436B6000230A9A0B709360A06052 +:101A00000DE0261C2568A84B083E9D4209D1656063 +:101A1000A56003200021321C12F0BCFF3560341C8D +:101A200010E3012129402CD06D10231F012D10D16E +:101A3000251C1A680C3D05929B4A03201A60002160 +:101A4000226062602A1C12F0A5FF059B2B60032315 +:101A500015E0251C3268103D05921A680320069295 +:101A6000914A002132601A6022602A1C12F092FF13 +:101A7000059B069A2B60231C0C3B1A6005233360E0 +:101A8000E9E033683560251C103D23602A1C0320E3 +:101A900012F080FFF0F73EFA00280DD00122824BB1 +:101AA00006A92B600A9B5B6813400E325218137014 +:101AB0000A9B0C3B0A93ACE223682B60231C043C7A +:101AC00022680C3B1A60AAE70A9A06A8516801220C +:101AD0000A400F2109180A700A9A0C3A0A924AE53C +:101AE000221F1768002B00D1B5E00C3CAAE2AB78AE +:101AF0006A781B0213430A9AEF1C0C320A920A9A64 +:101B0000FB1813602B780A9A403B584258410F212A +:101B1000430006A8091808780343234353600023B1 +:101B20000A9A0B7093608DE22068FFF775FC251F01 +:101B3000002803D0EEF76AFB2B6817E223685A4AA5 +:101B40002C1C934200D17DE25B10DBB2012B00D054 +:101B500010E592E12068F6F70BFB2EE0AB786E788B +:101B60000593019BEF1CDC602068F6F729FB002839 +:101B700005D1059B043C1B021E43BF1962E2606055 +:101B800078E50A9B06A95A68012313400F225218D0 +:101B900013700A9B0C3B0A9354E200207F223B788F +:101BA000C0011A405BB210180137002BF6DB83002E +:101BB000E41A0434211CF8F785F8206042E2002082 +:101BC0007F223B78C0011A405BB210180137002B0E +:101BD000F6DB8300E41A0434211C11F090F9ECE7E1 +:101BE00000237F213A78DB01114052B2CB18013734 +:101BF000002AF6DB9B005B4218592168EFF73AF8A0 +:101C0000F3E100207F223B78C0011A405BB210183C +:101C10000137002BF6DB251D11F023FEC7E1251C43 +:101C2000231F083D286821681A6811F053FEF0E16F +:101C300000237F213A78DB01114052B2CB180137E3 +:101C4000002AF6DB01339B005B42221F18592168F2 +:101C5000126811F03FFE083CF4E100207F223B783F +:101C6000C0011A405BB210180137002BF6DB83006D +:101C7000E41A0434211CF7F719FD9EE700237F21A5 +:101C80003A78DB01114052B2CB180137002AF6DB5B +:101C90009B005B421859216813F035F8A5E1C04656 +:101CA0000380FFFF0080FFFF74E0020000237F211C +:101CB0003A78DB01114052B2CB180137002AF6DB2B +:101CC000251F022B05D128682168D34AF9F776F938 +:101CD0009EE1261C083E306829682268F9F76EF9F3 +:101CE00030609CE600257F223B78ED011A405BB214 +:101CF00055190137002BF6DB291C2068221CF6F74A +:101D0000A9FDC64BED1813E000257F223B78ED01BD +:101D10001A405BB255190137002BF6DB291C221C37 +:101D20002068F6F7EFFDFF232A0A1A401D405519D7 +:101D3000AD00641986E103230021FD1C9D43286842 +:101D40000A1C11F00CFC2F1D261D606067E60323A2 +:101D5000FD1C9D43261F2868316822682F1D11F045 +:101D6000FEFBBDE70323FD1C9D4329796F1D8B00FE +:101D7000E41A04340AE00323FD1C9D4329796F1DF6 +:101D8000CB439B00E41880235B0019432868221C86 +:101D900011F000FC11E700237F203978DB010840B7 +:101DA00049B2C31801370029F6DBFF20FF22191CB6 +:101DB000DD0940001140284040188000241A1B0A09 +:101DC0001A402068231DF6F7D9F8F6E600217F2295 +:101DD0003B78C9011A405BB251180137002BF6DB82 +:101DE000FF23CA095B001340CAB29B189B00E41A88 +:101DF000083C00202FE000237F203A78DB011040D0 +:101E000052B2C3180137002AF6DBFF25181CFF2247 +:101E1000DE09284052003240411C891889001B0A03 +:101E2000641A2B40191C221C12F0B4FDC5E60021D7 +:101E30007F223B78C9011A405BB251180137002B51 +:101E4000F6DBFF230120CA095B001340CAB29B18CE +:101E50009B00E41A0C3C221CF6F7D4FBADE60F22E3 +:101E600006ABD2181378002B07D00A9B59680123C0 +:101E70000B4013700A9B0C3B0A930A9B039A9342F4 +:101E800013D30A9B5B689B07F4D503220A9B216846 +:101E90005B6893431C1C59609A600A9B08341F6856 +:101EA0000A9B0C3B0A93FFF779FBEEF7AFF9019B16 +:101EB0000020DC607DE16B78022B01D1043C0BE05B +:101EC000002B09D10A9B039A934200D26BE19868D8 +:101ED000002802D10C3BF6E72068F6F711FE66E118 +:101EE000079E2168231F002E02D00021079E079124 +:101EF0001868321C0BABF6F795FD012811D12F1C89 +:101F00000B9B2360EEF782F9019B06A95F60DC6002 +:101F10000F235B180A9A1B7801201343019A13615F +:101F200047E1002806D10B9B043C002B00D13A4B23 +:101F300023600CE002281BD10B98394915F0E9FF0A +:101F4000002810D00B98FFF7FFF9043C2060002E0A +:101F500078D0301C334915F0DCFF002872D0EEF742 +:101F600055F90D967AE0EEF751F90B9B0D9375E05C +:101F7000043C00207F223B78C0011A405BB210185D +:101F80000137002BF6DB251F21682A68F6F7D6FDFE +:101F90003EE000217F223B78C9011A405BB2511814 +:101FA0000137002BF6DB251C01CDF6F7D9FD60606B +:101FB0002FE02068251F12F006FD2AE0AF2B05D880 +:101FC0000120803B5B000343FFF753FBBF2B04D88A +:101FD000B020C31A9B00FFF783FBCF2B07D8C0208C +:101FE000C31A9B00029A21689950043C2AE0D62B20 +:101FF00005D8D03B181C2168F5F756FFDDE5FA2B14 +:1020000012D8251FD73B181C29682268F6F73EF91D +:1020100028602C1C16E0C04674E00200FFFFFF3F62 +:10202000BCFA0200B4FD02006349644815F067FF82 +:10203000041CEEF7EBF8049B019A06339B00D318BF +:102040005C60AEE05E4B1A6B002A01D1FFF7A6FA86 +:1020500000221C6B1A63EEF7D9F80D940D9B5949B9 +:102060001868F9F747FD002825D0019B5A68002A17 +:1020700021D01378432B0BD19378D11C52781B02BB +:102080001343019ACB185360D3680593043B7EE059 +:102090005E2B10D1019B019ADC680D98231DD36043 +:1020A000FFF752F9019B60605B68019A0593013369 +:1020B0005360FFF740FA0D9B434A93423CD0434A9A +:1020C000934239D0019B0BA81B6805930B9313F027 +:1020D00085F9051C0BA813F081F9041C0BA813F05B +:1020E0007DF9019B011C5B680593019B1B680693AE +:1020F000069A059B981A0122401B0B9D2B78002BFA +:1021000012D0DE0904D11F361E4001355B0908E0FC +:102110000F26E0271E40FF001B011F406B78023591 +:102120003B430B95B04204D20D98231CFFF79AF95C +:1021300002E0801BD218E0E70F2306AA9B181A784A +:10214000002A08D00A9A516801220A401A700A9B94 +:102150000C3B0A93F0E70A9A03998A421AD30122A8 +:102160001A700A9B0D991B680593059A019B0591AE +:102170005A6003220A9B5B6893430A9A9160144A4F +:102180005A600D9A9A6012680C331A60019AD360F3 +:10219000FFF7D1F9049B019A06339B00D3180D9ADF +:1021A0005A60022005E00B480B4915F0A8FE041CFC +:1021B00051E719B0F0BDC046F6A40300A8FC020028 +:1021C000882E0020BCFA0200CCF802002CFE02008F +:1021D00074E002004CF8020010A5030010B5041CC6 +:1021E000F1F72AFB074B021C9C3307491B68074881 +:1021F00014F0DFFCF4F7F4FF012C01D1F5F710F82F +:10220000034810BD882E00202FA5030010F0020007 +:1022100074E0020008B5F4F70DFD014808BDC046A2 +:1022200074E0020008B5F4F7FDFC014808BDC046A3 +:1022300074E0020010B586B0041C03A902A804AA29 +:1022400005ABEEF7FDF8049B07480093059B074993 +:102250000193029A039B14F0ACFC012C01D1EEF720 +:102260002BF9034806B010BD10F0020044A503008E +:1022700074E00200F7B501911149041C171C0025F8 +:1022800014F0CBFB7B689D4214D2002D03D0201CA0 +:102290000C4914F0C2FB019BAE009A590A49201C5C +:1022A000BE1914F086FC201CB1680122EFF722FC55 +:1022B0000135E7E7201C054914F0AFFBF7BDC04628 +:1022C000638703008B4003008CA503001B430300BE +:1022D000F0B5214B8DB005AC013800930431019469 +:1022E0000723EEF7B3F9A0681C4D0027A84202D0DF +:1022F000EFF7D0FCC7B260691826A84202D015F0EB +:1023000001FF061CA0691922A84202D015F0FAFEAE +:10231000021C2069A8420DD003AA0221EFF77EFD1E +:10232000039B186815F0EEFE039B061C586815F019 +:10233000E9FE021C71B252B203A803F0DDFC03A84F +:10234000059903F035FD03A861683A1CE36803F0C2 +:102350003FFD281C0DB0F0BD2002030074E0020018 +:1023600008B501F08DFD034B002800D1024B181C6D +:1023700008BDC04634CD020078CD0200012183683B +:10238000034A0B4200D1034A8B438360101C704701 +:1023900034CD020078CD020008B5406816F013FF76 +:1023A000024B002800D1024B181C08BD34CD02009E +:1023B00078CD020082B0000C012804D1034A936852 +:1023C00002331843906002B07047C04624000020DA +:1023D00082B0000C012804D1034A936802331843E9 +:1023E000906002B07047C0463000002037B5C0256D +:1023F0000121074C00950A1C201C064B04F098FD97 +:102400000095201C02210122034B04F091FD37BDF1 +:10241000B4290020B5230100D123010073B5009039 +:10242000000C431E01910A2B1BD801231C1C844065 +:102430000C490A88224392B20A800B4A11780F296C +:102440000FD816781178094CD94033409B0098403A +:10245000031C655C2B43DBB2635413780133DBB29E +:10246000137073BDE02D0020002E0020012E0020EF +:10247000094A38B51378002B0CD1084D2C78E4B2FA +:10248000002C07D10068013313702B7003685B6860 +:1024900098472C7038BDC0460A2E0020092E002017 +:1024A00010B5041C0430FFF7E3FF606817F0BAFFB3 +:1024B000034B8000C0580623C000184310BDC0461F +:1024C0003804030038B50430FFF7D2FF124C13482C +:1024D0002378002B1FD020780021C0B2F7F7F2FB41 +:1024E00000232278934214D20D495A088D5C0122B0 +:1024F0001A40920015412A1C0F252A40094D9200CE +:10250000525906259900D20041182A438A600133A6 +:10251000E7E70023237038BD002E0020F8DC02001E +:10252000012E00203804030008B5F9F79FFC0023B2 +:10253000074A99008A58904208D001330C2BF7D1F2 +:102540000449054815F0DBFCEDF765FED8B208BD7F +:102550003804030090A5030010F8020038B5041CED +:10256000081CFFF7E1FF051C201DFFF781FF6068D5 +:1025700017F058FF024BA84200D0024B181C38BD80 +:1025800034CD020078CD020038B5041C081CFFF7DA +:10259000CBFF051C201DFFF76BFF0122AA40064B55 +:1025A00006481988114200D1054819889143002234 +:1025B0001980044B1A7038BDE02D002034CD020084 +:1025C00078CD0200002E0020C02307B503480093F9 +:1025D0001B210022024B04F0ABFC07BDB4290020F4 +:1025E0001D240100F0B52B4D87B003902B78002BF4 +:1025F0001CD05AB2002A10DA80246E1C6D785C4020 +:10260000002D13D0631EDCB2FF2C0DD004AB981D3F +:102610000121057001F066FCF4E704AAD01D012138 +:1026200003702E1C01F05EFC751CDFE70526039885 +:1026300001F09AFC0124B44226DA0025164F291C29 +:10264000381C221C02F0A4FC6B4601901B79002B65 +:1026500014D0631E1A1C381C291C029302F098FC2B +:10266000031E0BD1381C291C221C02F057FC6B46A0 +:10267000381C1B79291C029A02F050FC0135052DEB +:10268000DCD10134E4B2D6E7013E002ECFD107B051 +:10269000F0BDC046A0A503005000002008B5C8202A +:1026A000FFF7A0FF004808BD74E0020008B54068CD +:1026B00006F0E6F8024B002800D1024B181C08BDBA +:1026C00034CD020078CD020010B5041C081CEFF7D1 +:1026D000E1FA011C431005D00549064815F00FFC2E +:1026E000EDF799FD606806F023F8034810BDC04679 +:1026F0003EA6030010F8020074E00200032310B5A8 +:102700000B40041C081C022B03D1114B0B40062B61 +:1027100002D1EFF7BFFA09E0EFF720FB0AF006F964 +:1027200000220C4B08F016FB0AF08EF80A4B011E33 +:10273000994205D909490A4815F0E1FBEDF76BFD0F +:102740000D2063681856F2F7A7FD064810BDC04675 +:10275000070080FF0000E03FFF03000053A60300D6 +:1027600010F8020074E0020008B5081CEFF792FAB6 +:10277000FA239B005843F2F757FD002805D004497F +:10278000044815F0BCFBEDF746FD034808BDC04604 +:1027900074A6030010F8020074E0020008B5081CDB +:1027A000EFF778FAF2F740FD002805D00349044816 +:1027B00015F0A5FBEDF72FFD024808BD74A6030038 +:1027C00010F8020074E0020010B5041CEFF778F96D +:1027D000084B98420BD0084B984208D0074B9842C0 +:1027E00005D00749074815F08AFBEDF714FD60682E +:1027F00010BDC0464006030094050300DC0503003D +:1028000083A6030000FD020001220020074B0849B7 +:102810005A600860A821DA60064AC9005A50064981 +:102820005A5004315A5005495A50704700900040A0 +:102830000C9C0040FCFF0000440500004C0500001B +:10284000034B04481B78002B00D103487047C04657 +:102850000C2E002034CD020078CD0200F7B5A82759 +:10286000A9253248324B01681A6884468A185118E3 +:102870001960304B00911C780193121109112E4BF5 +:10288000FF000420ED002D4E002C15D0002A03DAA5 +:10289000821AD8515A5102E004325851DA51812239 +:1028A0009200002904DA2648511A1A5099510CE076 +:1028B0009A518122920005E00432D8519A51812226 +:1028C00092005A5189181E4A995001221D4CDA6013 +:1028D0002378002B23D03F201B4A1C4B1168019DFD +:1028E00004330131DB6F2D7808401B5C002D01D0D3 +:1028F000803B5B0010600820009A801A1C22534322 +:102900006246C3189B1013601F23194007D1104B58 +:102910001A78002A03D00F481970F8F789FC0122B1 +:102920002378042053402370FEBDC0467827002042 +:102930007C27002008010020009000404405000092 +:102940004C0500000B2E002074270020882E00204C +:10295000070100207581020038B5051C081C0C1CFD +:10296000EFF7AEF8094A0023904205D0084909481C +:1029700015F0C5FAEDF74FFCE2181179EA180133AA +:102980001171202BF8D1044838BDC0463C07030024 +:1029900093A6030000FD020074E0020038B5041C99 +:1029A000081C151CEFF776F91F2802D90E480F49AD +:1029B00003E0002D05D10E480E4915F0A0FAEDF701 +:1029C0002AFC2418042D04D1012320794000184347 +:1029D00009E0281CEFF75EF9FF2802D902480649F2 +:1029E000EBE72071054838BD10F80200AAA60300E5 +:1029F00000FD0200BEA60300E3A6030074E002008F +:102A0000A02270B51E25A321104BD2009C58C900EE +:102A1000AC439C500E4C0F4E5C500F490F4C800045 +:102A2000195104341E510E4C1951A5210D4CC900E9 +:102A30005C5009490C4C40180C49585004315C500A +:102A40000B49585099582943995070BD00F00140E6 +:102A50004091004044910040006000401C0500008F +:102A600024050000489100404C9100402C050000D6 +:102A700034050000074B8000C018A223DB00C158BA +:102A8000054A0A40C250C25804490A43C2500022B3 +:102A9000C250704700600040FFE0ECFF001F0300E1 +:102AA0000123A022834010B5134CD2051351031CFF +:102AB000C133124CFF339B009C50114B8900C91845 +:102AC000A223DB00CC580F4A00022240C024CA5087 +:102AD000CA58A4021443F822520110402043C8509F +:102AE0000320CA58084C10432243CA50C046C0466F +:102AF000C046C85010BDC0460C05000003030000CE +:102B000000600040FFE0ECFF031F0000F8B50E1C62 +:102B100015F0F8FA194B041C194D1A4F9E420FD1AB +:102B20000123A0228340D20528700021D351FFF752 +:102B3000B7FF0020FFF764FF0023134A13701CE067 +:102B4000301C15F0DFFA2C7001252A1C0F4BA24017 +:102B50001870A023DB05DA512A1C8240061CDA51CA +:102B6000201C0021FFF79CFF301C291CFFF798FF59 +:102B7000281CFFF745FF044B1D70F8BD74E00200F0 +:102B8000090100200C050000080100200A010020B6 +:102B900070B50024FFF738FE164B201C0833DC67A5 +:102BA000F8F714FBA0221E20134B14491C70144B81 +:102BB000D2001C60134BA0261C608B58124D83431F +:102BC0008B50201C0134FFF755FF221C0F4BF605DC +:102BD0001B785BB29A400E4B72511B78002B07D0CA +:102BE000201CFFF747FF0B4B1B785BB29C407451D6 +:102BF00070BDC046882E00200C2E002000F0014041 +:102C00007C270020782700200C0500000901002007 +:102C1000080100200A010020F0B53E4E8DB0331CA3 +:102C20000833DB6F041C002B02D1FFF7B1FF6EE00D +:102C3000002801D0F3F7F6FF6846EDF7D1FA002837 +:102C40000CD1331C0833D86FF5F7BAFA051CEDF731 +:102C5000DDFA002C25D0F3F7EDFF22E0002C01D0A7 +:102C6000F3F7E8FF019B2C491868F8F743FF0025AC +:102C7000041EAC4215D1019F381CEEF721FF274BF3 +:102C800098420BD1211C0120F7F71CF81F21051CCD +:102C9000F860221C2248F9F7C7F8A8600025019BBC +:102CA000336301271F4B1C68331D641101343C4002 +:102CB000DB6F64011C19002D07D10836201C291C6C +:102CC0002022F56718F0B5FA1FE0281CEEF7F8FE91 +:102CD000154B984209D0331C00220833134814497D +:102CE000DA6715F00CF9306311E06B682360AB68AC +:102CF0006360EB68A3602B69E3606B692361AB6978 +:102D00006361EB69A3612B6AE3610A4B1F700DB02D +:102D1000F0BDC046882E0020BCFA020090F80200E8 +:102D2000F6A60300742700203C07030000FD020004 +:102D300016A703000701002008B5FFF729FF014887 +:102D400008BDC04674E00200F0B587B00493574B4D +:102D500003901B780D1C161C002B01D0FFF718FFE9 +:102D6000534B1A78002A0AD1524C4020211C0831BA +:102D7000CA6701321A7010F06BFC0434E0678027D8 +:102D800001224D4BBF004D4CDF674D4BE250FFF72A +:102D90003BFD00234B4AF021A3500432A3500832DC +:102DA000A350C22209039200A150474AE35105945F +:102DB00095423BD1AE4233D11C1C444BA200D758A4 +:102DC000381C15F09FF9031CA0220321C133FF33E7 +:102DD0009B00D2059950631C019301238340019C01 +:102DE00002930426394BA200D558A123A0220299B0 +:102DF000DB00D205D150281C15F09AF9012848D1E2 +:102E0000A022334B0299D205D150281C15F090F91D +:102E100000283ED1013E002EE7D1381C291C07E0D6 +:102E20002C492D4815F06BF8EDF7F5F9281C311CED +:102E3000FFF76CFE0398F5F79BF91E4C0026231C48 +:102E400001253F220833D867244B80211E70244B74 +:102E50001D70244B1A60231DD86F521918F0E9F920 +:102E6000301CFFF7D9FE204B104F1D60059B301C16 +:102E70001D601E4950223D70F8F774F9049BB3425F +:102E800012D03B78002B0FD0236B002B0CD120BF2E +:102E9000F7E7012C01D10224A3E7019B0124022BB7 +:102EA0008BD113480849C3E707B0F0BD0C2E0020B2 +:102EB0000D2E0020882E002004E100E0009000404C +:102EC000FC0F00000405000074E00200140703007A +:102ED0000C05000028A7030000FD02000B2E0020B7 +:102EE00007010020742700200C9C00405D28010091 +:102EF0000805030010B5084B86B002AC009301949E +:102F00000423EDF7A3FB02982379A168E268FFF799 +:102F10001BFF024806B010BD8C07030074E00200DE +:102F2000014B1878C0B270470C2E002010B5242039 +:102F300010F08EFB041C044B802108C0202218F0E6 +:102F400078F9201C10BDC0463C070300F8B5051CED +:102F5000081C0C1C161CEEF7B3FD314FB8425CD1B7 +:102F6000681F0F2859D806F059FD080833585858DB +:102F70005858585858585813133EFFF7D7FF002396 +:102F8000E2181179C21801331171202BF8D1041CF9 +:102F9000301CEEF795FDB8423FD10120052D04D03D +:102FA000123D6B1E9D416D422843002173181B7911 +:102FB0006518803B43432A799B18FF2B03D9FF22D6 +:102FC000DB179A43131C01312B712029EED122E02B +:102FD000FFF7ACFF0023E2181179C2180133117119 +:102FE000202BF8D1041C301CEEF7B8FE0F2115F091 +:102FF000C6F8211C221D24311378803B4343DB1388 +:103000008033FF2B03D9FF25DB179D432B1C137047 +:1030100001328A42F0D1201C00E00020F8BDC046F9 +:103020003C07030008B5024816F076F8014808BDD1 +:10303000C828002074E0020008B5C30708D483073D +:1030400009D10368094A934202D0094A934202D146 +:10305000EEF720FE03E0EEF781FE07F0CBFD00283F +:1030600001DD00F081FF034808BDC04630D30200F7 +:103070003CCD020074E0020008B5034803F03EFDB9 +:1030800001234000184308BDC828002008B50348A4 +:1030900004F06EFE10F02EFE08BDC0461C2B002072 +:1030A00010B5031E064C02D1201C191C04E0086850 +:1030B000EEF7F0FD011C201C03F026FD014810BDB9 +:1030C000C828002074E00200031C203B5E2B00D9BE +:1030D0003F2005235843024BA0381B68181870473F +:1030E0008C00002038B5051C081C684301304010D6 +:1030F00008300C1C10F0ACFA0122044B85710360FF +:10310000037944719343037138BDC046140A030028 +:1031100010B5041C102010F09BFA044B0360636888 +:103120004360A368C3600023836010BDAC09030043 +:1031300038B5051C202010F08BFA0C4B041C0360E2 +:103140000520011CFFF7CEFF6B68EA68A0602361D1 +:1031500062602A7C201CA276AA689B1863616B7C43 +:10316000E37615F05DF8201C38BDC04670090300F9 +:1031700070B5061C081C141CEEF78CFD051C201CE9 +:10318000EEF788FD041C002D01DB002802DA0E4852 +:103190000E490BE0301C15F0ACF8854204DA301C07 +:1031A00015F0B5F8844205DB0748094914F0A7FE7D +:1031B000EDF731F8301C291C221C15F08DF8012385 +:1031C0004000184370BDC04610F802004AA7030033 +:1031D00063A70300F8B50C680D1C2379DB0702D543 +:1031E00019481A490DE04868EEF754FD071CA86815 +:1031F000EEF750FD061C002F01DB002805DA14480D +:10320000144914F07CFEEDF706F8E868EEF742FD8D +:10321000051E092D02D90E480F49F2E7201C15F0B2 +:1032200068F8874204DA201C15F071F8864202DB48 +:1032300007480A49E5E7201C391C321C2B1C15F0F5 +:103240002DF80748F8BDC04600FD020073A7030033 +:1032500010F802004AA70300A8A7030063A7030011 +:1032600074E00200F7B50E1C2749041C009213F00D +:10327000A0FC009B002B03D1201C244913F099FCD7 +:103280000025234F201C391C13F093FC0197301CA0 +:1032900015F03DF8854221DA0027301C15F029F899 +:1032A00087420CDA391C2A1C301C15F015F8194B12 +:1032B00019491A5C201C13F07CFC0137EDE7201C37 +:1032C000164913F076FC009B002B05D1301C15F03D +:1032D0001EF80138854211DB0135D8E7201C019921 +:1032E00013F067FC009B002B03D1201C0C4913F04A +:1032F00060FC201C0B4913F05CFCF7BD201C0A4944 +:1033000013F057FCE8E7C046C2A70300C9A70300B3 +:10331000D5A70300D7A703009341030070740300EF +:103320003F4B03001B430300CFA70300F0B51E1C57 +:1033300000238BB00F1C0093081C111C1A1C0333B4 +:10334000EDF752F9032F55D8381C06F067FB5602EB +:1033500010103068684B0340062B50D0830700D014 +:10336000C4E0664B02689A4200D0BFE047E0306894 +:10337000EEF790FC051C7068EEF78CFC0290029949 +:10338000281CFFF7AFFE0390022F02D114F099FF23 +:103390002EE0B06807A90122EEF73CFE002D08DB05 +:1033A000029B002B05DB00266B43089A371C9342D7 +:1033B00017D05348534914F0A2FDECF72CFF079B9C +:1033C0001A5D131C092A00D90923DBB20398321CA9 +:1033D00014F064FF0134049BE11B9C42EFD17F1980 +:1033E0000136029B9E4203D07B1904933C1CF2E7FA +:1033F00003987EE044484549DDE7454879E007A960 +:10340000F9F7CAF9079B041C0593012B03D1207817 +:1034100015F0F3F96DE00023221C181C1D1C059EFD +:10342000111BB14214DA11780A2901D03A2905D1C9 +:103430009D4200DA1D1C0130002307E001332029E2 +:1034400004D0392902D92E483249B4E70132E6E7DF +:1034500003900295002B05D0021C013203929D427D +:1034600000DA029302980399FFF73CFE0026071C3E +:10347000351C0494049B059A1B1B934227DA049B7A +:103480001B780A2B01D03A2B0DD1029B9D4207DA03 +:10349000291C381C321C002314F000FF0135F4E70E +:1034A000013600250FE0202B04D1381C291C321CCA +:1034B000002305E0392B06D8381C291C321C303B70 +:1034C00014F0ECFE0135049B01330493D2E7039B17 +:1034D000381C9E420DDA029B381C9D4209DA291CD9 +:1034E000321C002314F0DAFE0135F4E706480A49DD +:1034F00061E70BB0F0BDC046070080FF80CA020044 +:1035000010F802000CA8030000FD020029A8030027 +:10351000000A0300E2A7030048A80300F0B585B045 +:103520000191051C081C002106F068FC041E05D052 +:103530002349244814F0E3FCECF76DFE281C14F03A +:10354000D8FE061C281C14F0E2FE011C301CFFF7FC +:10355000C9FD071C281C14F0CCFE84422CDA00267E +:10356000281C14F0C6FE864224DA321C211C281CBA +:1035700014F0B2FE07F05EFB019907F08BF809F03A +:10358000D5F90022104B07F0E5FB104B002202900A +:10359000039106F0F9FB0923002804D0029803994F +:1035A00009F052F9031C321C381C211C14F076FE61 +:1035B0000136D5E70134CDE7381C05B0F0BDC04673 +:1035C00061A8030010F802000000E03F0000224064 +:1035D000F0B587B003910592061C14F098FE041C08 +:1035E000301C14F086FE0190039814F090FE071E24 +:1035F000A74205D01B491C4814F081FCECF70BFED8 +:103600000198391CFFF76EFD00240290019B9C423B +:1036100024DA0025BD421FDA211C2A1C301C14F0BC +:103620005BFE211C04902A1C039814F055FE059B98 +:10363000002B05D0049BC318092B06DD092304E0E9 +:10364000049B1B1ADA43D21713402A1C0298211C30 +:1036500014F024FE0135DDE70134D7E7029807B006 +:10366000F0BDC0468DA8030010F80200F8B5041C98 +:10367000081C0E1C151CEEF723FA164FB84226D173 +:10368000053C042C23D8201C06F0C8F9141403218F +:103690000700281CEEF762FB07E0281CEEF75EFB34 +:1036A000011CFE20800506F003FE011C301CFFF704 +:1036B00035FF0DE0281CEEF703FAB84207D162424D +:1036C0006241301CD2B2291CFFF782FF00E00020CB +:1036D000F8BDC046140A0300F7B5071C0193142077 +:1036E00008AB0E1C151C1C780FF0B2FF044B476092 +:1036F00003606B461B798660C56003744474FEBD2D +:10370000E40C030038B5051C0C200FF0A1FF054B9D +:10371000041C456003600520011CFFF7E3FCA0606A +:10372000201C38BD500D030030B5124B8BB003ACDC +:1037300020C90138009301940323ECF787FF06A802 +:1037400061680FF003FA039B089A5900237A0093EB +:103750006868079B02F0C4FD021E05D006490748B1 +:10376000FDF712FEECF757FD06A90548F8F726FB12 +:103770000BB030BD980D0300ABA80300C0F90200E8 +:1037800048EF020030B5114B89B002AC20C90138B6 +:10379000009301940323ECF759FF606805A9012207 +:1037A000EEF738FC029B059A5900237A009368686B +:1037B000069B02F0DFFD021E05D005490548FDF716 +:1037C000E3FDECF728FD044809B030BDD00D03003F +:1037D000CEA80300C0F9020074E00200802108B501 +:1037E000C905064803F01CF9FE23FE2140029B0593 +:1037F000400A1843890507F07FF808BDC828002053 +:1038000038B50D1CEEF7AAFA041C281CEEF7A6FA30 +:10381000211C07F071F8051CFFF7E0FF011C281CB4 +:1038200006F038FF011C201C06F0C6FB032398435A +:10383000013B1843014BC01838BDC04600008080D2 +:1038400008B5FFF7CBFF03239843013B1843014B17 +:10385000C01808BD00008080F7B5019008680E1CF4 +:10386000EEF718FA019B041C1B4D012B06D1002812 +:1038700024DD281C211C03F0D3F829E07068EEF742 +:1038800009FA019B071C022B06D1844216DA011BA0 +:10389000281C03F0C5F81AE0B068EEF7FBF9061E25 +:1038A00002DDE043C01903E0002807D0381B0130D7 +:1038B000311C801906F060F9011E04DC074814F081 +:1038C00011FBECF7A8FC281C03F0AAF870430019C0 +:1038D00010F010FAFEBDC046C828002010F8020003 +:1038E00038B5094C094D002802D00868A04203D120 +:1038F000281C03F0BBF805E0EEF7F8F9011C281CC2 +:1039000015F00DFC201C38BD74E00200C828002012 +:1039100010B5041CEEF734FBEEF7BCF9011E04DC15 +:10392000074814F0DFFAECF776FC064803F078F865 +:1039300010F0E0F90422011C201CEEF737FB10BD4B +:103940006CF90200C828002038B50D1CEEF7A2F96A +:10395000041C281CEEF79EF9844204DD064814F08E +:10396000C1FAECF758FC0130011B044803F058F889 +:10397000001910F0BFF938BD10F80200C828002067 +:1039800010B5EEF787F9041E1E2C01DC002804D1C7 +:10399000094814F0A7FAECF73EFC80210748C90556 +:1039A00003F03EF8202301221B1B5242DA40104054 +:1039B00010F0BBF910BDC04610F80200C828002066 +:1039C00008B5406815F036FD024B002800D1024BC7 +:1039D000181C08BD34CD020078CD020070B5061C5D +:1039E000F7F70CFB0E4B0F4A0F4C9A620022DA627B +:1039F0000E4A5B629A630E49201C15F02EF80D4D9D +:103A0000281C04F097FD706803F018FC281C04F0D3 +:103A10009BFD201C15F010F8F7F7E0FA064870BD82 +:103A2000C828002019640100D4280020138802004F +:103A300070170000CC29002074E0020008B540682F +:103A400015F000FD004808BD74E00200F8B5094E0D +:103A50003378002B0CD1084D2C78E4B2002C07D120 +:103A6000012700682F7003685B6898472C703770D7 +:103A7000F8BDC0460E2E00200F2E002008B50348CA +:103A80000349044A13F095F8034808BD10F00200FA +:103A9000C7A40300F2A8030074E0020008B50348BD +:103AA0000349044A13F085F8034808BD10F00200EA +:103AB000C7A4030036AA030074E00200F0B51D4B52 +:103AC0008BB004AC20C90138009301940623ECF7B5 +:103AD000BDFD1723E068184E0393B04202D014F0E6 +:103AE00011FB039020691527B04202D014F00AFBA5 +:103AF000071C60691622B04202D014F003FB021CBE +:103B00006B4601201B7B0435404279B2009052B2D3 +:103B1000281C5BB201F008FD281C6168A268002324 +:103B200001F088FC281C049901F0BCFC301C0BB08F +:103B3000F0BDC0464C10030074E0020070B586B0C2 +:103B4000061C0122081C03A9EEF764FA039D2C1C35 +:103B5000049A631B0192934205D22178301D01F033 +:103B6000CDFD0134F4E7014806B070BD74E00200F9 +:103B7000F0B5141C89B00122071C081C02A9EEF73D +:103B800049FA201C002405A90222029DEEF742FA00 +:103B9000059E039B01939C4206D2295D381D01F0CE +:103BA000ADFD30550134F4E7014809B0F0BDC04621 +:103BB00074E00200F0B5051C87B048680C1C0F6863 +:103BC000EEF768F8011C02A80EF0C0FF0026032DD6 +:103BD00003D1A068EEF75EF8061C0024039B019356 +:103BE0009C4209D2049B381D311C1D19019301F020 +:103BF00085FD01342870F1E702A90248F8F7DEF8E4 +:103C000007B0F0BD48EF0200F0B5051C00248BB0F2 +:103C10001A4B1B48E158FFF781FC03AB18510434E1 +:103C20001C2CF5D1142300266B4300930024154F60 +:103C300003AB1959381C14F053FE0434281C00F04F +:103C400093F901971C2CF2D109AC02AF21680198BD +:103C500014F046FE043C281C00F086F9BC42F5D165 +:103C60000136082E05D0F307E0D4009800F07CF967 +:103C7000DCE701F033F90BB0F0BDC0463C110300A6 +:103C8000FCFF02005000002008B51920FFF7BCFF20 +:103C9000004808BD74E0020008B50430F2F734F8BB +:103CA000004808BD74E0020008B5043010F0F3F8D5 +:103CB000004808BD74E002000B1CF0B5061CC1886A +:103CC00087B0151C00681A1C0023EEF7BBF8041C13 +:103CD000002D40D0042D14D103204443B1680C19A9 +:103CE0000121627852000A43039222788A400A43F3 +:103CF0000492A3788B400B4303A90593F5F7E2FFE9 +:103D00002AE0281C032103AAEEF788F8039B186811 +:103D1000EDF7C0FF039B071C5868EDF7BBFF039B43 +:103D2000051C9868EDF7B6FFFF2F03D8FF2D01D8CB +:103D3000FF2805D909490A4814F0E1F8ECF76BFAB5 +:103D4000C0B204360090A1B2FAB2EBB2301C10F04F +:103D5000B7F8044800E0281C07B0F0BD0EAB030024 +:103D600010F8020074E0020073B51C1C081C00234C +:103D7000111C02220093131CECF736FC206814F08F +:103D8000C1F9051C6068EDF785FF041E05DC0949D3 +:103D9000094814F0B4F8ECF73EFA0C200FF058FC88 +:103DA000061C064BE9B208C0A2B2F1F783FF301C33 +:103DB00076BDC0461DAB030010F80200D41103000D +:103DC00010B50F4814F0D4FE002817D00D4814F099 +:103DD0008DFE0D4B1B68984203D10C4B9A6E1A63F3 +:103DE0000CE03F220A490B8801331340094A12882C +:103DF000934203D00A88084C0B80A05410BDC046E3 +:103E00001C2900205C29002080270020882E00200B +:103E1000E42D0020E22D0020102E0020002208B505 +:103E2000084B09481A80094B09491A8014F0A5FE6D +:103E30000122084B524208481A6014F053F8074B0D +:103E4000986608BDE42D00201C290020E22D0020EA +:103E5000C13D010080270020C8F70200882E002005 +:103E600010B5041C431C03D0034B986EFDF7ECFA0D +:103E7000024B1C6010BDC046882E00208027002009 +:103E8000034B044A1B881088181A431E9841704738 +:103E9000E22D0020E42D0020084B094A19881288E1 +:103EA000914201D130BFF7E71A880649885C3F216B +:103EB0001A8801320A401A807047C046E22D00205D +:103EC000E42D0020102E002038B5041C4518AC420B +:103ED00005D02178024814F0FEFD0134F7E738BD23 +:103EE0005C29002070B5041C4518AC420DD0237825 +:103EF000064E0A2B03D1301C0D2114F0ECFD217865 +:103F0000301C14F0E8FD0134EFE770BD5C2900209F +:103F100010B5041C002C08D0211E082900D9082146 +:103F20000248641AFFF7D0FFF4E710BD36AB030078 +:103F300038B5051C041C002C08D0211E082900D906 +:103F400008210448641AFFF7BFFFF4E7281CFFF7B5 +:103F5000DFFF38BD3FAB030008B5011C014814F07A +:103F60001DFD08BD5000002070B5002814D00B4D79 +:103F7000041C281C02F0C2FD0419061C844205D250 +:103F800030BF281C02F0BAFDB042F9D830BF281C5F +:103F900002F0B4FDA042F9D370BDC046C82800208D +:103FA0002022074B07491A701D3A5A7004329A7042 +:103FB00000220548DA7059601A725A727047C0467A +:103FC000882700207469627574E0020008B503490F +:103FD000034813F094FFECF71EF9C04654AB0300FE +:103FE00010F8020002220A4B10B5DA670022012104 +:103FF000084B5A61084A11615A69002AFCD0074CE3 +:10400000A06F002803D00FF04AFB0023A36710BD68 +:1040100004E100E0FC10004000100040882E002069 +:1040200008B5FFF7DFFF014808BDC04674E0020095 +:10403000F8B5FFF7D7FF334C2678657801360135A0 +:104040007543281C0FF004FB00222F4B451998677D +:104050002E4B80191D602E4B012118602D4B5A608C +:104060008022D20511605A68002AFCD003212A4B15 +:1040700061562A4A00259950A178043A9950617AEC +:10408000083299506168264A08269950217A254AB3 +:10409000254F99500121254A9D5004329950244AB8 +:1040A0009E5022788124A4042243A324E4001A51C0 +:1040B0000222204C1A51204C1F51204F043C1F510A +:1040C00018271F4C1F511F4C1851C120C0248000BD +:1040D0001E501D48640002510260802080001A5862 +:1040E000713CFF3C22431A50184A5560596053688E +:1040F000002BFCD00022154B1A61074B01329A604D +:10410000F8BDC04688270020882E00208427002084 +:1041100094270020FC000040001000400C05000027 +:104120001C05000024050000FFFF00002C05000016 +:1041300014050000340500003C05000021100100BA +:10414000540500000405000000E100E0FC10004000 +:1041500008B5FFF76DFF014808BDC04674E00200D6 +:10416000F0B5161C8DB0002804D07149714813F0C9 +:10417000C6FE3CE0704B09AA191CB0C9B0C21A783F +:104180009F7805925A78DD7806925A6804900192D9 +:104190001A7A5B7A0392029308E0631EFA2B00D925 +:1041A000C0E0E3B20593049B01330493049B72685F +:1041B00093421ED2049BDB000793079AB3689B18B7 +:1041C0001A68002AEFD0042AEDD05868EDF78EFD6A +:1041D000B368079A041C9858F7F748FE574B021C1F +:1041E000C01806287AD956485649FDF7CDF8ECF79D +:1041F00012F8554B09AC9B6F002B13D16B461B7DFE +:10420000A77023706B461B7EE5706370019B0A9359 +:104210006B461B7B23726B461B7A6372464B07CC43 +:1042200007C382E06B461B7D434E23706B461B7EAB +:104230006370228833889A4210D0FFF7D3FE019B27 +:10424000A7700A936B461B7BE57023726B461B7A43 +:1042500063720ECC0EC6FFF7EBFE66E002223B4B0C +:104260003B49DA6700238C464B613A4B013A1A61AD +:1042700063465B69374A002BFAD06946019809AB5F +:104280000A90087BDD701872087A9F7058722A486D +:104290006DB252CB52C0304B0298D550043BD75030 +:1042A0000833D05001982D4BD05003982C4BD05050 +:1042B0000020274B58600123536063465B68002B46 +:1042C000FBD00022C021224B49001A61214B013250 +:1042D0009A60244B01325A501A6026E005F0A8FB80 +:1042E0005DFF07000D00110016001B001D00631E7E +:1042F000FD2B17D8E3B2069355E7642C12D8E7B22A +:1043000051E7072C0ED8184B1D5D4CE7022C09D83D +:10431000E3B2029347E7019445E7FF2C02D8E3B2EA +:10432000039340E7064811495FE711480DB0F0BD1F +:1043300069AB030000FD02008827002039FDFFFF64 +:1043400010F802008DAB0300882E002004E100E08D +:10435000FC100040001000400C0500001C0500008F +:104360002405000000E100E04CAB0300A3AB030018 +:1043700074E00200F0B52B4B85B09D6F002D01D18C +:10438000FFF724FE0222A3242749E400CA67274935 +:10439000274E0C59274BE4B201342C1935681F1CE9 +:1043A0000391A54202D11A60234838E025780028FD +:1043B00004D1601C291CF7F74FFD0EE0022D26D911 +:1043C0006378012B23D1A278002A20D1E378012B36 +:1043D0001DD1201DE91EF7F727FD691CED43336849 +:1043E00061185A1A0190201C029316F00EFF029BCE +:1043F000039A5D19114B3560D5500022104B01987E +:104400001A610123039A9360DB183B6007E00223E3 +:104410000C493B600C4813F072FDEBF7FCFE05B055 +:10442000F0BDC046882E002004E100E000100040EE +:104430009427002000E100E074E002000405000081 +:10444000FC100040C8AB030010F80200184B30B558 +:104450005A681849002A03D000225A6001328A6043 +:104460001B69002B22D00022114B13481A61A32391 +:10447000104ADB000468D3582278DBB29A4201D993 +:104480001A1C23708025ED004D59012D0CD10B4DC8 +:1044900002339B182D68E3189D4205D30132A21800 +:1044A0000260074B0348C25001238B6030BDC046F9 +:1044B000FC100040001000409427002084270020BA +:1044C00004050000F7B5364D0C1CA96F8446019217 +:1044D0001E1C002901D1FFF779FDA3233148DB0021 +:1044E000C258A319D2B2071C934204D9161B944296 +:1044F00001D9141C002633190B70AB6F6146581C90 +:10450000221C16F079FE002E06D0AB6F013418196C +:104510000199321C16F070FE0222234BDA6700224A +:10452000224B5A6101323A615A691E49002AFBD076 +:104530000024A86F1E4A88501C484460012008606F +:10454000111C5A68002AFCD00120164A90600020F5 +:10455000164A10611869134A0028FBD015480068F4 +:104560005050002011494861012111615A69002A07 +:10457000FCD000210D4A51600A4A013151605A684D +:10458000002AFCD00022C021084B49001A61054BCB +:1045900001329A60084B01325A501A60F7BDC0468A +:1045A000882E00200010004004E100E0FC100040D4 +:1045B000040500009427002000E100E007B501A9F0 +:1045C000F8F7EAF80321021C019B0248FFF77AFF83 +:1045D00001480EBD48AB030074E002001FB5012284 +:1045E00001A9EDF717FD002201980299131CFFF7AE +:1045F00069FF014805B000BD74E002007822044B59 +:1046000004481A80743A5A801A715A717047C04629 +:10461000F800002074E0020013B5074C20880FF06A +:1046200069FB009060880FF065FB694601900220ED +:10463000F5F748FB16BDC046F800002008B5031E7C +:10464000064802D00868FEF7BFF8002104F0D2F84F +:104650000022034B03481A7008BDC046302B0020CF +:10466000502E002074E002001FB50A4B02AC0093EC +:1046700001940223EBF7EAFF029B002B01D0064ACC +:1046800053806368002B01D0034A1380034804B0B1 +:1046900010BDC04604140300F800002074E00200BE +:1046A00008B5074B1A78002A09D0064A126B002A6F +:1046B000F7D000211970044B186804F09BF808BD6E +:1046C000502E0020882E002098270020F0B51B4B8C +:1046D00087B002AE009301960423EBF7B7FFB068F2 +:1046E0007568029FFEF770F88021041C367B04F089 +:1046F00081F8391C124805F0AFF9011C201C04F0A8 +:10470000E1F8002D17DB00230E4A0F4912680B70E9 +:10471000AD180E4A15600E4A13700E4A13800E4AE9 +:1047200013800E4A53670E4B1C6002230B70002E41 +:1047300001D0FFF7B5FF0B4807B0F0BDA014030090 +:1047400040420F00FC2C0020502E00209C2700200F +:10475000512E0020E82D0020E62D0020882E00207C +:104760009827002074E0020030B5224B89B004ACD9 +:10477000009301940423EBF769FF04221E4B049875 +:104780001A715A711D4B0340062B06D0830729D19D +:1047900003689A691A4B9A4224D101230394029325 +:1047A0006068FEF711F800221649174B0D6817498B +:1047B0001A700D60257B16490D701649029D0D80FB +:1047C00015490A800399154A012D00D109685167DE +:1047D000134A106001221A70237A002B07D0FFF7CA +:1047E0005FFF04E002A903AAEDF7F6FAD8E70D4847 +:1047F00009B030BD40140300F8000020070080FF1E +:1048000079CD0000FC2C0020502E00209C27002099 +:10481000512E0020E82D0020E62D0020882E0020BB +:104820009827002074E00200F0B5724C87B023781E +:10483000002B00D1DBE0704D704E2A6833682F1CCE +:10484000934200D2D3E02378022B0AD16C4B002193 +:10485000186803F0CFFF33680A332B6001232370FD +:10486000C5E0644B1B78012B00D0C0E0654B198874 +:10487000654B1A888A4208D3644A1278002A02D00B +:1048800000221A8001E02270B1E0614A012901D1C1 +:10489000506F03E01B88526F9B0098585D4B584C3B +:1048A0005D4D98420CD10021206803F0A3FF2988B8 +:1048B0005A4805F061F901234E4A3860137096E0BA +:1048C00005A9F7F769FF2768059B061C8021381C9E +:1048D000009303F08FFF1F23347829884F481C4032 +:1048E00005F04AF9698805F047F9009B013CE4B2FC +:1048F0000290012B10D97378232B09D0622B0BD196 +:10490000002C04D0013CE4B2012C09D000E00624C4 +:1049100002230120002206E000200123019003E091 +:104920000223201CFF220192009A934207D2F25CDC +:104930003A2A04D00F2101330A402A71DBB2364AE9 +:10494000944612790392009A934217D2F15C3A2965 +:1049500014D1591CC9B2914210D2755C0F21624624 +:104960000D4055710233009ADBB2934206D20A22FF +:10497000F35C5543194063466D185D71092C1DD8D1 +:104980000399019B0439CA1852B2640000280CD064 +:10499000234B002A01DB195B0BE01B5B51428B4070 +:1049A000191C381C03F08EFF0CE01E4B195B002A0B +:1049B00001DB1141F5E752429140F2E7381C00213A +:1049C00003F018FF6B461A7A134B5B7953430A3B8B +:1049D000092B00DC0A23094A12689B18064A136057 +:1049E000094A1388013313800222024B1A7007B060 +:1049F000F0BDC046502E00209C270020FC2C00203B +:104A000098270020E82D0020E62D0020512E0020C0 +:104A1000882E002074E00200F800002060EA000008 +:104A20004C2403003E2403000023FA21084A890095 +:104A30001360084A1370084A1360084A1160084A54 +:104A40001370084AD36613670122074B1A70704728 +:104A5000A0270020522E0020A42700204C00002078 +:104A6000542E0020882E0020532E002008B5084B1D +:104A70001A78002A08D1074B1B6B002B02D0FFF7D6 +:104A8000D3FF03E030BFF2E700221A7008BDC04632 +:104A9000532E0020882E0020012383770048704782 +:104AA00074E002000023E021A0228377024B090278 +:104AB000D2050248D15070470C05000074E0020096 +:104AC000837F0248002B00D10148704734CD02009B +:104AD00078CD020010B5A0241049E4054B7F081CD6 +:104AE0005A1C002B05D1498C0D4B8B430D4963504B +:104AF0000EE010335B00CB185988A123DB00E15096 +:104B0000092A05D10120F6F761FB0120404203E0AC +:104B1000054B42775200D05A10BDC04650000020CD +:104B2000F01F00000C0500005A24030073B51B4D54 +:104B3000041EEE6E09D11A4D2B78002B2BD019488C +:104B4000194913F0CDFE2C7027E0ECF7B9FF174B95 +:104B5000984202D1301C211C15E0154B2340062B36 +:104B600005D0A30712D1134B22689A420ED1201C04 +:104B700001A9F7F711FE019B012B0CD1007813F06E +:104B80003CFE011C301C13F0ABFE06E00A480B494A +:104B900013F0B5F92863FFF747FF73BD882E002097 +:104BA000542E002050000020000A0300140A0300C5 +:104BB000070080FF80CA020000FD0200E8AB03008E +:104BC000F7B5A123A021214AC905DB00CA50012263 +:104BD000C37F1F4D0D339A404A51C37F0195013366 +:104BE000DBB2032B00D10023C377011C031C363139 +:104BF000223300221A8002338B42FAD1C77F154933 +:104C00007B000133CB18591E0E7805217143012614 +:104C1000351C1C78063309190F4C6118141DA5406A +:104C20002C1C09799219490041184D8C2C434C8455 +:104C3000092AE8D10D37A023A122BE40DB05D2000E +:104C40009E50828E01995A50F7BDC046F01F000059 +:104C50000C0500000BAC03005000002070B5304C78 +:104C60008CB0A37F002B59D0201CFFF7A9FF2D4A41 +:104C70002D4913680968063313608B4241D3002520 +:104C80002A4B15601B78012B06D0022B39D1201C32 +:104C9000274913F025FE32E0264BDA6E1E1C002A4F +:104CA0002DD01B6F002B2AD0F1F7BCFF6846EBF725 +:104CB00097FA002809D1204B1868F3F781FA051CF0 +:104CC000EBF7A4FAF1F7B6FF15E0F1F7B3FF019B9C +:104CD0001A491868F6F70EFF00280CD10198ECF776 +:104CE000EFFE174B984203D11648174911F061FFA8 +:104CF0000025019B3363281CFFF718FF01E0FFF735 +:104D000093FE0023228C6377FF33FF331A4205D0D2 +:104D1000E12201200D49D200F6F724FA0CB070BD53 +:104D200050000020A42700204C000020522E00201C +:104D3000000A0300882E0020A0270020BCFA0200F1 +:104D400090F8020010F00200F6A60300D54A010018 +:104D5000F7B50024009308AB124D1B78061C081C05 +:104D6000171C0193EC662C67F3F702FA6A460E4BA8 +:104D7000127818600D4BEE661F600D4B28671A7095 +:104D80000C4B1C70F3F71CFAFFF7D0FE01220A4B04 +:104D90001C600A4B1A70019BA34201D0FFF766FE0C +:104DA000F7BDC046882E0020A02700204C00002020 +:104DB000542E0020532E0020A4270020522E002025 +:104DC000F0B500242C4B8DB0DC661C672B4B07AC78 +:104DD00040C90138009301940523EBF737FC07988D +:104DE000636805900293237B257A0393244B277CE9 +:104DF0000340062B05D0830718D1224B02689A4244 +:104E000014D106A9F7F7C8FC069B002B30D0012B64 +:104E100008D1002D06D1002F04D1007813F0EDFC4D +:104E2000059021E00598FEF76DFC0AE0ECF748FEDE +:104E3000154B984206D1002D14D0012005A9F4F796 +:104E400041FF0590237C002B03D00598EEF72EFF41 +:104E50000590039B301C00930599029A2B1CFFF7C9 +:104E600077FF05E0002FE8D1301C059913F038FDDD +:104E700006480DB0F0BDC046882E00201C1503006A +:104E8000070080FF80CA0200140A030074E00200D9 +:104E900030B5104B89B003AC20C9013800930194A0 +:104EA0000523EBF7D3FB02A90398F7F775FC227CE7 +:104EB000237B02990092039AFEF70EFC237A011CD1 +:104EC0000093281C62680023FFF742FF024809B0E4 +:104ED00030BDC046EC15030074E00200002208B5A6 +:104EE000064B1A70064B02321A70064B064A1B68B4 +:104EF000063B1360FFF7BAFD08BDC046532E0020E5 +:104F0000522E00204C000020A427002008B5FFF7F7 +:104F1000E5FF014808BDC04674E0020010B5042951 +:104F200001D8042A02D90B480B4903E0092B05D903 +:104F300008480A4912F0E3FFEBF76DF905246143D5 +:104F40008A188218137101229A40131C028C134391 +:104F5000038410BD10F80200F6AB0300A8A70300FD +:104F6000F8B548680C1C0F68ECF794FE061CA068A6 +:104F7000ECF790FE051CE068ECF78CFE311C031C7E +:104F80002A1C381CFFF7CAFF0048F8BD74E0020075 +:104F900008B5042901D8042A05D90649064812F0A3 +:104FA000AEFFEBF738F9052359438A1880180079CA +:104FB00008BDC046F6AB030010F8020008B5064B6A +:104FC0001A680823D16C0B43D364FDF70FFAFDF781 +:104FD000FBFAF4F71BF9FCE7EC2C002008B50948B4 +:104FE00003F0B2FA13F004FDEFF75CF9064813F092 +:104FF00023FD0648F6F714F8F5F7F0FFF0F704F98B +:1050000008BDC046CC290020D42800201150010042 +:1050100038B5114C201C14F011FA002803D00F4BA6 +:105020001B78002B14D000230D4A0E4C13700E4A2F +:105030000E4D13702068002802D003681B68984743 +:105040000434AC42F6D1FFF709FEFFF7EDFB38BDA3 +:10505000201C14F06FF9E6E7E02A00200F2E002054 +:105060000E2E0020742900200A2E00209C290020EA +:1050700010B5041C044B0833036013F0DDFC201C46 +:1050800000F04EF8201C10BD18B602001FB5041C1D +:1050900000F044FF0B4B01A81A1C3C336360002353 +:1050A0000832636122600849221C0CF0B5FE0749F2 +:1050B00001A80BF0E3FE606113F0BFFD201C04B0FB +:1050C00010BDC04630B6020041AC030045AC030041 +:1050D000074B10B51A1C041C08323C3302604360B5 +:1050E00040690BF05BFD201C00F02CFF201C10BD64 +:1050F00030B60200084B10B508330360002343604C +:105100008360C360041C00F065F90449206113F05A +:105110001EFE201C10BDC04678B60200FF8A0200A9 +:1051200010B5041C034B0833036013F0F5FC201C7E +:1051300010BDC04678B6020038B50C4B041C0360A5 +:10514000002343608360C3600362436283639623EA +:10515000051D9B01C363281C00F0CEFD281C0449DB +:10516000221C00F065FE201C38BDC04698B6020027 +:10517000278B020008B5054B1B68002B04D104489F +:105180001821192200F0B8FD08BDC046B82800203B +:10519000CC2F0020074B083303600023064A9958A0 +:1051A000814201D100219950802204335200934260 +:1051B000F4D17047A0B60200A8270020F0B50F1C5C +:1051C00085B02F49051C16F02FF9041E02D1FFF7F8 +:1051D000D1FF52E0281C2B4916F026F9002803D1F4 +:1051E000FFF7C8FF012448E0281C274916F01CF9E6 +:1051F0000024A04206D1FFF7BDFF02343DE0013498 +:10520000402C0FD0214BA600F2580193002AF6D172 +:105210000BE002A8291C13F0C8FE02A813F011FF2E +:1052200000280CD10124644227E02B783A2BF0D1DE +:10523000281C174902AA0CF011FE029818E002A8D7 +:1052400013F0E9FE002803D002A813F0EEFE0FE0F1 +:1052500002A813F0D7FE051EE4D0036802A89B68DD +:10526000009313F0C2FE3A1C011C009B281C9847B7 +:105270000028D7D0019B03349851201C05B0F0BD05 +:1052800048AC030057AC03004FAC0300A827002034 +:1052900041AC030008B5031C0020022B0DDD0749BB +:1052A000033B9B005A585850824204D01368101C8C +:1052B0005B68984701E00120404208BDA827002014 +:1052C00070B50C1C151C022810DC0F4B1B68002B42 +:1052D00001D1FFF74FFF6619B44205D021780B4882 +:1052E00000F0F6FD0134F7E7281C0BE00338084B0B +:1052F0008000C058002803D003681B68984701E06D +:105300000120404270BDC046B8280020CC2F0020AC +:10531000A827002010B50C1C02280BDC0C4B1B68C6 +:10532000002B01D1FFF726FF0A4813F017FE20706B +:1053300001200BE00338084B8000C058002803D040 +:1053400003689B68984701E00120404210BDC046B9 +:10535000B8280020CC2F0020A827002008B5031C67 +:105360000120022B0BDD033B054A9B0098580028C7 +:1053700003D00368DB68984701E00120404208BD84 +:10538000A827002008B5031C0020022B0BDD033BDF +:1053900005489B001858002803D003681B699847EC +:1053A00001E00120404208BDA8270020074A1368F9 +:1053B0001818EFF30881884205D30C220120044B12 +:1053C00040421A6001E01060181C704788000020FD +:1053D000D42F0020004870474816030008B5024843 +:1053E00013F0BEFC08BDC04648160300084802681A +:1053F00003210A4302600749074A084B9B1A03DD51 +:10540000043BC858D050FBDC05488047054800479E +:1054100024050040ACB1030000000020280100205A +:10542000695F010075010000FEE7FEE7FEE7FEE7A9 +:10543000FEE7FEE770B51D1CA023041C161CDB0054 +:10544000002D03D000224068C25001E00268D55010 +:10545000082902D0104813F02CFC032E0AD8301C67 +:1054600004F0DCFA0B020406022307E0042305E043 +:10547000062303E0094813F01CFC0023A02208487F +:10548000D200002D03D061680B50022302E0216896 +:105490000B5001238B5070BD5FAC030078AC030050 +:1054A00054050000036810B55A1C2ED0A02200201D +:1054B000164CD2009850101C154AA14202DC8021E3 +:1054C00089041FE0134CA14202DC8021C90419E0C9 +:1054D000114CA14202DC8021090513E00F4CA142CE +:1054E00002DC802149050DE00D4CA14202DC802147 +:1054F000890507E00B4CA14202DC8021C90501E0CF +:1055000080210906995001221A5010BD8FD0030046 +:10551000240500001FA107003F420F007F841E00EA +:10552000FF083D00FF117A00F7B5009308AB1B7828 +:10553000051C5BB20F1C161C0193013329D1624B71 +:105540001A78022A10D15978FAB291420CD199787E +:10555000F2B2914208D1DA786B461B789A4203D1B5 +:1055600001235A4C03723BE0594A1378DBB2022BF9 +:105570000FD15078F9B288420BD19078F1B28842BD +:1055800007D1D1786A461278914202D12B72514CE0 +:1055900026E04F4B1A78002A0BD10232F9B21A706A +:1055A0005970F1B29970694609782A72D970494CDC +:1055B00013E0454B1A78002A0CD102321A70FAB265 +:1055C0005A70F2B29A706A461278404CDA7001232F +:1055D0002B7202E0404813F06CFB019B01332ED18B +:1055E00001235B426B60012000233C4A391C2C6084 +:1055F000A350A050A022C131FF31D20589008850AC +:10560000374967500099C131FF3189008850A12185 +:105610000098C9006050311CC131FF3189008B50A6 +:10562000A222D200A650FC34281CE36008211A1CD8 +:10563000FFF700FF281C2B49FFF734FF42E001234E +:1056400000225B422B60254B6C60E2500123234912 +:10565000381C6350A021C130FF30C9058000425082 +:10566000301CC130FF30800042500098C130FF3004 +:10567000800042500198C130FF3080004250A2218A +:10568000C9006750164900986650043960501649A1 +:1056900001986050211CFC318A60CA62A721C900B0 +:1056A000635010316350114811496050114912483C +:1056B00060508021042089006050F939281CFF398E +:1056C000FFF7B8FEF7BDC046572E0020003000405F +:1056D0005B2E00200040004089AC0300FC0F00005E +:1056E0000C05000040420F0014050000562E00205B +:1056F0004405000034050000552E002003681A1CE4 +:10570000FC32D0680028FAD105481950D168012927 +:10571000FCD10021D160A322D20098587047C04626 +:105720001C050000084B0068C150084B021CFC32ED +:10573000116A002904D1013B002BF7D1012001E0BF +:10574000002010627047C0461C050000A1860100C1 +:1057500010B50368002A03D08022022092009850DE +:1057600001221A62084A1C1CFC34E068002804D19B +:10577000013A002AF7D1012005E00020A322E060D1 +:10578000D2009B580B7010BDA186010010B50B4CC8 +:1057900002680B4BA14204DC0A498160CC21490418 +:1057A0000AE0094CA14203DC08498160802102E043 +:1057B00007498160CD21C904D15010BD8FD00300AD +:1057C00024050000A08601007F1A060090D0030087 +:1057D000801A060070B5041C101CA025C026C1301C +:1057E000FF30F600ED0580004651081CC130FF3047 +:1057F00080004651A1252068ED004251054A8150A4 +:10580000191C201CFFF7C2FFA02305212268DB0022 +:10581000D15070BD0C050000F8B50E1C151C041C01 +:1058200000F0FEF82648F2B20378011CDBB2012B2F +:1058300006D14778974203D18778E8B2874211D0E2 +:105840002048EFB20378012B05D14378934202D16F +:105850008078B84211D00878002806D101230B7057 +:105860004A708F706373184B15E0164B1978002936 +:1058700007D1013119705A709F7002236373134B63 +:1058800009E0134813F015FA0023FC222360657128 +:1058900026719362FFDE191C0022FC3123606571C2 +:1058A00026718A62A021C9005A500A49201C5A5008 +:1058B00001325A50311C2A1C074BFFF78BFFF8BDF1 +:1058C000572E00205B2E002000300040004000409A +:1058D0009AAC0300FC0F0000A0860100026808B526 +:1058E000031C101C0021FC308162A020C00011505C +:1058F00006481150013111500421052259569A567B +:10590000181C9B68FFF766FF08BDC046FC0F00002F +:10591000036800211A1CFC3210B5916001315961F5 +:10592000074B9168002904D1013B002BF9D10120DC +:1059300004E000240473FFF7D1FF201C10BDC04613 +:10594000A1860100036810B5191CFC318A6A002089 +:10595000012A08D1044C1C5988625A610238A407F4 +:1059600001D40120404210BDC4040000A023F0B5C2 +:10597000284FDB00FA5885B001920022A024FA508B +:10598000E023254AE405DB00E658E2507833E1588D +:1059900001250291E250A1238022DB00D205E250D2 +:1059A0000420E55013F0B0FAA222D200A3580397C6 +:1059B0009B0F2B4205D0A35813242B4202D0012069 +:1059C00018E01324013C002C13D0A0250127134B11 +:1059D000ED05EF50042013F097FAA123DB00EF5000 +:1059E000042013F091FAA223DB00EB585B00E9D509 +:1059F000E5E7201CA023E0220299DB05D2009E509F +:105A000078329950A023039A0199DB00D15005B058 +:105A1000F0BDC046004000400D0600000C0500002F +:105A2000A023E021134ADB05C90010B55A50783194 +:105A30005A50114B0022191CFC31CA600A62A12184 +:105A40001E20C9005A500D4A0D4C9850CC200D4ACA +:105A500040049850A2200C4AC00014500B4C0C4833 +:105A6000145001205050A0220521D2009950FFF778 +:105A70007DFF10BD0C060000004000400C0500003A +:105A8000384100402405000000F001401C40004067 +:105A9000140500000A480B4982680B4B002A08D005 +:105AA0001A6801321A6000228260D222022092001B +:105AB0008850064A1B688858190A1B061843704705 +:105AC000FC10014000100140B42800200405000033 +:105AD000174B70B59A68002A0AD0164902200A6846 +:105AE00001320A6000229A60D22213499200885043 +:105AF0005B6C114C002B19D0104E3378002B15D055 +:105B00000F4B1D68FFF7C6FF2D1A002D0EDC00217C +:105B1000074BD2225964802392005B02A35031705C +:105B2000C22189006350A350FFF758FC70BDC046E6 +:105B3000FC100140B428002000100140602E00201D +:105B4000B028002038B5124C2378002B1ED1A1219B +:105B5000C420104AC9005350C1390233FF39535091 +:105B6000443953500C4980000D580C4B2B40C02534 +:105B70002D022B430B508023012591389B02FF38C7 +:105B80000B500B60156013F0D6F9257038BDC04678 +:105B90005F2E00200010014000E100E0FF00FFFF49 +:105BA00008B5084B1B78002B01D1FFF7CBFFFFF79F +:105BB00071FF054A002304F069F94904C00B08434A +:105BC00008BDC0465F2E002040420F00F8B5284BAC +:105BD000041C1B78002B01D1FFF7B4FFFFF75AFF1D +:105BE000244A002304F052F94B04C00BCF0B184396 +:105BF0000026221C0023802192197B41090688423D +:105C000005D9002C03DB0020012112184B41D903D8 +:105C10000023540CD003184A214380185941002313 +:105C2000144A04F013F9154D041C2B78144E002B64 +:105C300002D0336898421AD0FFF72CFF201A0228AE +:105C400002DCFFF727FF841CA82122020D4B120A59 +:105C5000C9005A502A783460002A08D101322A70CB +:105C60008022F9395202FF395A5044395A50F8BD4E +:105C70005F2E002040420F003F420F00602E0020A8 +:105C8000B028002000100140074B1A78002A09D0E4 +:105C90008021C220054A4902800011504030115035 +:105CA00000221A707047C046602E0020001001408C +:105CB0000022024B9A605A647047C046FC100140B3 +:105CC000012310B50A4ADC00A458A14207DA013BBF +:105CD000DB00D3185A680168064BCA5007E001334D +:105CE000112BEFD180210268024B4905D15010BD24 +:105CF0005016030024050000F8B50F1C0121254BA8 +:105D0000B9400360A023244CDB05161C1A59051C5E +:105D10000A4380211A511A5909060A430121B14048 +:105D20001A511A598A4396211A511A598901520057 +:105D300052081A51FFF7C4FF002204202B681749AC +:105D40005A506C395850012199601960191CFC3166 +:105D5000CA6013495A506A6014391F325A501149A7 +:105D60005F5009185A501E517B1C03D0381C032168 +:105D700013F06CF9731C03D0301C032113F066F987 +:105D80000122094B291C1A600848073215F034FA21 +:105D9000F8BDC04600200040140500006C0500005E +:105DA0001C0500000C050000B8280020CC2F0020A6 +:105DB00008B59623DB00994202DDFFF781FF04E07E +:105DC0009E210268014BC902D15008BD2405000084 +:105DD0000168034B002A00D00E22CA507047C0460B +:105DE0006C05000008B5C1230D4A9B00D158090677 +:105DF00003D50C49096A002908D1D3585B070DD592 +:105E0000084B0021DB68002B01D107E00121064B84 +:105E10001868002802D0054B1B68984708BDC0468B +:105E200000200040FC200040BC280020C0280020AA +:105E3000034B1960436803499B005A507047C046A2 +:105E4000C0280020BC28002000681E4B70B5C31875 +:105E50005C4263415B00002A1AD0002903D001296B +:105E600005D1802100E00421C12292008150FF254C +:105E7000C021C0245BB2DE00B540B1401248A4008E +:105E80000259AA430A43025101229A40026018E0D3 +:105E9000002908D0012914D1C22280249200845004 +:105EA0008258920806E0C222042192008150825852 +:105EB0000339D209914304D001229A40131C034AAA +:105EC000D36770BD00E0FFBF00E100E004E100E047 +:105ED00003681A1CFC32106A0128FAD100201062F3 +:105EE000014AC9B2995070471C05000001704B1C53 +:105EF0000AD001238B404360044BC360044B036111 +:105F0000044B4361044B83607047C0460805005052 +:105F10000C0500501005005014050050074B10B53B +:105F20000022041C08C000F091F8054B201C1A1C2C +:105F3000343308322260636010BDC046A8B6020048 +:105F4000D0B60200074B10B51A1C041C08323433BB +:105F500002604360043000F05FF8201CFFF71AF97C +:105F6000201C10BDD0B60200234A10B51378111CB6 +:105F7000012B19D1214B1B681B0715D1204BE024A5 +:105F80001A68F023101C184022420BD11D4A1268D7 +:105F90001A4209D11C4A1D4B1A6080221C4B120266 +:105FA0001A6001E03028F1D00B68DBB2012B0DD173 +:105FB000124A1268120709D1F021114A12680A40E8 +:105FC000402A03D10F4A12680A420DD08022A3232F +:105FD0000021D205DB00D1500E4B99600131916058 +:105FE0009A68002AFCD005E0C1228021D200C905B0 +:105FF0008B50EBE710BDC046E00F00F0E40F00F05F +:10600000E80F00F0EC0F00F0DFFF07C004050040D0 +:10601000186C0040FC0000400A4B083303608368A2 +:10602000002B0DD0084A1368834202D143681360E5 +:1060300006E05A68824201D0131CFAE742685A60AF +:106040007047C04610B70200C4280020064B81608C +:1060500008330360002302734360994203D0034B6B +:106060001A6818604260704710B70200C428002008 +:10607000F8B5071C0E1C0B4B1C68002C10D0A56833 +:10608000002D0BD0281C391C321C15F0DEF900281D +:1060900004D1281C15F0D2F9B04201D06468ECE7B5 +:1060A000201CF8BDC428002037B51C4C0321201C3F +:1060B00014F01BFF1A49201C14F01CFF02F05CFCBA +:1060C00001F042FA174D281C00F078FD6421281CCD +:1060D00000F070FA01A814F01FFD01A802F0D6FC30 +:1060E000114B0268041C9A4210D1436B002B05D15E +:1060F000836B002B02D1C36B002B07D086239B0040 +:10610000E818616BA26BE36B01F040F9201C02F010 +:106110006BFCFEF753FF01F087FBFEE7982C002095 +:1061200081690100C8280020FECAFECA10B5041CFF +:10613000054B0360054B40300360054B4360FEF7A1 +:10614000C7FF201C10BDC046C8B80200E0B802005E +:1061500014B9020008B4024B9C46403808BC6047A2 +:106160002D61010008B4024B9C46443808BC6047CE +:106170002D61010010B5041C044B0360044B036443 +:10618000044B4364FFF7D2FF201C10BD28B7020068 +:1061900040B7020074B7020008B4024B9C46403876 +:1061A00008BC60477561010008B4024B9C46443846 +:1061B00008BC60477561010010B5041CFFF7DAFFE9 +:1061C000201C02F011FC201C10BD08B4024B9C46A0 +:1061D000403808BC6047C046B961010008B4024BB2 +:1061E0009C46443808BC6047B961010010B5041CE6 +:1061F000FFF79CFF201C02F0F7FB201C10BD08B429 +:10620000024B9C46403808BC6047C046ED61010027 +:1062100008B4024B9C46443808BC6047ED6101005D +:1062200038B50A4D281C00F039F9094C281C221CED +:10623000084914F0D0FE084D1321281C03F056F82D +:10624000281C0649221C14F0C6FE38BDC8280020B0 +:106250000000002061620100982C0020D59201000E +:1062600038B5E6231C4A9B00C2501433041CC018E6 +:1062700013F062F9EA239B00E01813F05DF986231E +:106280009B00E01800F0DCFE201CDD30FF3001F048 +:106290003BFB201CA530FF3000F04CFD201C7D3066 +:1062A000FF3000F047FD601DFF3001F05FFF201C54 +:1062B000EC3000F081FD201C251C5430FFF75AFF04 +:1062C000064B0C35281CE36012F0B6FB281CFEF7C9 +:1062D00027FF201C38BDC04668B8020020B6020067 +:1062E000F0B51F1C85B00AAB1B78041C0393009308 +:1062F0003B1C0D1C161C14F046FE002832D0237DDA +:10630000082B2DD823680022191CFC318A62A02199 +:106310001648C9005A5084461A5005200138C04614 +:10632000C046C046C046C046C046C046C046C0463D +:10633000C046C046C046F1D101206246236898504D +:1063400005225A50FFF76CFB039B201C0093291C6D +:106350003B1C321C14F017FE237D01332375CCE760 +:10636000034800E0207505B0F0BDC046FC0F0000FA +:106370000EFCFFFFF0B51F1C85B00AAB1B78041C98 +:10638000039300933B1C0D1C161C14F0E4FD002825 +:1063900032D0237D082B2DD823680022191CFC3114 +:1063A0008A62A0211648C9005A5084461A50052016 +:1063B0000138C046C046C046C046C046C046C0467A +:1063C000C046C046C046C046C046F1D10120624624 +:1063D0002368985005225A50FFF722FB039B201C8C +:1063E0000093291C3B1C321C14F0B5FD237D0133A6 +:1063F0002375CCE7034800E0207505B0F0BDC0462A +:10640000FC0F00000EFCFFFF024B1B6803607E23A5 +:10641000436070478C000020F8B5144B051C9B6846 +:10642000DB0701D501F0CCF82E1C2F1CD436341C10 +:10643000EC372068002815D003689B68984700282F +:1064400010D001210A4A13780B4313702C1CAC3472 +:106450002068002802D003681B6898470434B442BF +:10646000F6D1F8BD0434BC42E3D1EFE7C8280020E0 +:10647000612E0020BFF34F8F024A034BDA60BFF357 +:106480004F8FFEE70400FA0500ED00E008B5011C9F +:10649000014802F063F808BDCC29002030B5002582 +:1064A000041C91B085600C30FEF724FE201C404B8C +:1064B0002A1CE3606562A5631E213C3012F0F3FDE7 +:1064C000201C18211922543002F008FA201CEC304C +:1064D00000F082FC0522601D131C0621FF3001F034 +:1064E0006DFE201C01217D300B1C00951122FF3018 +:1064F00000F030FC201CA530009502211A22012357 +:10650000FF3000F027FC201CCD3002231A2101228D +:10651000FF3002F075FC201CDD3004213A22FF30F0 +:1065200001F09AFA86239B00E0181D22052100F055 +:1065300053FE95239B00E0181C2101F0CBFB9A230E +:106540009B00E0180A230093013301930133029367 +:10655000013303930133049301330593013306930D +:1065600001330793013308930133099301330A93ED +:1065700001330B9301330C9301330D9301330E93CD +:10658000013308220F930721103B13F057FFE62336 +:106590009B00E01802F0E0FAEC239B00E0181D21BC +:1065A00002F0F4FAF323201C9B00E55011B030BD3B +:1065B00020B6020010B500290DDB012380681840C9 +:1065C000041C081C002C03D001F0D6F8002003E0C6 +:1065D00012F0B6FBFAE7014810BDC04617FCFFFFFA +:1065E000F0B5A7B00490069107920C2104220BA8E5 +:1065F00012F0DAFFDA49242219311DA814F0FCFD4B +:10660000052108A80A1C13F0C1FFD64909A801F00A +:1066100039FC049B6E245D1DFF35281C01F0E2FE51 +:10662000D1491AA801F046F91AA97822281C01F0CC +:106630005BFF1AA812F080FF04987D30FF3012F043 +:10664000C2FD002807D10498A530FF3012F0BBFD31 +:10665000002800D17AE1281C01F0C4FE281C14F0A7 +:1066600067F90024C14F0121381C13F05CFE0121A1 +:10667000061C381C13F065FE0022BD4B03929E429F +:1066800010DB01320392321CC8320BDB042203926E +:10669000C8229200964205DC03220392C82E01DC38 +:1066A000013A039200220292984210DB01230293E6 +:1066B000031CC8330BDB04230293C8239B009842BE +:1066C00005DC03230293C82801DC013B0293652704 +:1066D00008A813F052FF04ABFF183E1C7378002B80 +:1066E00006D0731E1978327808A8FF2301F060FBEA +:1066F000892304AA03369B189E42EFD16B460C21D6 +:10670000595E6B4608A808229A5EFF2301F050FBF1 +:1067100000239848009308A91A1C13F03EFF7B1E23 +:106720001B78039A93423AD13B78029A934236D12E +:106730007E78002E33D1862292009446049B311C31 +:106740006344181C059312F015FE04F073FA321C12 +:10675000031C211C0BA812F072FF311C059812F0CB +:1067600016FE04F067FA0122031C211C0BA812F08C +:1067700066FF311C059812F017FE04F05BFA211C2D +:10678000031C02220BA812F05AFFFE23211C9B05BA +:106790000BA8032212F053FF01237B70E418892316 +:1067A00004AA03379B189F42B9D173486421FFF7AD +:1067B00001FF0B2C00DC55E70BA812F02CFF012287 +:1067C000011C0EA812F0F0FE00240BA812F023FF0B +:1067D00084423EDA211C00220BA812F01EFF211C6D +:1067E000061C00220BA812F018FF011C301C03F03D +:1067F00051FF211C061C01220BA812F00EFF0122E2 +:10680000071C211C0BA812F008FF011C381C03F008 +:1068100041FF011C301C03F0CFFB211C061C02228F +:106820000BA812F0FAFE0222211C071C0BA812F082 +:10683000F4FE011C381C03F02DFF011C301C03F07A +:10684000BBFB211C031C00220EA812F0F8FE013431 +:10685000BBE70BA90A1C01231AA813F0BDFC1AA957 +:1068600011A812F006FF1AA812F0FAFE14A80BA93C +:106870000EAA012313F0B0FC002317A811A914AA33 +:1068800013F0AAFC002117A80A1C12F0C6FE012171 +:10689000061C002217A812F0C0FE0022041C0221D0 +:1068A00017A812F0BAFEFC21071C8905301C03F062 +:1068B000F1FE04F09FF9FC21061C1A908905201CAA +:1068C00003F0E8FE04F096F9FC21041C1B908905F6 +:1068D000381C03F0DFFE04F08DF9862189008C4618 +:1068E000049A031C6244311C1C90101C221C00F0F2 +:1068F0004DFD281C14F01CF809A90AA813F035FE58 +:1069000000231E4A00930AA90192281C1A1C01F0B8 +:10691000B9FD0AA813F01CFE281C14F009F817A8EA +:1069200012F09EFE14A812F09BFE11A812F098FE21 +:106930000EA812F095FE09A813F00AFE08A813F09D +:1069400007FE0BA812F08CFE27B0F0BD049864215E +:10695000013CFFF72FFE002C00D06DE67BE6C04621 +:1069600086AE0300C3AE030008AF0300A42A0020D4 +:10697000E0FCFFFF402A0020C8280020DC050000C2 +:10698000F0B5F324214DA40028598DB0002835D04E +:1069900002F048FB836D9B0730D52C5902AE0C22C8 +:1069A0000021301C14F045FC201C02F04BFB07AC0E +:1069B000231C174F0190029707CE07C3142001F044 +:1069C000EFFF031C079746CC46C3124BC36000235E +:1069D0000361019BA4331A68002A00D00261186089 +:1069E000F3239B00E85802F02DFB036813215B6A38 +:1069F0009847FA21281C8900FFF7DCFDBFF34F8F71 +:106A0000054A064BDA60BFF34F8FFEE7C828002027 +:106A100075640100BB9002000400FA0500ED00E07F +:106A2000F0B5051C00291CDD036801390E1C00228D +:106A3000DF0F9809784058401F095C0878409B0890 +:106A400043406340DB07234301241C405000221CC9 +:106A500076080243002EEBD18A42E7D82B60101C47 +:106A600000E00148F0BDC04617FCFFFF38B5002329 +:106A70000360F323124A9B00D358002B08D0042153 +:106A8000041C12F018FB002819D00E4B236016E0EE +:106A9000012204210C4B1A60036800240B4A546045 +:106AA0005568094C002DFBD0A122D200A2581B0230 +:106AB000013913430029F0D103600123636038BD1D +:106AC000C8280020ED5EBC0B00D00040FCD0004088 +:106AD00038B5051CEC30041CD4352868002802D0D9 +:106AE00003685B6898470435A542F6D10121024A44 +:106AF00013788B43137038BD612E0020014B18684A +:106B00007047C046FC2C002008B5024801F026FD65 +:106B100008BDC046CC290020F0B587B01F1C0EABC5 +:106B20001B88019003930D9B0D1C02920C9E0093F9 +:106B3000002F39D0002E01D1DB0735D5202001F000 +:106B40002FFF041C103000F057FC6B461B8925807A +:106B50006380182001F024FF0496061C051C009B8E +:106B600080C600211022301C059314F062FB04A99A +:106B70000822301C14F040FB0D4B00226B610223F5 +:106B80000399A5600B43E260A380E2610198211C98 +:106B900000F066F9002808D0201C13F04FFF201CDD +:106BA00001F022FF034800E0034807B0F0BDC046F3 +:106BB000F190020013FCFFFF17FCFFFFF0B5041C6F +:106BC00089B0214912F0ADFA201C204912F0CBFA0D +:106BD000201C1F4912F0C7FA1E49201C12F0C3FAEC +:106BE000201CFFF743FF00250627201C1A4B0C3002 +:106BF000A3621A4B1A49A36367606462E56211F0ED +:106C00002CFF184A059504926A46261C04AB03CB58 +:106C100003C2C023EC36029305213A1C231C301C0E +:106C2000FFF77AFF104A079506926A4606AB03CB38 +:106C300003C2C023301C02930C491A22231CFFF705 +:106C40006BFF09B0F0BDC046CC290020A42A00206B +:106C5000E02A0020B42900201964010013880200F2 +:106C600070170000E1650100C9900200FD030000FB +:106C700030B5C369C2681B6885B0041C451D1A4243 +:106C80004BD0EB7F002B01D0013BEB77EB7F082B48 +:106C90000DD90123A2791A4209D11A43A271A18800 +:106CA0001A1C02A800F0C6FB1F4B1B682362EB7F77 +:106CB000012B1DD80123A2791A4219D00022A188E4 +:106CC000A2716846023200F0B5FBA31DDB7F012BE9 +:106CD0000ED1154A216A12681448521AA1888242BC +:106CE00002D902A8042201E0032202A800F0A2FBBC +:106CF0000323A2791340012B14D10B49206A0968A0 +:106D0000091A0B4881420DD902210A43A271A188B8 +:106D100002A8052200F08EFB04E0EB7F0B2BB5D818 +:106D20000133B2E705B030BDFC2C0020E7030000C2 +:106D3000DB05000010B5041C044B211C0833036064 +:106D4000034812F0FFF9201C10BDC04680B70200B6 +:106D5000C8280020F0B5071C0025161C85B002933A +:106D60000AAB1B7808370393114B041C08330360EC +:106D7000019185808571291C381C182214F059FA5C +:106D8000381C311C039A11F0AFFF6B466A469B8892 +:106D9000127AA380A31DE671DA77631D2562211C98 +:106DA000DD77044812F0BDF9201C05B0F0BDC046E7 +:106DB00080B70200C828002010B5041C044B211C19 +:106DC00008330360034812F0DFF9201C10BDC046F1 +:106DD000A0B70200C82800200023054A838008329B +:106DE000837102608360C3600361C3827047C046E1 +:106DF000A0B70200F7B50D1C012684680192002C93 +:106E00002AD023882A889A4201D0002B22D1638875 +:106E10006A889A4201D0002B1CD1C023A28813405B +:106E2000C03B59424B4101998B4212D113B2002B06 +:106E30000FDB231C291C103381C981C3530603D5E2 +:106E4000201C12F0D1F905E0211C044800F0FCFCE4 +:106E500000E00026E469D2E7301CFEBDE9910200A3 +:106E6000F7B5002952D00D1C061C8468002C19D0DF +:106E7000AA880023920702D5A3889B07DB0F22680C +:106E800029688A420CD1002B06D0A068A96813F0AB +:106E900032FE00283CD103E0A368AA68934237D0B1 +:106EA000E469E3E7B0682A88071C031E22D019882A +:106EB000914205D2D9691F1C00290DD00B1CF6E7A1 +:106EC000191C3B1C08E00C88944207D14F886C8841 +:106ED000A74203D20B1CC9690029F4D183420BD10C +:106EE00019888A4205D3914206D158886988884218 +:106EF00002D9EB61B56002E0D969E961DD616846FC +:106F00000849012300F096FA002009E0064807E04E +:106F1000A3881AB2002A02DA5B045B0CA380034840 +:106F2000FEBDC046FD03000017FCFFFF16FCFFFF7F +:106F3000F0B585B01E1C0AAB1B88071C0D1C029205 +:106F40000393002E1AD0202001F02AFD6B46041C6A +:106F50001A89039BA9B20093331C13F058FD381C07 +:106F6000211CFFF77DFF00280BD0002C08D0201C2F +:106F700013F064FD201C01F037FD01E0024800E041 +:106F8000024805B0F0BDC04617FCFFFF13FCFFFF31 +:106F900070B5002926D00D1C00268468002C1ED058 +:106FA0000222A988A3884B40134216D1114203D173 +:106FB000AB889B0707D510E0A068A96813F09BFD7C +:106FC000002804D1F4E7A368AA68934205D12B886E +:106FD000002B09D022889A4206D0E469DEE7201C03 +:106FE000002E0DDC07480BE06B88002B02D0628876 +:106FF0009A42F2D1A388044A01361343A380ECE7F6 +:1070000070BDC04617FCFFFF0080FFFF10B5041CD9 +:107010008AB0002B0FD0102092B289B2009002A843 +:1070200013F0F5FC02A9201CFFF7B2FF02A813F031 +:1070300005FD002000E001480AB010BD17FCFFFF6D +:1070400010B5041C044B211C08330360034812F0E4 +:107050009BF8201C10BDC046C0B70200C828002005 +:107060001FB503AB5A7000221970018900920348C2 +:107070001A1C0223FFF77EF905B000BD0429002089 +:10708000F0B5151C0F2285B06A44071C1C1C11703A +:10709000002D16D0002B14DD01230B4E0189009327 +:1070A000301CFFF767F9002801D008480AE0398949 +:1070B0002A1C0090231C301CFFF712F9002801D075 +:1070C000F3E7034805B0F0BD042900200EFCFFFFE4 +:1070D00017FCFFFF7FB5002303AC104D2170018921 +:1070E000061C0093281C221C0133FFF743F90028DB +:1070F00001D00B480FE02070607031890090221C95 +:10710000281C0223FFF7ECF80028F2D120786378DE +:107110000002184300B204B070BDC046042900202C +:107120000EFCFFFF13B56B46DC1D0023221C2370F1 +:107130000133FFF7A5FF002801D1207800E00148C6 +:1071400016BDC0460EFCFFFFF8B510210022041C3E +:10715000FFF786FF1D4E002835D1201C0821FFF7C0 +:10716000E1FFB0422FD00325054027D1FA23184A6A +:1071700061899B005943131C50331E1C083A1F6839 +:10718000181C8F4203D3083B061C9342F7D1FA2107 +:107190003068890002F060FC11216081A022201C6F +:1071A000FFF75EFF00280ED101223379201C1A431D +:1071B0001021FFF755FF002806D004E064210548A0 +:1071C000FFF7F8F9C9E7014D281CF8BD0EFCFFFFD9 +:1071D000D8160300C8280020F8B5051C0F1C002194 +:1071E000144B24350833041C161C036018228180BC +:1071F0008171C160016141618161C1610162281CCD +:1072000014F017F8281C1D2111F069FD01256423D5 +:10721000A7802681A5716381201CFFF795FFA379C4 +:10722000054AAB43A37108239168201C0B4393606C +:10723000F8BDC046C0B70200C8280020F7B5837962 +:1072400002271D1C3D4013D10126041CB3433B43C0 +:10725000837181880622331C684600F0EBF8A3791D +:10726000281C1A1CBA43A271334202D1014800E023 +:107270000148FEBD14FCFFFF15FCFFFFF0B583794C +:1072800085B09A0775D4041CDB0701D4FFF7D6FF3D +:10729000394D281C13F0BDF8071C281C13F0B0F85A +:1072A000A369E268061C981A03F0C4FC226A6369A9 +:1072B000051C981A03F0BEFC0290381C06F0FCF87E +:1072C0000090381C05F04CFF0190301C06F0F4F8DB +:1072D000071C301C05F044FF00990390029803F04E +:1072E000D9F90199061C281C03F0D4F9011C301CA3 +:1072F00003F002FB2369061CE069181A03F09AFCEC +:10730000039903F0C7F9391C041C281C03F0C2F9C7 +:10731000009903F0BFF9011C201C02F04DFE391C3E +:10732000041C029803F0B6F9019903F0B3F9011CAB +:10733000201C02F041FE011C301C06F027FA0F4908 +:1073400003F0A8F905F0F2FA0D4A0E4B04F02AF802 +:1073500005F040FB0021041C02F050FD002804D081 +:10736000201C064902F028FE041C201C03F042FCED +:1073700000E0054805B0F0BDA42A00200000B44399 +:10738000EA2E4454FB21194015FCFFFFF0B587B0ED +:1073900001AD071C05A8161C6A60AB600093019143 +:1073A00013F0BAFB05A801F071FB019B426B041CB2 +:1073B0009A4213D1826BB24210D1C26B00998A42B9 +:1073C0000CD1201C01F010FB3B1C0C3307CD07C374 +:1073D0000122BB791343BB7107B0F0BD054A63635B +:1073E000009B2260A663E36305A8211C13F095FBB4 +:1073F000E7E7C046FECAFECA002303804380024B73 +:107400001B6843607047C046FC2C002008B5031C75 +:10741000012904D1064806CB11F05FFF06E00229DE +:1074200004D10348191C0022FFF7E4FC08BDC04644 +:10743000B429002010B54280054A041C126801805E +:107440004260002B02D0191CFFF7E0FF201C10BD8A +:10745000FC2C002008B5031C024806CB11F03DFFB0 +:1074600008BDC046B4290020F0B5061C0027204BFB +:1074700085B01C680290039185B2360C002C2AD08E +:10748000636D1C490193A36C9AB21B0C8D4211D100 +:1074900019498A420ED1002B01D0B34219D1002FD5 +:1074A00017D1201C11F0F4FF201C144911F0DDFF4E +:1074B00001370EE0002A01D0AA420AD1002B01D0E8 +:1074C000B34206D1201C11F0E3FF201C0B4911F040 +:1074D000CCFF019CD2E70A4BEB18012B05D90948D8 +:1074E000291C321C084BFFF791FD05B0F0BDC046CA +:1074F000002D0020FE030000FF030000E82C002008 +:1075000002FCFFFFB42900206974010010B572B6B7 +:107510000B4B1C68002C03D0201C11F0B9FF08E0B5 +:1075200062B65C2001F03CFA00215C22041C13F0DE +:1075300080FE0023E364034B201CE36310BDC046C0 +:10754000F42C00200040002073B5FFF7DFFF124B42 +:107550001249186011F089FFFFF7D8FFC026104BC1 +:10756000104D1860104B114C4363114B114983634C +:1075700000220096281C231CFFF7DAFC0096281C2A +:10758000231C0D490022FFF7D3FC01230B4A91680D +:107590000B43936073BDC046EC2C0020E82C002008 +:1075A000F02C0020B4290020FC3F00206974010069 +:1075B0002D950200FF030000FE030000C8280020F4 +:1075C0000D4B70B50D481C6811F0EFFD0C4B1D1CE8 +:1075D0001A6880181860002C0DD02B68A26C666D9C +:1075E000934206D3201C11F053FF201C054911F0D3 +:1075F0003CFF341CEFE770BDF82C0020C8280020A9 +:10760000FC2C0020E82C0020F7B5002801D1002038 +:1076100019E00029FBD00193171C0D1C061CFFF775 +:1076200075FF041EF3D0084B019A43630660456062 +:107630008760064B002A00D0054B201CA363054938 +:1076400011F013FF201CFEBDFC3F0020019502003D +:1076500017950200E82C0020024B1868434258415D +:107660007047C046E82C002010B5094C201CFFF7DD +:107670002FFA084B1B68002B08D1F3239B00E0581E +:10768000002802D001F0EEFC00E030BF10BDC04683 +:10769000C8280020E82C00200121F8B52F4E3468BE +:1076A000351CE36C0B4218D002252B43E364042302 +:1076B0002B4F3868C26C1343C364636BC36311F010 +:1076C00006FF3B68181C596C01F0F7FA3068C36C70 +:1076D0002B4241D001F02BFB3EE0224F224E3A6874 +:1076E000002A03D021480078084201D0326806E021 +:1076F000216DB94203D1616D002900D00A1C2A60B6 +:107700002A6831688A420CD11B070AD52C60FFF722 +:10771000ABFF3B68002BFAD0144A1278D207F6D49C +:107720002B602B68A34217D03268934204D1104AD1 +:107730005A63104A9A6305E0944203D10020191C51 +:10774000021C06E0201C11F0C2FE2B68201C191C34 +:10775000626C5B6C01F070FAF8BDC046EC2C002046 +:10776000042D0020E82C0020F02C0020612E0020A9 +:10777000FC3F00202D95020038B50D4B051C1C6800 +:10778000E36CDB0706D5FFF7C1FE0A4B1860002843 +:1077900000D0041C084B18682818A064201C11F0A5 +:1077A00077FE201C054911F060FEFFF775FF38BD1C +:1077B000EC2C0020042D0020FC2C0020F82C0020B4 +:1077C000134B73B51C68051CE36C0E1CDB0706D558 +:1077D000FFF79CFE0F4B1860002800D0041C3304F8 +:1077E0002B43A364201C11F053FE201C0A4911F006 +:1077F0003CFE0A4BEB18012B07D9C0230848009325 +:10780000291C321C074BFFF793FBFFF745FF73BDA5 +:10781000EC2C0020042D0020002D002002FCFFFF96 +:10782000B42900206974010010B5054C206811F0DE +:107830002FFE2068034911F018FEFFF72DFF10BD41 +:10784000EC2C0020F42C0020F7B5002829D00726C6 +:10785000154F041C38680D1CC36C1E4005D0201C3D +:10786000124A11F02CFE00261CE001F048FA022119 +:107870003A68D36C1940019103D003218B43D36440 +:1078800010E001263343D364281CA0473A68D36C28 +:10789000191CB143D164019E5B0703D5FFF7C4FFF8 +:1078A00000E0034E301CFEBDEC2C00200F950200C2 +:1078B00017FCFFFF10B5041C002902D00B78002B29 +:1078C00002D1034B236001E011F03DFE201C10BDEE +:1078D00030170300014B03607047C04630170300A8 +:1078E00010B50548054C206013F0E2F8201C04494F +:1078F000044A13F070FB10BD30170300082D002060 +:10790000399502000000002010B5041C044B211C16 +:1079100008330360034811F037FC201C10BDC0463B +:10792000E0B70200C82800201FB503AB5A70002240 +:1079300019700189009203481A1C0223FEF71AFDF0 +:1079400005B000BD04290020FA2370B52A4A4189F8 +:107950009B005943131C3833041C181C083A1D683B +:107960001E1C8D420CD2061C244B227B1D1D082A96 +:107970000BD8042A09D89D1C022A06D81D1C04E035 +:10798000083B301C9342EAD1EEE7FA2130688900C7 +:1079900002F062F860812B78201C23732A210022D8 +:1079A000FFF7C2FF002801D0154824E0201C2B213E +:1079B0001022FFF7B9FF0028F6D1201C2D2101224B +:1079C000FFF7B2FF0028EFD1201C2E210122FFF784 +:1079D000ABFF0028E8D16A78201C0E21FFF7A4FF36 +:1079E0000028E1D101223379201C1A432A21FFF714 +:1079F0009BFF0028D8D170BD381703001DAF0300CE +:107A00000EFCFFFFF0B5151C0F2285B06A44071C61 +:107A10001C1C1170002D16D0002B14DD01230B4E01 +:107A200001890093301CFEF7A5FC002801D008480E +:107A30000AE039892A1C0090231C301CFEF750FCF8 +:107A4000002801D0F3E7034805B0F0BD0429002069 +:107A50000EFCFFFF17FCFFFFF7B5061C00251A4BB5 +:107A600014360833041C03600F1C01928580182211 +:107A70008571C58105824582291C301C13F0D9FB14 +:107A8000301C1C2111F02BF96B469B8802262381A8 +:107A900014236381231C032134331A79A780B24352 +:107AA0000A40A5712673201C1D705D709D701A71AF +:107AB0005D71FFF749FFA84203D1044A936833433D +:107AC0009360201CFEBDC046E0B70200C82800201D +:107AD000F7B5041C12F0EFFB251C00900E23E25EAC +:107AE0005B4F52423835BA4205DA022329780B40FF +:107AF00000D083E008E0FA21002389008A4203DDF8 +:107B00002B789B077AD500231020215E4942B94289 +:107B100003DA2E7870077DD406E0FA26B600B1426B +:107B200002DD2E78700775D51220265EBE4203DA7C +:107B30002F7838077AD406E0FA27BF00BE4202DD6C +:107B40002F78380772D5002B13D0251C38352B78A9 +:107B50009C461B09032B0CDC0F2701333B4018010B +:107B6000019060463840071C019807432F70042B92 +:107B700066D0231C39331B7838340133DBB2092B30 +:107B800001D8637014E00023637023789C461B09BE +:107B90000ED00F2560460F3328402B40051C1F01D7 +:107BA0003D432570002B03D1EBB20125AB4323707D +:107BB000012724780B233C4047D1264D0098043BF5 +:107BC000A84242DD9025DB192D04A8423DDC224D60 +:107BD000053BAA4239DBC820DB198000824234DC35 +:107BE000023BA94231DB3B1C81422EDC0433AE4216 +:107BF0002BDBDB19864228DC231C26E00123181C22 +:107C000029784E08B043061C02209E408143314330 +:107C1000297079E701202E78B30898438300181C57 +:107C200004239E4306432E7001237DE701272B7812 +:107C3000D80887430820FF0083433B432B7084E729 +:107C400001272B783B432B7093E7181CFEBDC046E1 +:107C500018FCFFFFFF700200E0FCFFFF7FB5012171 +:107C60006A460623041CFFF7CDFE051E22D16B4693 +:107C700002216846012659561B79227B5BB2534389 +:107C80000078514340B242439BB2DB006382A37948 +:107C900089B2D200B343E281CA002282A371201CC0 +:107CA00012F015FBA18802A8321C331CFFF7C2FB9F +:107CB000281C00E0014804B070BDC0460EFCFFFF68 +:107CC000034B1A68836800209A4240417047C046BF +:107CD000FC2C0020084B10B508330360FA23041C69 +:107CE00000229B0082718180C3608260211C034856 +:107CF00011F039FA201C10BD00B80200C82800207D +:107D00001FB5F323154A9B00D358041C002B03D046 +:107D100001A812F08AFB0EE00122114B1A60114BF0 +:107D20005A68002AFBD000225A600F4B01321B68B0 +:107D300001930B4B5A60019BA188DA17920FD3185D +:107D40009B102382094BE2681B6802A8D31801220A +:107D5000A360131CFFF76EFB1FBDC046C8280020A0 +:107D600000C00040FCC0004008C50040FC2C0020C2 +:107D7000054B82681B6810B5041C934201D3FFF7C2 +:107D8000BFFF1023E05E10BDFC2C002008B5044BA3 +:107D900082681B68934201D3FFF7B2FF08BDC0465B +:107DA000FC2C0020014B03607047C046781703008D +:107DB00030B504686088814206DAA588AA4203DAF1 +:107DC000002901DB002A01DA034804E0504361186E +:107DD00008188371002030BD17FCFFFFF0B5071CA9 +:107DE00085B00D1C1E1C002921DD002B1FD004684E +:107DF00063880391994200DD0393A38802929A421B +:107E000000DD0293002306340193019B029A934202 +:107E10000BDA201C311C039A13F0EEF93B6876193B +:107E20005B88E418019B0133EEE7002000E0014885 +:107E300005B0F0BD17FCFFFFF8B5041C0E1C151CA7 +:107E40001F1C002901DB002A02DA0D4B236015E01C +:107E5000101C4843063000F0A3FD206012F025FE00 +:107E60002368201C5E809D80002F05D0311C2A1CB9 +:107E70003B1CFFF7B3FF01E012F07FFBF8BDC046EB +:107E800078170300F0B5061C87B00C1E05D0002043 +:107E90000F1C051C0190011C15E0224B03603EE005 +:107EA0003022524294469C446246092A14D90A2B35 +:107EB0000DD1019B2D1801330193A94200DA291C31 +:107EC0000020051C01373B78002BE9D106E0002893 +:107ED000F8D001350020F5E70120F3E76A469288E3 +:107EE00009B212B2301CFFF7A7FF33689D1D03AB28 +:107EF0001F1C2278002A12D0111C3039092902D8FF +:107F00001A70013309E000221A70BB4205D9381CEF +:107F100013F070F83B1C287001350134E9E7301C80 +:107F200007B0F0BD78170300F0B5041C87B00F1C34 +:107F300004A82249151C1E1C12F0FFFC23685A8855 +:107F4000954208DA9B889E4205DA1F2F03D9059BCC +:107F500000939F4201DD1A482DE0052300217B4359 +:107F60000193049B0293019B029ACB18A03BD35C24 +:107F7000002203938B199C46531927680093788835 +:107F8000834202DABB889C4507DB0132052AF3D124 +:107F900001310529E7D100200DE063465843009BDD +:107FA000FB18102717411818039B1F407B1E9F4189 +:107FB0007F428771E9E707B0F0BDC046CC290020B9 +:107FC00017FCFFFFF7B503689E1D5B885A1A0192E4 +:107FD00000291CDD0C1C051C0027994202DB12F055 +:107FE000CCFA12E02B689B889F420EDA3119301CC4 +:107FF000019A13F001F9019B211CF01812F0AFFA5D +:108000002B6801375B88F618ECE7002000E0014898 +:10801000FEBDC04617FCFFFF10B50548054C2060AB +:1080200012F046FD201C0449044A12F0D4FF10BD92 +:10803000781703000C2D002051A50200000000203D +:10804000054B1A78F0231343044A13701F22C37A96 +:108050001343034A13707047100500500405005085 +:1080600005050050F0B5041C85B000252A1C636F7F +:10807000A17A06330293E37949009C465B000093A2 +:10808000637A01310393A37B277B0193304B59180B +:108090004B1E1B780878012F05D16646013E361A23 +:1080A000181C331C0FE0022F06D16646013EF31A5E +:1080B000267A013E301A06E0032F04D1267A013ECB +:1080C000F61A031C301C009E7043C3180298C31894 +:1080D0001E780398864201D9231C09331B78019826 +:1080E000034202D00123AB401A4301350631092D6A +:1080F000CED1D2430F21174B10011B78D2050B4074 +:1081000003431549DBB20B70E37AD20E1A43134BCB +:108110001A70E37B072B18D8A27B581C5200A2735D +:108120000F499A00E073022B03D8885810F0FDFD28 +:108130009BE70C4B201C2363002363630A4B895885 +:10814000E4622364143010F088FC05B0F0BDC04632 +:1081500023AF030010050050040500500505005032 +:108160008017030065800100C1A6020010B5041C41 +:108170000F4B211C083303600E4810F0E3FF201C56 +:10818000743012F0E5F9201C643012F0E1F9201C83 +:108190005C3011F0D1F9201C543011F0CDF9201CC5 +:1081A000054B14306361FCF763FF201C10BDC04613 +:1081B00020B80200C828002028B90200F7B5002521 +:1081C000041C1F1C254B8580083303608571143007 +:1081D000161C0191FCF78EFF201C214BE5626361A8 +:1081E00025644430FEF710F9201C5430FFF772FB71 +:1081F000201C5C30FFF76EFB201C6430FFF7D2FDC3 +:10820000201C710074303AB212F0C0F904231A1C19 +:10821000A0210320C132FF329200C9050133505022 +:10822000112BF4D120226B46E2721F3A9B88A27375 +:10823000FE326272221CA38000234C32E671277248 +:10824000A3722373E373237463731370054AE366A5 +:10825000916804330B43201C9360FEBD20B80200DC +:1082600028B90200C8280020F7B5437A002B69D04E +:10827000436F077B06330193C3799C465B000093F1 +:10828000827A314B520001329A1800231E1C511E73 +:108290000C781178012F05D16546013D6D1A211C1E +:1082A0002C1C0FE0022F06D16546013D2C1B057AE0 +:1082B000013D691A06E0032F04D1057A013D2D1B0B +:1082C0000C1C291C009D6943019D2C19615C00292F +:1082D00002D00121B1400B4301360632092ED6D11E +:1082E000DB430F21041C194A18011278DB050A40F0 +:1082F00002431749D2B20A70E27ADB0E1343154AE1 +:108300001370667AB31EDBB2FC2B15D8124810F03E +:108310004CFF124B051C2363002311486363114B70 +:10832000FF21E4622364704301F026FC011C201C41 +:108330006943143010F091FB637A012B02D8201CA2 +:10834000FFF77EFEF7BDC04623AF030010050050C7 +:108350000405005005050050C82800204180010098 +:10836000B6030000C1A6020007B501228188131CD4 +:108370006846FFF75FF86846024902220123FFF7CB +:1083800059F807BDFE030000154B10B59B685B074D +:1083900025D5427B041C022A02D112F0AEFA1EE05F +:1083A000C37A5B00C372837A0133DBB2032B01D043 +:1083B000837203E0002383722033C372002A02D148 +:1083C000201CFFF751FF637B012B05D1A373002312 +:1083D000201CE373FFF746FE201C12F05BFA10BD71 +:1083E000C8280020031C13B54C331A78041C002A3B +:1083F0000DD000221A7001328188131C6846FFF7E5 +:1084000019F86846044902220123FFF713F8201CDB +:10841000743012F0B2F813BDFF03000008B54C3001 +:108420000378012B03D902480221FFF7C9F908BDDF +:10843000FF03000073B5079E041C002E1ADB051C09 +:108440004C352878012817D806981BB2C0B2009086 +:10845000201C12B2743012F0A0F80023301E984293 +:108460000BD0221C4E321680062250342380181C5A +:108470002A7002E0014800E0014876BD17FCFFFFCA +:1084800012FCFFFFF0B587B00D9D002D22DB041C10 +:10849000039302920E1CFFF7C1FF231C4C331F787D +:1084A000002F19D1311C05A812F05FF80C9B05A90B +:1084B0000093029A039B0195201CFFF7BBFF05A8C0 +:1084C00012F046F8281E08D006200121FFF778F99F +:1084D000381C02E0024800E0024807B0F0BDC04688 +:1084E00017FCFFFF11FCFFFFF8B5041C171E19DD78 +:1084F000061C4C363378012B16D8021CC3795A322D +:10850000013B1370031C002558331D80543011F0BB +:108510002FF8231C4E331F80022350342580281C43 +:10852000337002E0014800E00148F8BD17FCFFFF8E +:1085300012FCFFFF0421034A93680B4201D10B4355 +:1085400093607047C82800200421034A93680B42B7 +:1085500001D08B4393607047C8280020F0B589B0E4 +:1085600002900D1C72B6FF2200238A425B410298E2 +:108570005B421D40FFF7E8FF029B1E7C002E00D1EE +:108580000136434B1022002104A81F6812F051FE4F +:10859000404B281C6421049301F0EEFA0A2101F0FB +:1085A000D1FB05246143503179180591281C0A211B +:1085B00001F0E2FA0A2101F0C5FB6143503179185C +:1085C0000691281C0A2101F0BDFB4C4350343F1991 +:1085D00020250024079700230093FA235B000193D2 +:1085E000032C01D120250024009A04ABD3582A4A39 +:1085F000039363000133D31800229446197803983B +:10860000405C591E0F7810213941014204D00121EC +:10861000604691400843844601320633092AEDD171 +:10862000F0231E481E4A0370D13B191C29431170C8 +:108630006146C9430F01FFB20770FA2709110B40C9 +:108640002B431370BF00174812F063FC002801D1C0 +:10865000FEF796F9013F002FF5D1019B6D00013423 +:10866000013BEDB2E4B20193002BB9D1009B04337E +:108670000093102BB1D1029B1B7C002BABD0013E91 +:10868000F6B2002EA7D1FEF77BF909B0F0BDC046C7 +:108690008C00002059AF030023AF030004050050F5 +:1086A00005050050982C002030B50024034D84713E +:1086B0000560818042730373846030BD48B8020056 +:1086C00010B58379041CDB0702D5806800F08CF9B3 +:1086D000A3799B0702D5A06800F086F9A3795B0710 +:1086E00007D5A0230021114ADB00D150A06800F07B +:1086F0007BF9A3791B0709D5A06812F08DFB0D2328 +:10870000E356834202D1A06800F034FCA379DB0673 +:1087100005D5A068002802D003681B69984700238C +:108720007F22A360A3799343A37110BD0070004022 +:10873000F7B5037BDB0728D5012928D802238579E3 +:108740000F1C041C1D4016D1FFF7BAFF182000F0C3 +:1087500027F9637B1822291C061C019312F069FD7E +:108760006B460421301C595610F0DAFA0222A37924 +:10877000A6601343A371A3685A68002F03D0DB6877 +:108780001A60002004E01B69FAE7024800E0024892 +:10879000FEBDC04616FCFFFF17FCFFFFF7B5012723 +:1087A000037B3B4222D08579041C3D4016D1FFF764 +:1087B00087FF182000F0F4F8637B291C1822061CA0 +:1087C000019312F036FD6B460421301C59563A1CB9 +:1087D00010F08AFAA379A6603B43A371A26853699B +:1087E00050681B681840431E984100E00048FEBDD9 +:1087F00016FCFFFF38B5037B9B0715D50C4B994240 +:1088000014D80D1C041C12F09EF8031C0020834297 +:108810000DD1281C02F00EFA064901F049FD011C99 +:10882000A06800F0C5FB02E0034800E0034838BD43 +:10883000FF03000000C07F4416FCFFFF17FCFFFF92 +:1088400070B5037B9B0716D504258379041C2B4246 +:108850000DD1FFF735FF082000F0A2F80D21061C0E +:10886000615600F08DFDA379A6602B43A371A0682B +:1088700000F0AEFD00E0014870BDC04616FCFFFFF1 +:10888000F7B5037B5B0719D510268579041C3540A5 +:1088900010D1FFF715FF282000F082F80D22071CE9 +:1088A000A188A25601230095FEF754FAA379A76088 +:1088B0003343A371A06810F086FC00E00048FEBDC1 +:1088C00016FCFFFF08B583791B0703D5806800F00D +:1088D00083FB00E0004808BD16FCFFFF10B5041C38 +:1088E000002300F0D1FCE121054B201C2360054B47 +:1088F00049022364044B636410F032F9201C10BD5C +:1089000028B7020040B7020074B7020070B5051C1A +:10891000042008F007FC061C1448801B02F0D2F962 +:1089200004F004F8124B002203F07AF901F0F0FA97 +:1089300003239843041C301C08F0FEFB2868002821 +:108940000AD1201C08F0EEFB28600028F6D1203C5C +:10895000002CF3D1074807E0A408A40004196C60B8 +:10896000281C12F00BF8002070BDC0460038002013 +:108970000000E83F13FCFFFF10B572B6064C201C48 +:10898000FFF7C4FF002802D062B6044802E0A060EE +:10899000E06062B610BDC046102D002013FCFFFF42 +:1089A00038B5104C051C2368002B04D0211C11F095 +:1089B000EDFF002809D1A368002B08D0211C281C3A +:1089C000083111F0E3FF002801D0041C07E0281C47 +:1089D00008F0A8FB041E02D11420FDF757FD201C4F +:1089E00038BDC046102D002008B5002815D00B4B0F +:1089F0001A68904202D95A68904208D39A68904205 +:108A000002D9DB68984202D308F096FB05E0802388 +:108A1000043802681B061343036008BD102D0020B4 +:108A200008B5084A03880120934209D0834202D046 +:108A30000020DB0704D404481E21FEF765F800205F +:108A400008BDC046FFFF0000C828002002200D4AD4 +:108A50000D4B30B59850101C8022D2009C58002C31 +:108A6000FAD0A124084DE400295199580029FCD0DE +:108A70000021054A11508022D2009A58002AFAD0CB +:108A800030BDC0460405000000E00140802370B501 +:108A90005B0544201D695E69FFF782FF00214422C7 +:108AA000041C12F0C6FB311C133944226943201CFC +:108AB00012F0A2FB054B22689A4204D0201C002130 +:108AC000442212F0B6FB201C70BDC046FECAFECA8E +:108AD00030B501240A480B4B1C50041C8020C000F8 +:108AE0001D58002DFAD00A601A58002AFCD0002127 +:108AF000044A11518022D2009A58002AFAD030BD7F +:108B00000405000000E0014010B5041C054B0833CB +:108B10000360143010F010FD201C103010F00CFD1C +:108B2000201C10BD60B8020038B5041C8068002805 +:108B300008D0074B1D8800F085FA0368291C1B6AC2 +:108B400015229847211C034810F01EFB38BDC04673 +:108B5000EA2D0020C828002038B50025041C094B48 +:108B600085800833857103601030FEF7B3FE201C4A +:108B70001430FEF7AFFE044BA560E560201C1C60BE +:108B800038BDC04660B80200202D002070B5002519 +:108B9000041C0C4B858008338571036014300E1C57 +:108BA00012F017F8201C183012F016F8064BA680A9 +:108BB000A571E57125726572E5602561201C1C6058 +:108BC00070BDC04680B80200242D002013B5041CDF +:108BD0000E4811F0CFFF0023226843629A4201D170 +:108BE00020600BE0516A002902D001330A1CF9E72A +:108BF000032B02DDFFF7F8FE06E050620122684613 +:108C00001D21131CFEF716FC13BDC046782C002056 +:108C100038B5051C074811F0ADFF0123041C2B706B +:108C20000430FEF717FC0023201C2B70FFF7DCFE3E +:108C300038BDC046782C0020002815D00060416067 +:108C40008260C360046145618661C7614446046215 +:108C50004C464462544684625C46C4626446046383 +:108C60006E46466374468463002A06D0C46B043C97 +:108C7000043A25681560B442F9D18C6BA6464E6B58 +:108C8000B546002B06D0CC6B043C043B1D68256028 +:108C9000B442F9D10C6BA446CC6AA3468C6AA246B6 +:108CA0004C6AA1460C6AA046CF698E694D690C6971 +:108CB000CB688A68086849687047006041608260D4 +:108CC000C360046145618661C761444604624C46E5 +:108CD0004462544684625C46C462644604636E46E1 +:108CE000466374468463C46B043C043925680D6094 +:108CF000B442F9D1C7698669456904697047006063 +:108D000041608260C360046145618661C761444619 +:108D100004624C464462544684625C46C4626446C3 +:108D200004636C4644637446846304697047846BCF +:108D3000A646446BA546046BA446C46AA346846A4F +:108D4000A246446AA146046AA046C7698669456985 +:108D50000469C3688268006841687047F0B587B0ED +:108D60001F1C0EAB1B88019003930D9B0D1C0292E0 +:108D70000C9E0093002F39D0002E01D1DB0735D592 +:108D80002020FFF70DFE041C1030FEF735FB6B466C +:108D90001B89258063801820FFF702FE0496061CBD +:108DA000051C009B80C600211022301C059312F088 +:108DB00040FA04A90822301C12F01EFA0D4B0022C2 +:108DC0006B6102230399A5600B43E260A380E2611B +:108DD0000198211CFEF744F8002808D0201C11F04F +:108DE0002DFE201CFFF700FE034800E0034807B0FB +:108DF000F0BDC046DFAB020013FCFFFF17FCFFFF16 +:108E0000F0B58180154989B000251E1C0491694682 +:108E1000134B85710360028146810573059504AB90 +:108E2000041C81CB81C1C023111C02932A1C231C6A +:108E30000C48FFF793FF094A079506926A4606AB6E +:108E400003CB03C2C023311C02932A1C231C0548F8 +:108E5000FFF784FF201C09B0F0BDC046F1AC020052 +:108E6000A8B80200B429002030B5051CA0240123B5 +:108E7000C135FF35E405AD002B511D1C8D408340ED +:108E8000291C0B4D0002615163510A4B920018439B +:108E9000094BD118A223DB00C850C046C046C046CB +:108EA000064B0021D218A823DB00D15030BDC046AC +:108EB0000C050000030003000060004000A000401B +:108EC000F7B52A4E01913568071C2949002D08D0B5 +:108ED0007368002B04D0B3680225002B0FD100E08B +:108EE000012508200D70FFF75BFD391C041C00F004 +:108EF00011FC6B461B79AD00A370745133E0002266 +:108F000002200B789C460133DC0F984262415242AA +:108F100013409C00634516D0144A10598278151CE2 +:108F200001222A4009D00B706B461B79391C8370D3 +:108F300011F067FF0D4B1C5915E0581C131C02283B +:108F4000E7DC031CE5E701233059827813401C1E3F +:108F500009D06B461B79391C837011F052FF044B0A +:108F60001B789B00F458201CFEBDC046282D002015 +:108F70000B01002070B5002403780B4A4533FF3302 +:108F80009B009C50051C00F08DFB0123AB70074E2D +:108F9000A359AB4204D1281CFFF726FD0023A3519F +:108FA00004340C2CF3D170BD00600040282D00204B +:108FB00070B5061C0D1C081C002100F01FFF041ECC +:108FC00006D1301C291C00F003FB7560201C00E05A +:108FD000004870BD17FCFFFF38B5051C0C1E09DBEF +:108FE00000F06CFB281C6968FFF7E2FF024B0020D1 +:108FF0001C8000E0014838BDEC2D002017FCFFFF6D +:1090000010B5054C0121201C11F029FF201C03493B +:10901000034A11F0E0FF10BD342D00201FAE020006 +:1090200000000020436810B5041C002B02D1044846 +:109030000FF03FFE606803681B69984710BDC0468B +:1090400062AF0300436810B5041C002B02D1044832 +:109050000FF02FFE606803681B69984710BDC0467B +:1090600062AF0300436810B5041C002B02D1044812 +:109070000FF01FFE60680368DB6A984710BDC046AA +:1090800062AF030080B2002807D1BFF34F8F034ABD +:10909000034BDA60BFF34F8FFEE770470400FA0519 +:1090A00000ED00E0F0B5264B85B01B78002B45D0D5 +:1090B000244B254E1D6834686A4255416242544132 +:1090C000EDB2E4B20193002D36D103A811F0D0FE29 +:1090D00005280CD0002804D0291C2A1CFFF7D2FF39 +:1090E00006E0019B03981B680093984700E0012568 +:1090F000002C1ED1154B03A91B8801240B80144B97 +:109100001B68181C009311F0B5FE071E052F0BD02D +:10911000002805D000210A1CFFF7B4FF002403E05B +:109120000098336898473C1C002DCCD0002CCAD046 +:1091300004E0002D02D1C6E7002CDBD005B0F0BD65 +:10914000622E00203C2D0020402D0020EE2D00201E +:10915000382D002008B5074B1B68002B07D0984717 +:10916000002806D000210A1CFFF78CFF01E0FFF762 +:1091700099FF08BD442D00200120054A08B5137849 +:109180005840044B10701B68002B00D0984708BD56 +:10919000632E0020482D002002210D4A0D4B30B5D2 +:1091A0009950111C8022D2009C58002CFAD0A12486 +:1091B000084DE400285198580028FCD00020054AAA +:1091C00050508022D2009A58002AFAD030BDC046B2 +:1091D0000405000000E001400323FF220340984300 +:1091E000DB009A40994030B5046894436318012429 +:1091F0000849094A54500C1C8021C9005558002DBB +:10920000FAD003605358002BFCD00022024B1A51B5 +:1092100030BDC0460405000000E00140F0B5104C30 +:109220000125A4460F4B1D518024E4001C59002C3D +:10923000FAD00C1C92008A188025ED00944207D0C9 +:109240002668671A3E505F59002FFCD00434F3E7BC +:10925000002261465A505A59002AFCD0F0BDC0463F +:109260000405000000E0014008B4024B9C46403871 +:1092700008BC604797AE020008B4024B9C464038D9 +:1092800008BC60479FAE020038B5041C1D1CFBF7EC +:1092900053FF201C291C4030FBF7F8FE054B201C17 +:1092A0001A1C083222601A1C543320322264636470 +:1092B00038BDC046C0B8020010B5041C044B0360A2 +:1092C0000FF0BAFB201CFBF72BFF201C10BDC04683 +:1092D00020B6020010B5041C034B083303601C3099 +:1092E00000F032FB201C10BD38B9020070B5051C1F +:1092F000041C0E4B0E1C083308C5281C0021182224 +:1093000011F097FF0023201C311CE361236263638B +:10931000A363E364064A231C1C3000F0E5FA281C12 +:10932000311C0FF0DCFC201C70BDC04638B90200B7 +:1093300041AF020070B5041C0E1C151C0021102248 +:1093400011F077FF054B201C2361311C2A1CFCF710 +:1093500063FA034B201C1C6070BDC046A086010050 +:109360004C2D002038B5054D2B68834204D0041CD9 +:109370002169FCF70BFA2C6038BDC0464C2D00204B +:1093800070B5104C051C0E1C081C211C00F036FB8F +:10939000211C28600023CB565A1C05D0B34201D1B2 +:1093A0008B6802E00C31F5E70023A0210120064A7A +:1093B000C9002B7150506A211B020B4303495350C3 +:1093C00070BDC046A01703000070004004050000F7 +:1093D0000C4B0D4A10B50D499C582140995001790C +:1093E0009C5809022143995001221A608022D20020 +:1093F0009A58D207FAD4A123024ADB00D05880B28F +:1094000010BDC0460070004004050000FF00FFFFD3 +:1094100003780D4A9B009B18A22210B58024D2002D +:109420009858640320439850002902D0995807485F +:1094300006E098580649014080209950995840020A +:109440000143995010BDC046006000400300030076 +:10945000FFFFFCFF0021114A114B1165114A1188D1 +:10946000114A9950114A1178002904D010490888EE +:10947000A821C90058505178002903D00C494888C8 +:109480000C4958509278002A04D0094A9188A922A0 +:10949000D200995001221A607047C046FCA00040DB +:1094A00000A00040FE0000204C050000642E0020BB +:1094B00000010020440500000022154B10B55A6041 +:1094C00090420ED10121134A98509950124A053109 +:1094D00098500432985008329950104A1188104A16 +:1094E0009950104A410051308A5AFF3080001A507A +:1094F000C2200D4980000C580C4A22408024E4030D +:1095000022430A508022D2000A6001221A6010BD54 +:1095100000A00040FC0F000004050000FE00002039 +:109520004C0500000001002000E100E0FFFF00FF0B +:10953000012330B51D1C021CA0248540C132FF321E +:10954000E405920013510A4A8900A550094A0A4CC1 +:109550008918A222D2008C50C046C046C0460B607B +:10956000064B000218438850C046C046C04630BD76 +:109570000C05000000600040031F02000300030010 +:1095800010B5002A02D0FFF743FF17E003780C4A1A +:109590009B009B18A222D2009C580A482040985059 +:1095A000002902D09958084806E098580749014018 +:1095B00080209950995880020143995010BDC046AF +:1095C00000600040FFFFEFFF03000300FFFFFCFF10 +:1095D000F7B500222D4B2E4C1A650123061C0D1CDD +:1095E000081C6360002100F009FC0194002809D1E7 +:1095F000FE21281C890500F015FC002803D0FE255B +:10960000AD0500E000253478224B6400E35A009356 +:10961000214B1F88381C01F00DFB011C281C01F098 +:1096200039F800F05DFC1D4B1A4982B2E2526252D9 +:10963000002A04D10121301CE152111C14E0BA426D +:1096400006D1013A301C0021E252FFF7E1FE0DE0A5 +:10965000009B002B01D0BB4208D1009B301CDA1BC1 +:1096600057427A410121D2B2FFF78AFF8022C123FB +:10967000019912039B00CA500199094A053BFF3B1F +:10968000CA500123019A1360F7BDC046FCA00040F8 +:1096900000A00040F02D0020FE000020000100206E +:1096A00008080000002108B5034A0378D1540021BE +:1096B000FFF78EFF08BDC046642E00200020104A30 +:1096C000CB17106501229B0F59180E480E4B8910BD +:1096D0005A600E4A814202D90121494202E004291E +:1096E00000D8052111808021C122090392009950E0 +:1096F0000749053AFF3A995001221A607047C0465F +:10970000FCA00040FFFF000000A00040FE00002081 +:1097100008080000F8B5051C0E1C081C2B4900F0B9 +:109720006DF92B4BC4B2C0B2195C012200290FD0D5 +:109730005978002902D15A70141C0AE0997800293E +:1097400002D19A70022404E022480FF0B2FA00E03D +:109750001A54301C6E70211C2C70FFF7E9FE1E4A53 +:109760006300DBB21D48A1008918DA0012181C48FA +:109770001A4E11501B4811501B48A1000918A22075 +:10978000C0001150A3211948C90050500121A02246 +:10979000081CD200B7585A1C90400A1C9A40031C5F +:1097A0001343A0223B43D200B350002C02D18023AC +:1097B000DB059967201CFFF77FFE281C0C49FFF78B +:1097C0007DFF281C0021FFF703FFF8BDF4170300FD +:1097D000642E002085AF03000060004000F00140CF +:1097E000140500001C05000040A100404CA10040F1 +:1097F000204E000037B5A223A022DB00D205D358AB +:10980000BE220193314B5200995800295DD0C121ED +:1098100089005958002958DA00249C502C4BA50087 +:10982000E85800284ED02B4BE35C002B30D0019B36 +:109830000121E3400B4212D0231CA022C133FF338D +:109840009B00D2059B589B039B0F032B07D0224BF9 +:109850001B68E3400B4202D0204B1B6817E0019BC2 +:109860000122E340134213D1231CA021C133FF3353 +:109870009B00C9055B589B039B0F032B08D1184B1A +:109880001B68E340134203D00221144B1B68984726 +:10989000A023DB05EA18E023C025DB00D158AD0288 +:1098A00029420FD0D1580F480840D0500198E040CD +:1098B000C10702D5D158294303E08020D158800246 +:1098C0000143D15001341F2CA8D137BD00600040A6 +:1098D000542D0020672E0020D02D0020502D002078 +:1098E000D42D0020FFFFFCFF30B5041C081C4D1CCC +:1098F0001CD00F482160BE24026000200D4A640085 +:1099000010510D4C8D002B5101240C4B5C54C12186 +:10991000802389001B065350094A0A4B54582340A0 +:10992000C0242404234353504023136030BDC04659 +:10993000502D002000600040542D0020672E002094 +:1099400000E100E0FFFF00FF00210368014A9B00E7 +:1099500099507047542D002070B5A024E025006870 +:10996000E40583001B19ED005E59214C34405C5125 +:10997000204D0124002A0ED0A14204D181402A6842 +:109980001143296015E0022913D184401A4A116855 +:109990000C4314600DE0012904D181402A688A43F8 +:1099A0002A6006E0022904D1844013490A68A243D0 +:1099B0000A602A680121C2400A4204D10E4A126894 +:1099C000C2400A4212D0A222A021D200C9058A5860 +:1099D000C240101CE022D200C10702D59958C02015 +:1099E00001E08020995880020143995070BDC04623 +:1099F000FFFFFCFFD02D0020D42D002010B5041C4B +:109A0000431C07D011F0D7FA041C431C02D10248B2 +:109A10000FF04FF9201C10BDE9AF030002B47146EE +:109A200049084900095C49008E4402BC7047C046A1 +:109A300003B47146490840004900095E49008E445C +:109A400003BC704703B47146490840004900095AF5 +:109A500049008E4403BC7047002243088B4274D3F4 +:109A600003098B425FD3030A8B4244D3030B8B421F +:109A700028D3030C8B420DD3FF22090212BA030C28 +:109A80008B4202D31212090265D0030B8B4219D309 +:109A900000E0090AC30B8B4201D3CB03C01A524129 +:109AA000830B8B4201D38B03C01A5241430B8B4271 +:109AB00001D34B03C01A5241030B8B4201D30B035A +:109AC000C01A5241C30A8B4201D3CB02C01A524181 +:109AD000830A8B4201D38B02C01A5241430A8B4244 +:109AE00001D34B02C01A5241030A8B4201D30B022D +:109AF000C01A5241CDD2C3098B4201D3CB01C01A47 +:109B0000524183098B4201D38B01C01A5241430950 +:109B10008B4201D34B01C01A524103098B4201D33E +:109B20000B01C01A5241C3088B4201D3CB00C01AAB +:109B3000524183088B4201D38B00C01A5241430823 +:109B40008B4201D34B00C01A5241411A00D2014648 +:109B5000524110467047FFE701B5002000F0FCF8C5 +:109B600002BDC0460029F7D003B5FFF775FF0EBC54 +:109B70004243891A1847C04603460B437FD400224C +:109B800043088B4274D303098B425FD3030A8B4291 +:109B900044D3030B8B4228D3030C8B420DD3FF22FB +:109BA000090212BA030C8B4202D31212090265D0C9 +:109BB000030B8B4219D300E0090AC30B8B4201D37C +:109BC000CB03C01A5241830B8B4201D38B03C01AC3 +:109BD0005241430B8B4201D34B03C01A5241030B3A +:109BE0008B4201D30B03C01A5241C30A8B4201D3EB +:109BF000CB02C01A5241830A8B4201D38B02C01A96 +:109C00005241430A8B4201D34B02C01A5241030A0C +:109C10008B4201D30B02C01A5241CDD2C3098B42F1 +:109C200001D3CB01C01A524183098B4201D38B016E +:109C3000C01A524143098B4201D34B01C01A524111 +:109C400003098B4201D30B01C01A5241C3088B4256 +:109C500001D3CB00C01A524183088B4201D38B0041 +:109C6000C01A524143088B4201D34B00C01A5241E3 +:109C7000411A00D201465241104670475DE0CA0FBA +:109C800000D04942031000D34042534000229C467A +:109C900003098B422DD3030A8B4212D3FC22890184 +:109CA00012BA030A8B420CD3890192118B4208D35A +:109CB000890192118B4204D389013AD0921100E0BC +:109CC0008909C3098B4201D3CB01C01A52418309D0 +:109CD0008B4201D38B01C01A524143098B4201D3FD +:109CE0004B01C01A524103098B4201D30B01C01A28 +:109CF0005241C3088B4201D3CB00C01A52418308A2 +:109D00008B4201D38B00C01A5241D9D243088B42F7 +:109D100001D34B00C01A5241411A00D2014663469A +:109D200052415B10104601D34042002B00D54942FE +:109D3000704763465B1000D3404201B5002000F03D +:109D40000BF802BD0029F8D003B5FFF715FF0EBCD4 +:109D50004243891A1847C0467047C0468446101CC3 +:109D600062468C46191C634600E0C0461FB501F0F0 +:109D7000F1FE002801D40021C8421FBD10B501F03A +:109D800035FE4042013010BD10B501F0E3FE002861 +:109D900001DB002010BD012010BDC04610B501F050 +:109DA000D9FE002801DD002010BD012010BDC046F5 +:109DB00010B501F05FFE002801DC002010BD01207D +:109DC00010BDC04610B501F055FE002801DA002094 +:109DD00010BD012010BDC0468446081C6146FFE747 +:109DE0001FB500F011FC002801D40021C8421FBD9E +:109DF00010B500F095FB4042013010BD10B500F0E9 +:109E000003FC002801DB002010BD012010BDC0466E +:109E100010B500F0F9FB002801DD002010BD012085 +:109E200010BDC04610B500F0A5FB002801DC0020E5 +:109E300010BD012010BDC04610B500F09BFB0028EE +:109E400001DA002010BD012010BDC046002B11D149 +:109E5000002A0FD1002900D1002802D00021C943D7 +:109E6000081C07B4024802A14018029003BDC04676 +:109E7000E9FEFFFF03B4684601B5029800F082F8DE +:109E8000019B9E4602B00CBC7047C046F0B54F46E1 +:109E9000464605042D0C2C1CC0B41704160C3F0CB0 +:109EA0009946030C7C4375435F4373437D19260C2D +:109EB000AD199C46AF4203D980235B029846C44447 +:109EC0004B465143434324042E0C240C2D0466447A +:109ED0002C1959188919201C0CBC90469946F0BDC4 +:109EE0009E2110B5C905041CFFF7A6FF002803D169 +:109EF000201C00F07FFE10BD9E21201CC90500F033 +:109F0000FBFC00F077FE80231B069C466044F2E7D2 +:109F100038B500220C4B041C0D1CFFF753FF002822 +:109F200004D1201C291C02F08FFC38BD064B0022F6 +:109F3000201C291C02F00EF902F086FC80231B066F +:109F40009C466044F1E7C0460000E041F0B583B0B4 +:109F5000161C1F1C0090019102F0EAFD041C0D1C50 +:109F6000221C2B1C301C391CFFF790FF009A019B10 +:109F7000121A8B410899201C0A604B60291C03B0FF +:109F8000F0BDC046F0B5141C83B01D1C00900191BB +:109F900002F0C6FE221C2B1C061C0F1CFFF776FFCE +:109FA000009A019B121A8B410899301C0A604B6081 +:109FB000391C03B0F0BDC046F8B54A004302440066 +:109FC0004E02C50F240E281C9B09120EC90FB7099B +:109FD0008D4240D0A01A002800DC84E0002A1CD169 +:109FE000002F5CD15A0704D00F221A40042A00D057 +:109FF00004338022D2041A40281C002A24D00134C1 +:10A00000FF2C00D17BE09B015B0AE4B25B02E4051C +:10A010005B0A2343C0071843F8BDFF2CE2D080221F +:10A02000D204174301261B2808DC391C20223E1CC1 +:10A03000C140101A8640771EBE410E439B1B5A0139 +:10A0400033D4281C5A07CFD1DB08FF2C1ED05B026B +:10A050005B0AE4B2DAE7A11A002957DD002A3AD0F8 +:10A06000FF2CBFD08022D204174301261B2972DDAA +:10A070009B195A01E5D50134FF2C00D187E001215D +:10A080008A4A194013405B080B43ABE7002B36D0DC +:10A090008022D20313435B025B0AFF24B6E7013838 +:10A0A00000283FD1DB1B5A01CBD59B019E09301CF8 +:10A0B00002F020FD05388640844223DC001B1F246B +:10A0C000321C431C201ADA408640131C741EA64121 +:10A0D0000024334386E7002F00D183E701390029AC +:10A0E00050D1DB19C5E7002820D1621CD2B2012A69 +:10A0F0005EDDDE1B720128D5FE1A0D1CD7E7FF249A +:10A10000002383E7694B241A33406BE7002958D1B9 +:10A11000621CD1B201293CDDFF2A37D0FB185B0855 +:10A12000141C5FE7FF2C00D07CE75BE7002C1ED0FF +:10A13000FF2A23D08024E404404223431B285BDD14 +:10A140000123FB1A141C0D1CADE7002EAFD1002318 +:10A150000020002478E73A1CCA40944620223E1C86 +:10A16000511A8E406246771EBE41164380E7002B8F +:10A170003ED0C0430028E4D0FF2ADFD13B1CFF249F +:10A180000D1C2FE7FF2C00D06FE72BE7FF240023E7 +:10A190005AE7002C5AD1002B7FD0002F00D121E7A5 +:10A1A000DB195A0100D44CE7404A0134134019E747 +:10A1B000002C15D1002B2FD1002F5DD03B1C0D1C86 +:10A1C00010E7002C21D1002B53D0C943002904D023 +:10A1D000FF2A4BD01B2957DD0123DB19141C48E74C +:10A1E000002B22D1002F4AD03B1C0D1CFF24F9E686 +:10A1F0003B1C141C0D1CF5E61D1C2024C540201A18 +:10A200008340581E83412B439BE7FF2A2ED0802496 +:10A21000E40449422343DDE7002F00D1E2E6DA1BE4 +:10A2200050013CD5FB1A0D1CDCE6FF24002F00D1A9 +:10A23000D8E68022DB08D203134204D0FE0816427F +:10A2400001D1331C0D1CDB00FF24CBE6002B0DD00D +:10A25000FF24002F00D1C5E68022DB08D203134281 +:10A26000F1D0FE081642EED1331CECE73B1CFF2474 +:10A27000B8E63B1C141CB5E6231C0020E4E6802352 +:10A2800000209B04FF24DFE61E1C2024CE40611A20 +:10A290008B40591E8B4133439FE73B1CA2E6131EA4 +:10A2A00000D0CEE600230020CEE6C046FFFFFFFB35 +:10A2B000F0B556464D465F464446F0B4430245006D +:10A2C000C70F83B08A465C0A2E0EB94641D0FF2ED6 +:10A2D00026D080231B042343DC00002398469B46A2 +:10A2E0007F3E53465B025D0A53465A00DB0F120E57 +:10A2F0009A4639D0FF2A33D080231B042B43DD003C +:10A3000000237F3A5146B21A46467940081C019212 +:10A310001E430F2E00D976E07E4AB6009659B74606 +:10A32000002C30D108239846063B9B46D9E7802372 +:10A330000021DB03FF245B02E4055B0AC90723431A +:10A340000B43181C03B03CBC90469946A246AB4652 +:10A35000F0BD002C28D104239846033B9B46C0E760 +:10A36000002D1FD1022302E0002D11D10123B21ACA +:10A3700050464646784001921E430F2E27D8664924 +:10A38000B60089598F460C239846093B9B46A8E79F +:10A39000281C02F0AFFB7622431F52429D40121A46 +:10A3A0000023AFE70323ADE7201C02F0A3FB431F0C +:10A3B0009C4076235B421E1A002398469B4690E7FA +:10A3C0000025D1469B465B464846022B6FD10121B2 +:10A3D000FF2401400023AEE77E23019A5B429B1AD3 +:10A3E0001B2B6DDD01214B46194000240023A2E701 +:10A3F0008023DB031C4249D18023DB0323435B0220 +:10A400005B0A391C96E763016D01AB4237D389467D +:10A410001A2001215B1B01241E1C49005B00002E39 +:10A4200001DBAB4201D35B1B214301380028F3D190 +:10A43000581E83410B431D1C019C7F34002CCBDD37 +:10A440006B0704D00F232B40042B00D004352B01C5 +:10A4500004D5019A314B8032141C1D40FE2C07DDBF +:10A460004B460121FF241940002364E7251CAAE77D +:10A4700001214A46AB015B0AE4B211405BE7019A55 +:10A480008946013A01921B200021C4E71D4207D0F2 +:10A4900023435B025B0A391C4CE700256302ABD502 +:10A4A0008023DB032B435B025B0A514642E7032B0D +:10A4B00025D0012BC0D101210024014000233AE71F +:10A4C000291CD9402B1C019A9E3293405D1EAB4142 +:10A4D0000B435A0704D00F221A40042A00D0043339 +:10A4E0005A0105D54B46012101241940002322E7DA +:10A4F00001214A469B015B0A114000241BE780238F +:10A5000001214A46DB032B435B020A405B0A111C14 +:10A5100010E7C0465C1903009C190300FFFFFFF71A +:10A52000430270B542004C005D0AC30F4802120E90 +:10A53000460A240EC90FFF2A05D0FF2C08D001209F +:10A54000A2420BD070BD0120002DFBD1FF2CF6D113 +:10A550000120002EF6D10120A242F3D1B542F1D163 +:10A560008B4205D0002AEDD1281C431E9841E9E713 +:10A570000020E7E7F0B543024D024A0044005E0ABE +:10A58000240EC30F6D0A120EC90FFF2C0DD0FF2A27 +:10A5900031D0002C0DD177427741002A23D1002DF4 +:10A5A00021D10020002F0BD107E0002E28D1FF2A57 +:10A5B00021D0002A05D08B4207D0584201231843EE +:10A5C000F0BD002DF9D08B42F7D19442F5DC04DBCD +:10A5D000AE42F2D80020AE42F2D2584243410120AE +:10A5E0005B421843ECE7002FE5D04842414101208F +:10A5F00049420843E4E7002D02D1002CCBD0DAE732 +:10A6000002204042DCE7C0464302F0B542004C0065 +:10A610005E0AC30F4802120E450A240EC90FFF2A14 +:10A620000FD0FF2C1AD0002A10D177427741002C8E +:10A6300029D0002F17D04842414101204942084308 +:10A640000BE00220002E08D1FF2C07D0002C0AD1ED +:10A65000002D08D1584201231843F0BD0220002DDF +:10A66000FBD1002AE1D08B42F4D1A242F2DC04DB20 +:10A67000AE42EFD80020AE42EFD258424341012013 +:10A680005B421843E9E7002DD3D10020002FE4D12D +:10A69000E0E7C046F0B55F4656464D464446F0B446 +:10A6A00045024600C40F83B00F1C6D0A360EA34648 +:10A6B00045D0FF2E25D080231B041D4300239A463E +:10A6C000ED007F3E01937B025B0A98467800FB0F0A +:10A6D000000E994640D0FF2838D0802342461B0404 +:10A6E0001343DB00984600237F384A46019F301809 +:10A6F0006240411C1F430F2F69D87D4EBF00F659A1 +:10A70000B746002D45D108230193063B9A46DAE768 +:10A7100093465346022B2FD15B46012400251C4053 +:10A72000FF236D02DB056D0AE4071D432543281C4A +:10A7300003B03CBC90469946A246AB46F0BD002D06 +:10A740002CD104230193033B9A46BCE743465A426B +:10A7500053410322D31AC8E742460123002AC4D03A +:10A76000404602F0C7F94246431F9A4076235B42B7 +:10A77000181A90460023B8E7032B00D1ADE0012B57 +:10A7800000D08CE05B4654461C40E4B20023002518 +:10A79000C7E70C230193093B9A4694E7281C02F073 +:10A7A000A9F97626431F9D4000237642361A01936D +:10A7B0009A4688E780250024ED03FF23B1E745464C +:10A7C000CB469A46A5E7454693469A46A1E74346B7 +:10A7D0002C041B0C9C46230C444626041C1C360CE3 +:10A7E0002F0C7443351C66467D4373437743EB1847 +:10A7F000260C9E19B54203D980235B029C46674410 +:10A8000024043304240C1B199D016C1EA5419B0ECE +:10A81000360C2B43BD19AD011D432B0104D501237B +:10A8200068081D400543081C031C7F33002B2CDDEA +:10A83000690704D00F212940042900D004352901DB +:10A8400003D52C4B1D40031C8033FE2B17DD012448 +:10A85000FF231440002564E78020C003054209D08F +:10A860004346034206D1454605436D026D0A4C46F8 +:10A87000FF2356E705436D026D0AFF2351E70124CC +:10A88000AD016D0ADBB214404BE77E235B421B1A1D +:10A890001B2B07DD012400231440002541E7081C81 +:10A8A0005A46C1E79E30291C8540D940681E854123 +:10A8B0000D436B0704D00F232B40042B00D004352D +:10A8C0006B0104D5012401231440002529E701244C +:10A8D000AD016D0A1440002323E78023DB031D43F1 +:10A8E00001245B466D0223401C1C6D0AFF2318E700 +:10A8F000DC190300FFFFFFF7F8B54A0043024400EC +:10A900004D02C00F240E061C9B09120EC90FAD0983 +:10A91000FF2A00D175E001277940884250D0A01A63 +:10A92000002800DC8FE0002A1ED1002D00D075E049 +:10A930005A0704D00F221A40042A00D00433802280 +:10A940000120D2041A403040002A32D00134FF2CBA +:10A9500000D184E09B015B0AE4B25B02E4055B0A80 +:10A960002343C0071843F8BDFF2CE1D08022D20456 +:10A9700015431B287ADD01255B1B5A015DD59B0120 +:10A980009F09381C02F0B6F805388740844269DC1C +:10A99000001B1F243A1C431C201ADA408740131C5A +:10A9A0007C1EA74100243B43C2E7131E45D1002370 +:10A9B0000020DB08FF2C28D05B025B0AE4B2CCE766 +:10A9C000A11A00295BDD002A2ED0FF2CB0D08022F6 +:10A9D000D20415431B2974DC2F1C2022CF40511AAE +:10A9E0008D40691E8D413D435B195A0125D50134C7 +:10A9F000FF2C74D001217E4A194013405B080B43A1 +:10AA000096E7002D00D088E785E7002B27D080222D +:10AA1000D20313435B025B0AFF249EE70138002840 +:10AA2000AAD0FF2CA5D183E7002D00D180E7013902 +:10AA30000029D9D0FF2CCDD17AE75A0700D079E789 +:10AA400001203040B5E7002825D1621CD2B2012A8E +:10AA500055DD5F1B7A012DD5EF1A0E1C91E7FF24FF +:10AA600000237AE7624B241A3B4061E7291C20222D +:10AA7000C140101A8540681E85410D437CE70029BE +:10AA800046D1621CD1B201292BDDFF2A26D0EB185A +:10AA90005B08141C4CE7002C15D0FF2A1AD0802428 +:10AAA000E404404223431B284DDD0123EB1A141C10 +:10AAB0000E1C62E7002F00D063E700230020002473 +:10AAC00077E7012590E7002B39D0C0430028EDD06F +:10AAD000FF2AE8D12B1CFF240E1C29E7FF240023AA +:10AAE00067E7002C5AD1002B7FD0002D00D11FE743 +:10AAF0005B195A01A1D53E4A0134134018E7002CD6 +:10AB000015D1002B2FD1002D5ED02B1C0E1C0FE772 +:10AB1000002C21D1002B54D0C943002904D0FF2A96 +:10AB20004CD01B2958DD01235B19141C5DE7002B59 +:10AB300023D1002D4BD02B1C0E1CFF24F8E62B1C20 +:10AB4000141C0E1CF4E61E1C2024C640201A834050 +:10AB5000581E83413343A9E7FF2A2FD08024E40401 +:10AB600049422343DDE7002D00D1E1E65A1B5001A5 +:10AB700000D41AE7EB1A0E1CDAE6FF24002D00D1F0 +:10AB8000D6E68022DB08D203134204D0ED0815423A +:10AB900001D12B1C0E1CDB00FF24C9E6002B0DD0BD +:10ABA000FF24002D00D1C3E68022DB08D20313422C +:10ABB000F1D0ED081542EED12B1CECE72B1CFF2445 +:10ABC000B6E62B1C141CB3E6231C0020F1E6802300 +:10ABD00000209B04FF24ECE61F1C2024CF40611AB8 +:10ABE0008B40591E8B413B439EE72B1CA0E6C04681 +:10ABF000FFFFFFFB4202510A4200C30F120E00206A +:10AC00007E2A0DDD9D2A0CDC802000040143952A5C +:10AC10000ADC9620821AD1400A1C58424240D018C1 +:10AC20007047034A9818FBE7963A91400A1CF4E7EC +:10AC3000FFFFFF7F70B5041E39D0C50F00D044421E +:10AC4000201C01F057FF9E23261C1B1A962B07DCA5 +:10AC5000082801DD083884406402640AD8B21EE086 +:10AC6000992B0ADD0522211C121AD1400A1C011C55 +:10AC70001B318E40711E8E411643052801DD421F97 +:10AC800096400F4C3440720704D00F221640042E19 +:10AC900000D0043462010ED4A401640AD8B2640264 +:10ACA000C005640AED0704432C43201C70BD002539 +:10ACB00000200024F3E7024B1C409F231B1AEBE704 +:10ACC000FFFFFFFB10B5041E35D001F013FF9E21DE +:10ACD000091A962909DC082830DD021C231C083AD1 +:10ACE00093405B025B0AC8B220E099290CDD052283 +:10ACF000231C121AD3401A1C031C1B339C40231C18 +:10AD00005C1EA34113431C1C052801DD431F9C400E +:10AD10000F4B2340620704D00F221440042C00D0B4 +:10AD200004335A010ED49B015B0AC8B25B025B0A72 +:10AD3000C005184310BD00200023F7E763025B0A3B +:10AD4000C8B2F3E79F21024A091A1340EBE7C04655 +:10AD5000FFFFFFFBF0B5454657464E4694464C0074 +:10AD60000A03C90FE0B488460E1C1903470FC5003B +:10AD7000480A6146490F01436046520A1743C00022 +:10AD80005A00640D520DDB0F8446984500D1A7E0B0 +:10AD9000A01A002800DC01E1002A3DD163460B43E4 +:10ADA00000D0D4E06B0700D188E00F232B40042BA8 +:10ADB00000D183E02A1DAA42AD4180236D427F1954 +:10ADC0001B043B404646151C002B00D17CE0CC4BBD +:10ADD00001349C4200D1FDE03A1CCA4BED081A40F8 +:10ADE0005007640552020543120B640D0021120343 +:10ADF0000B0D1B056405120B1A436308C24CF607C2 +:10AE000014401C43640064083443281C211C1CBCEF +:10AE100090469946A246F0BDB94B9C42C2D08023D1 +:10AE20001B041943382800DDECE01F2800DD21E178 +:10AE300020220E1C6346121A9640C34033436646D6 +:10AE40009640321C561EB24113430A1CC240EB1AF4 +:10AE50009D42B6411D1CBA1A7642971B3B0200D494 +:10AE600097E07A02560A002E00D1B6E0301C01F0BD +:10AE700041FE031C083B1F2B00DDB7E09E40371C42 +:10AE800028262A1C361AF240161C9D403E439C423E +:10AE900000DDB2E01C1B621C1F2A00DDD8E01F236E +:10AEA000291C1C1B331CA540A340D1406C1EA5418E +:10AEB000D64019430D43371C002473E780231B043D +:10AEC0003B40464600D082E78D4BED0878070543AE +:10AED000FA089C4232D012036405120B640D85E718 +:10AEE000A31A002B00DC94E0002A3CD0844A944250 +:10AEF00000D157E7802212041143382B00DC05E112 +:10AF000063461943481E81410022C8B24019A84235 +:10AF10009B41051CD2195B42D7183B0239D5784BAF +:10AF200001349C4200D14CE10120764A6B083A4042 +:10AF300028401843D5070543570833E72B1C134314 +:10AF400048D080231B031A431203120B4EE701382B +:10AF5000002878D16346EE1AB5429B417A1A5B42CB +:10AF6000D71A351C7AE7021C0A4300D11AE7013BC5 +:10AF7000002B00D0F2E04019A8429B41CA195B4265 +:10AF8000D718051CC9E7131C334300D118E1171C5F +:10AF9000351C46466B0700D007E795E700287AD1B5 +:10AFA000621C5205520D012A00DCFBE06246AA1A1F +:10AFB0009542B6419146781A7242861A320200D4FE +:10AFC00093E06246551BAC458041CF1B40423E1A80 +:10AFD000984648E70022002508E7281C01F08AFD72 +:10AFE0002030031C083B1F2B00DC47E72838854036 +:10AFF0002E1C00259C4200DC4CE7424AE41A164015 +:10B00000371CCFE6634619434B1E99410022CBB251 +:10B010001DE7002B00D0F2E0601C43055B0D012B07 +:10B0200000DCA4E0364B984200D121E163465C1974 +:10B03000AC429B41CF195B42FA186408D5072543FF +:10B040005708041CAEE62E4B9C4200D0EAE6A9E667 +:10B05000211C331C1F39CB40191C202A00D182E04F +:10B060003F231C1BA64035436E1EB54100270D43F0 +:10B0700000248EE7031C0E1C203BDE40202874D0E9 +:10B0800040231B1A99400B1C62461343591E8B41E7 +:10B0900000223343DBE6002C50D0194CA24200D1F1 +:10B0A000A8E08024240440422743382800DDD9E06A +:10B0B0001F2800DD39E120243E1C241AA640B0469A +:10B0C0002E1CA146C640444626434C46A5406C1E55 +:10B0D000A541C74035436046451BCF1BAC45894160 +:10B0E00049427F1A141C9846B8E64B464D463343F6 +:10B0F00000D0B8E60026002700240025E4E6C0467C +:10B10000FF070000FFFF7FFFFFFF0F801F2B5BDCAF +:10B110002022081CD21A9040814660469246D840B0 +:10B120004A4610438146524660469040021C501EDB +:10B130008241484610430A1CDA40E7E63C1C2C4397 +:10B1400058D0C043002851D16046451BAC458041D2 +:10B15000CF1B40423F1A141C98467FE68F4A944208 +:10B1600000D0CAE61EE600267DE700238CE73B1CE4 +:10B170002B43002C00D0BDE0002B00D1F5E063464E +:10B180000B4300D10EE663465B19AB428041CA19FE +:10B19000404217183A0200D4FCE0814A1D1C1740B7 +:10B1A0000134FFE53A1C2A43002C51D1002A00D07B +:10B1B00085E062460A4303D00F1C65469846F1E5D8 +:10B1C0000026002700257FE6181C0A1C2038C240F4 +:10B1D000202B00D1A7E04020C01A8140081C634604 +:10B1E0001843411E8841104300228FE66B4CA24257 +:10B1F00000D05AE70F1C6546141C9846D2E5002C77 +:10B200003AD1381C284371D0DB43002B18D0634857 +:10B2100082426BD0382B00DD9DE01F2B00DDA7E0C4 +:10B2200020203C1CC01A8440A1462C1C8246DC40D5 +:10B230004846044350468540681E8541DF4025430B +:10B24000654465459B417F185B42FF18141C64E60A +:10B25000002A19D162460A4377D00F1C65469846EA +:10B260004E4C9FE53D436F1EBD410027EDB232E7D6 +:10B27000041C0027002527E64848824236D080205B +:10B2800000045B420743C5E762460A4349D0802475 +:10B29000ED087807FA0824032843224209D0CE0893 +:10B2A000264206D162464F07381CD2081043984602 +:10B2B000321CD200470F1743C500384C72E5624676 +:10B2C0000A4300D16EE56246AE1AB5429241781A41 +:10B2D0005242821A100200D455E66246551BAC4514 +:10B2E0008041CA1B4042171A98465BE50F1C654611 +:10B2F000141C57E5002B34D063460B4311D0802437 +:10B30000ED087807FA08240328432242D1D0CB085D +:10B310002342CED162464F07381CD20810431A1C74 +:10B32000C7E71E4C3EE5002059E7041C3E1C203CAC +:10B33000E640341C20282BD04026301A87403D435D +:10B340006F1EBD4100272543C5E680270026FF0369 +:10B35000124C0025B8E53D436F1EBD410027EDB2FC +:10B360006EE70F1C65460D4C1CE50F1C654619E584 +:10B370001C1C381C203CE040041C202B0CD040201E +:10B38000C31A9F403D436F1EBD410027254357E729 +:10B390000027D4E71D1CFCE50027F3E7FF070000AA +:10B3A000FFFF7FFFF0B55F4656464D464446F0B47A +:10B3B0000F0387B098464D003B0BCC0F061C9246FE +:10B3C00081469B466D0D01946BD0664B9D4235D0F6 +:10B3D00080275B467F031F43F3009946624BFF00C3 +:10B3E000400F9C4607430023BB460026654400935C +:10B3F000424617035000D20F53463F0B400D904674 +:10B4000000D172E0574A904267D080235B031F430C +:10B410005346554A5B0FFF001F4394465346002195 +:10B42000DB0060444246624092462D1A0E430F2EC6 +:10B4300000D9A1E04D48B600805987465B461E43BF +:10B4400000D076E000239B469946023308260093FD +:10B45000CEE799464346BB4601930091009B022BE1 +:10B460006BD1019B9A460021534601220027894651 +:10B470001A403C4B00213F030C0D24053F0B274392 +:10B480003B4C1B0527401F437F00D2077F08174313 +:10B490004846391C07B03CBC90469946A246AB468C +:10B4A000F0BD03433ED05B46002B00D19CE15846E3 +:10B4B00001F020FB2823311C1B1A021C5F46D940D7 +:10B4C000083A97400B1C96403B439B46B1460023ED +:10B4D000284D00262D1A00938AE7524603213A434D +:10B4E000A0D10027002302219CE752463A4315D001 +:10B4F000002F00D185E1381C01F0FCFA021C282144 +:10B500005046891A131CC8405146083B99409F4039 +:10B510000B1C074317480021801A83E700270023EC +:10B5200001217FE700239B469946013304260093BF +:10B530005EE703230C2600935AE7032B00D13CE27D +:10B54000012B00D0BFE11A1C019B1A4000210023EF +:10B55000002789468EE700238027994600223F0373 +:10B56000004B87E7FF07000001FCFFFF1C1A0300E8 +:10B57000FFFF0F800DFCFFFFBB4500D951E100D15B +:10B580004CE14A46039200225C469046013D180E6B +:10B590003F0238431B020193030C994603041B0C22 +:10B5A0004946061C201C1F1C0093FEF755FA021C7E +:10B5B0007A4302904946201C171CFEF7D3FA039BDE +:10B5C00009041B0C19438F420CD9029B8919013BBA +:10B5D0008E4200D952E18F4200D84FE1029B891977 +:10B5E000023B0293CC1B201C4946FEF735FA009F14 +:10B5F000834647434946201CFEF7B4FA039A0B04DE +:10B600001404240C23439F420DD95A469B19013A36 +:10B610009E4200D930E19F4200D82DE102225242E1 +:10B6200094469B19E344029ADB1B17045A463A439B +:10B630009346019C170C220C101C04925A461104CC +:10B640002204120C141C090C7C4305924A4341430A +:10B6500047436118100C09188C4203D9802040021E +:10B66000844667440C0C12040804120C3C1981181F +:10B67000A34200D2E5E000D1DFE01F1B43465C1A85 +:10B68000A04592415242BF1AB74200D10EE1381C88 +:10B690004946FEF7E1F9009B029043434946381CB6 +:10B6A0009846FEF75FFA230C0F041F43B8450CD9E8 +:10B6B000029BBF19013BBE4200D9FBE0B84500D850 +:10B6C000F8E0029BBF19023B02934346FF1A49462A +:10B6D000381CFEF7C1F9009B039043434946381CD0 +:10B6E0009846FEF73FFA24040904240C21438845B8 +:10B6F0000CD9039B8919013B8E4200D9DCE08845B7 +:10B7000000D8D9E0039B8919023B03934346C91A29 +:10B71000029B039A1B04059C1A43100C13049146C8 +:10B72000221C049F1B0C5A4344437B437843E31879 +:10B73000170CDB199C4203D980246402A4466044A0 +:10B740001C0C12041B04120C00199B18814200D21D +:10B7500096E000D1FCE04A4601231A4391469B4BF8 +:10B76000EB18002B00DC99E04A4652070AD00F2262 +:10B7700049460A40042A05D0043149459241894688 +:10B78000524293445A46D20106D55A46904B1A402B +:10B7900080239346DB00EB188E4A934200DD62E67D +:10B7A0004A465946D208490711435A468946570224 +:10B7B000514601225B053F0B5B0D0A405AE6802093 +:10B7C0005A460003024208D0074206D107433F030E +:10B7D00099463F0B4246804B4CE65F4607433F038A +:10B7E0003F0B221C7C4B45E601F084F9031C203002 +:10B7F000272800DC5EE6083B9E400023B3469946BE +:10B8000065E6504601F076F9021C2032272A00DC5A +:10B8100075E657460838874000237BE6994500D2F5 +:10B82000AFE65A46594654084A46C80752080243EA +:10B8300003924A46D2079046A9E60027884500D3DE +:10B840001CE7019F5A46BC46E044B845BF417F42D1 +:10B85000BF19FF18013ABE4206D2BC425FD800D1E0 +:10B860009FE03F1B934609E7B742FAD1019B43454E +:10B87000F3D9371B934601E79346D4E60293B1E62A +:10B880004A468919013A8E4218D99146814200D020 +:10B8900061E7019A9A4200D05DE760E74F4F7F1B56 +:10B8A000382F13DD012253461A404FE601235B4235 +:10B8B000994654E7029308E7039327E788423CD868 +:10B8C00074D0914647E7019B9A4648E71F2F44DC16 +:10B8D000434B4A469C465B466544FA40AB401343A3 +:10B8E0004A46AA40151C6A1E95415A46FA402B4307 +:10B8F000171C5A0709D00F221A40042A05D01A1D16 +:10B900009A429B415B42FF18131C3A023ED55346B4 +:10B91000012200211A40002701238946AAE50223BB +:10B920005B429C46019AE3449446E04490459B4127 +:10B930005B429B19DF193F1BA0E6019F4A467C0032 +:10B94000BC42BF417F42BF19023AC91901949CE72A +:10B95000002B95D1002201929BE75A46214B5B1B9D +:10B96000DA40202F27D0204B9C465B466544AB40F5 +:10B9700049460B43591E8B411343072200271A40A7 +:10B9800007D00F2200271A40042AB8D17A077F0275 +:10B990003F0BDB0813439946012253461A4000230C +:10B9A00068E54145BBD89346002767E6019C9C4269 +:10B9B000C3D391466DE70023DAE780275B463F0358 +:10B9C0001F433F033F0B019A034B53E5FF03000066 +:10B9D000FFFFFFFEFE070000FF07000002FCFFFF65 +:10B9E0001E040000E2FBFFFF3E040000F0B55F46CE +:10B9F0004D4644465646F0B41F035C00DB0F9946A3 +:10BA00001B4B0E034D00C90F8446360B6D0D8B4644 +:10BA100090463F0B640D9D420CD0154B9C4210D0BC +:10BA20000123A54214D0181C3CBC90469946A2465E +:10BA3000AB46F0BD311C01230143F4D10C4B9C42B9 +:10BA4000EED13A430123002AEDD10123A542EAD1E8 +:10BA5000BE42E8D1C445E6D1CB4506D0002DE2D1A7 +:10BA60003043031C581E8341DDE70023DBE7C0465B +:10BA7000FF070000F0B5574645464E46E0B40F03B9 +:10BA80004E00C90F8A4632491D035C0084463F0BB5 +:10BA9000760D90462D0B640DDB0F8E420FD08C423D +:10BAA00039D0002E10D13843414241418946002C03 +:10BAB00027D12A4325D1002000290ED108E0391CC6 +:10BAC00001432ED1B44226D0002C0BD09A450DD084 +:10BAD0005346594201231943081C1CBC9046994601 +:10BAE000A246F0BD2A43F3D09A45F1D1A642EFDC3D +:10BAF0001ADA504641424841012341421943081C89 +:10BB0000EBE74A46002AE1D058425841012241421F +:10BB10001143081CE1E7291C114302D1002EC2D0B9 +:10BB2000D4E702204042D8E7AF42D1D809D0002064 +:10BB3000AF42D2D2504641424841012340421843CD +:10BB4000CBE7C445C4D80020C445F3D3C5E7C046FD +:10BB5000FF070000F0B55F464D4644465646804616 +:10BB6000F0B4061C0803000B84462C484C001F034D +:10BB70005D00C90F640D8B4691463F0B6D0DDB0FC9 +:10BB8000844212D0854225D0002C14D161460E4348 +:10BB900070424641002D35D0002E21D058425841E8 +:10BBA000012143420B43181C0EE061460220314341 +:10BBB0000AD1A5420ED0002D12D13A4310D15B46D6 +:10BBC000594201231943081C3CBC90469946A246A1 +:10BBD000AB46F0BD391C02201143F5D1002CD5D065 +:10BBE0009B45ECD1AC42EADC05DBBC45E7D80FD085 +:10BBF0000020BC45E8D2584641424841414201201C +:10BC00000843E1E73A43C7D10020002EDCD1D6E754 +:10BC1000C845D4D80020C845EDD3D5E7FF070000BC +:10BC2000F0B55F4656464D464446F0B4051C061C2A +:10BC3000080387B099464F00030BCC0F92469B46F2 +:10BC40007F0D019467D06C4B9F4236D080205B46BD +:10BC500040031843C0006B0F1843684B83469C4653 +:10BC600000239846EE00674400934B4649461D0367 +:10BC7000C90F5B0052462D0B5B0D894600D16EE06B +:10BC80005D498B4264D080205C4940038C46002192 +:10BC90000543ED00500F0543D20063444846FF18AA +:10BCA0007B1C9A46009B604002900B430F2B00D9EF +:10BCB000ACE053489B00C3589F465B461D4300D0F1 +:10BCC00082E00823009300239B4602330026984617 +:10BCD000CBE7029B01934346022B59D10124002557 +:10BCE0000026019B1C40444B00212D030A0D120528 +:10BCF0002D0B1543434A1B0515401D436D00E407FA +:10BD00006D082543301C291C07B03CBC9046994661 +:10BD1000A246AB46F0BD2B434ED05B46002B00D174 +:10BD200085E1584600F0E6FE021C2823291C9B1AD8 +:10BD3000161C5846D940083EB0400B1CB540034382 +:10BD40009B462E1C0023304F0093BF1A98468CE769 +:10BD5000514629432ED10025002202219EE751465B +:10BD6000294323D0002D00D154E1281C00F0C2FE4D +:10BD7000031C28215046C91A1A1CC8405146083ACB +:10BD8000914095400A1C05431F480021C31A85E7CE +:10BD9000032B00D1C2E1012B00D06DE14446019B91 +:10BDA00000251C40E4B2002300269DE70025002268 +:10BDB000012173E7032171E70423009300239B46CD +:10BDC00001330026984650E70C230093093B984620 +:10BDD0004BE7802500242D030026074B84E74B46C4 +:10BDE000AB46161C0193884675E7029BAB46161CB2 +:10BDF000019388466FE7C046FF07000001FCFFFF84 +:10BE00005C1A0300FFFF0F800DFCFFFF330C3604AC +:10BE1000360C9C46331C140C1204120C53439846E7 +:10BE2000634653439946634663430193331C41463B +:10BE30006343090C4B445B18994505D980204002A7 +:10BE40008146019949440191190C03914146090425 +:10BE5000090C1B045B1804932B0C9846331C2D040F +:10BE6000290C4B43604600934346654658435E4366 +:10BE7000009B4D431B0C9946AE194E448446B54277 +:10BE800003D980235B029946CC44350C2B1C0398C4 +:10BE9000634484460593009B36041B041B0CF31873 +:10BEA0009C446046039058460504060C280C8446C2 +:10BEB0005043351C81466046654344434846000C68 +:10BEC0008346724314195C44A24203D98022520271 +:10BED00093465D44220CAD184A461204120C240409 +:10BEE0004046A41862464A43714346436046009662 +:10BEF000464670438046100C84468844E0444145E1 +:10BF000005D9802149028C4600996144009101982D +:10BF100003998446614499429B415B429946059846 +:10BF2000434684461204120C1B049B1863449C462F +:10BF3000AB4683429B4140460A19CC44A242894108 +:10BF4000E344CC45B6415C46000C8046494276420B +:10BF50005B426418334398448C428941AB459B4112 +:10BF600049425B4219430D1C009B4544EE18760282 +:10BF7000E50D2E43B346049B56021E43731E9E419D +:10BF80005B46D20D324366021643DB010AD501231C +:10BF9000334076081E435B46DB071E435B465B0867 +:10BFA0009B465746634BFB18002B5ADD720709D09E +:10BFB0000F223240042A05D0321DB242B6417642E9 +:10BFC000B344161C5A46D20106D55A465A4B1A405B +:10BFD00080239346DB00FB18584A934234DD01244A +:10BFE000029B00251C400026554B7DE680205B46C9 +:10BFF0000003034208D0054206D105432D032D0B53 +:10C000004C46161C4E4B6FE65D4605432D032D0B2B +:10C010004B4B69E6504600F06DFD031C2033272B87 +:10C0200000DCA6E65546083885400022ACE6281C10 +:10C0300000F060FD021C2032272A00DC75E608387B +:10C0400085400026AB467DE65A46F6085207164361 +:10C050005A4601245502029A5B052D0B5B0D1440D4 +:10C0600042E6384DED1B382D0ADD0124029B0025E8 +:10C070001C400026002337E6019B5746029391E7B8 +:10C080001F2D25DC304B321C9C466744BE405B466E +:10C09000BB40371CEA407E1EB74113433B431E1C86 +:10C0A0005B46EB401D1C730709D00F233340042B64 +:10C0B00005D0331DB342B6417642AD191E1C2B028A +:10C0C00020D50124029B00251C40002601230BE6FD +:10C0D0005A461E4BDB1BDA40131C202D1CD01C4A79 +:10C0E00094465A466744BA40171C3E43721E964116 +:10C0F0001E4307230025334007D00F23002533407C +:10C10000042BD6D16B076D022D0B0124F6081E43BC +:10C11000029B1C400023E7E50027E6E780255B46FD +:10C1200001242D031D43019B2D0323401C1C2D0BBB +:10C13000034BD9E5FF030000FFFFFFFEFE070000F1 +:10C14000FF07000002FCFFFF1E040000E2FBFFFFF0 +:10C150003E040000F0B54D4644465F465646F0B4F6 +:10C160000E1C111C3203520A470F1743C5001A0355 +:10C170005800DB0F9946520A4B0F83B01A43CB008D +:10C180000193CF4B7400F60F640DB046400D9842FA +:10C1900000D1E8E00123494659400B1C9E4200D1E2 +:10C1A000B1E0261A002E00DC1CE1002842D1131C4D +:10C1B00001990B4300D0E6E06B0700D18EE00F231E +:10C1C0002B40042B00D189E02A1DAA42AD418023D7 +:10C1D000012641466D427F191B043B400E40151C51 +:10C1E000002B00D183E0B64B01349C4200D116E114 +:10C1F0003A1CB44BED081A4050076405520205433F +:10C20000120B640D002112030B0D1B056405120BAC +:10C210001A436308AC4CF60714401C4364006408DE +:10C220003443281C211C03B03CBC90469946A246CE +:10C23000AB46F0BDA24B9C42BED080231B041A43E8 +:10C24000382E00DD03E11F2E00DD3FE12020831B9F +:10C250009946131C49468B409C46019B6046F3401F +:10C2600003430198F2408840011C481E81410B4362 +:10C27000EB1A9D4280411D1CBA1A4042171A3B021C +:10C2800000D4A8E07A02560A002E00D1CAE0301C81 +:10C2900000F030FC031C083B1F2B00DDCBE0282204 +:10C2A000291C121AD1409E400A1C9D4032439C42D8 +:10C2B00000DDC8E01C1B671C1F2F00DDEDE01F2305 +:10C2C000291C1C1B131CA540A340F9406C1EA54152 +:10C2D000FA4019430D43171C00246DE78023012603 +:10C2E00042461B043B401640002B00D07BE7744BBA +:10C2F000ED0878070543FA089C423BD01203640519 +:10C30000120B640D7EE7231A9A46002B00DCA5E091 +:10C31000002844D06A48844200D14DE780200004C0 +:10C3200002435346382B00DC1CE1019B1A43511E8B +:10C330008A41D1B200224919A94280410D1CD2196B +:10C34000404217183B0246D55D4B01349C4200D158 +:10C3500069E101205B4A6B083A4028401843D50741 +:10C360000543570828E7131C01990B4300D111E737 +:10C370004B4613E72B1C134351D080231B031A4356 +:10C380001203120B3EE7013E002E00D080E0691A36 +:10C390008D429B41BA1A5B42D71A0D1C6FE7101CE5 +:10C3A000019B184300D107E701235B429C46E2440E +:10C3B0005346002B00D002E1019BD2195919A94222 +:10C3C0009B415B42D7180D1CBCE76346034300D179 +:10C3D00028E1071C65466B0700D0F0E601264346BE +:10C3E0001E4084E7002E00D081E0601C4005400D17 +:10C3F000012800DC07E10199681A84466545B641C9 +:10C40000B81A7642861B300200D4A1E08C464D1B40 +:10C41000AC458941D21B4942561A984634E700225E +:10C420000025EFE6281C00F065FB2030031C083BCC +:10C430001F2B00DC33E7021C283A95402A1C0025FC +:10C440009C4200DC36E71F4FE41A1740B4E6019B1C +:10C450001A43511E8A41D3B2002209E7002B00D0B3 +:10C4600001E1601C43055B0D012B00DCB0E0144BC7 +:10C47000984200D11EE1019BD2195919A9429B4152 +:10C480005B42D2184908D5070D435708041C93E6B0 +:10C490000B4B9C4200D0D3E68EE6211C131C1F39A7 +:10C4A000CB40191C202F00D18EE03F231C1BA24043 +:10C4B00015436A1E954100270D4300248BE7C046B3 +:10C4C000FF070000FFFF7FFFFFFF0F80331C101CE2 +:10C4D000203BD840202E79D040239B1B9A40131C30 +:10C4E000019A1343591E8B4100220343C0E6002CDE +:10C4F00053D0C74CA04200D1B0E08024714289469D +:10C50000240427434946382900DDCDE01F2900DDFA +:10C5100059E120243E1C611A8E408A46B0464946A5 +:10C520002E1CCE405146B4468D4064464646494690 +:10C5300026436C1EA541CF4035430199D71B8C463D +:10C540004D1BAC4592415242BF1A041C984696E6D8 +:10C5500063466546334300D096E600260027002454 +:10C560000025C4E61F2B61DC2020C31A9B46131C48 +:10C5700059468B4051469946019BCB409C464B46C1 +:10C58000604603439C465B46019999406346481EBA +:10C59000814119435346DA40CDE63C1C2C435DD023 +:10C5A000F1438946002955D10199D21B8C464D1B78 +:10C5B000AC4589414942571A041C98465FE69448A5 +:10C5C000844200D0ADE6F7E5002271E7002387E75B +:10C5D0003B1C2B43002C00D0DAE0002B00D113E1F0 +:10C5E000131C01990B4300D1E6E54919A9429B416F +:10C5F000D2195B42D7183B0200D421E1854B0D1CB8 +:10C600001F40041CD8E5381C2843002C40D10028CA +:10C6100000D083E0101C0199084303D0171C0D1CA7 +:10C620009846C9E500260027002560E65046131C01 +:10C630002038C340181C5346202B00D1C1E04023B2 +:10C6400051465B1A9A40019911434A1E91410022BA +:10C65000014370E66E4CA04200D053E7171C019DC9 +:10C66000041C9846A8E5002C28D13C1C2C4300D182 +:10C670008AE0DB439A46002B00D082E0019BD2196E +:10C680009C4665449D42894149425718041C59E61D +:10C6900000285BD1101C0199084300D1A4E0171CAD +:10C6A0000D1C98465A4C87E53D436F1EBD4100273F +:10C6B000EDB242E7041C0027002518E6544CA042C6 +:10C6C00062D0534680245B429A4624042743534653 +:10C6D000382B00DD8EE01F2B00DD9DE02024E31AC7 +:10C6E0009B463B1C59468B40514699462B1CCB40E0 +:10C6F0009C464B46644623439C465B469D406346AE +:10C700006C1EA541CF401D43019BBF189C4665444C +:10C710009D4292415242BF18041C13E6101C01991D +:10C72000084300D148E5681A844685428041BE1A14 +:10C730004042301A060200D447E68C464D1BAC45F9 +:10C740008941D21B4942571A984635E5101C019978 +:10C75000084334D080247807ED08FF0824032843D9 +:10C76000274208D0D608264205D1C90852070A43F5 +:10C77000101C371C9846FF00420F1743C500244C7D +:10C780001AE5234CA042A2D1171C019D041C13E5FD +:10C79000002B35D0131C01990B4310D0802478074F +:10C7A000ED08FF08240328432742E4D0D30823429E +:10C7B000E1D1C90852070A43101C1F1CDBE7144CC7 +:10C7C000FAE400223FE74C463E1C203CE640494646 +:10C7D000341C202932D04026761AB7403D436F1EC4 +:10C7E000BD4100272543A8E680270026FF03084C0B +:10C7F00000257CE53D436F1EBD410027EDB283E778 +:10C80000171C019D024CD7E4171C019DD4E4C046BF +:10C81000FF070000FFFF7FFF54463B1C203CE34026 +:10C820001C1C5346202B0DD0402351465B1A9F40C1 +:10C830003D436F1EBD410027254365E70027CDE737 +:10C840000D1CC8E50027F3E70B0330B5134C1A0B9A +:10C850004B00051C5B0DC90F0020A34210DD1048E2 +:10C8600083420EDC80200F4C40030243E41A1F2C4D +:10C870000ADD0D48C31ADA40131C484243405818D9 +:10C8800030BD0A4BC818FBE7281CE040084CA44602 +:10C8900063449A40131C0343EFE7C046FE030000C5 +:10C8A0001D0400003304000013040000FFFFFF7F9D +:10C8B000EDFBFFFF38B5041E16D0C50F00D0444273 +:10C8C000201C00F017F9174B1B1A0A2821DC021C48 +:10C8D000211C153291400A1C0B21081AC4405B052B +:10C8E0002403240B5B0D03E0002500230024002219 +:10C8F0000021101C24030A0D1205240B14430A4ABC +:10C900001B0514401C436400ED0764082C43211CE4 +:10C9100038BD0B3884405B052403240B5B0D0022DB +:10C92000E6E7C0461E040000FFFF0F804200120E23 +:10C93000511C38B5C9B243025D0AC40F012915DD87 +:10C94000E02189008C466D071B0B62440021281CE6 +:10C950000D0D2D052B431C4D52052B405208134342 +:10C960005B00E4075B082343191C38BD002A15D17E +:10C97000002D1FD0281C00F0BDF80A281DDC0B2359 +:10C980002A1C1B1ADA40131C021C153295400F4A50 +:10C990001B03121A52051B0B520DD7E7002D06D0B0 +:10C9A00080221B0B120313436D07094ACEE7084A86 +:10C9B0000023CBE700220023C8E7031C0B3B9D406C +:10C9C0002B1C0025E3E7C046FFFF0F808903000012 +:10C9D000FF07000070B50B034D00440F6D0D5B0A9F +:10C9E00023436C1C6405C90FC200640D012C2ADDB1 +:10C9F0003B4C2C19FE2C1ADC002C35DD8001451E29 +:10CA0000A841DB000343520F13435A0704D00F22FF +:10CA10001A40042A00D004338022D2041A4027D0BE +:10CA20000134FF2C03D09B015B0AE4B201E0FF2438 +:10CA300000235B02E4055B0A23435B00C9075B0834 +:10CA40000B43181C70BD002D06D113430ED10024DA +:10CA50005B025B0AE4B2ECE71A43E8D08020DB001B +:10CA600080040343FF24D0E717340CDA05230024A5 +:10CA7000DB08FF2CECD1002B2DD08022D2031343F6 +:10CA80005B025B0AD5E78024164824042343401B3D +:10CA90001F280DDC144CA4466544AB401C1C131C21 +:10CAA000AB405D1EAB41C240234313430024ACE7BF +:10CAB0001E1C0E4C641BE640341C20280DD00C4874 +:10CAC00084466544AB401D1C2A43531E9A41131CE7 +:10CAD0002343002499E70023ABE70025F4E7C04691 +:10CAE00080FCFFFF9E03000082FCFFFF7E0300002E +:10CAF000A2FCFFFF1C2101231B04984201D3000C60 +:10CB000010391B0A984201D3000A08391B099842C0 +:10CB100001D30009043902A2105C40187047C046D6 +:10CB200004030202010101010000000000000000F6 +:10CB3000F0B544465F4656464D46F0B41C1C85B0E1 +:10CB4000002900DAA9E00F1C0021061C8846101CF1 +:10CB5000191C002C00DA97E0341C3D1C82468946E3 +:10CB6000B94273D870D04946504600F085F98346E3 +:10CB7000391C301C00F080F95B46181A031C8346F0 +:10CB8000203B9C4600D59CE00023002251460092A9 +:10CB9000019363469940019151468140019B009168 +:10CBA000BB4200D983E000D17EE0009A019B341C97 +:10CBB0003D1CA41A9D416346002B00DA9AE0002632 +:10CBC00000270296039701369E4003960126864071 +:10CBD0000296002800D171E00099019AD307994686 +:10CBE0004B464E081E435708002301220CE0AF427B +:10CBF00001D1A6420AD8A41BBD4124196D410138B8 +:10CC0000A4185D41002806D0AF42F0D9013824199C +:10CC10006D410028F8D12022029E039F5B465242BC +:10CC200036196F4199185AD4281CC8402C1C5B46F1 +:10CC3000DC40002968DB041C8C40231C59468840DA +:10CC4000021CB61A9F4103E0B0428CD9002600278F +:10CC500041464B1E9941002300910193009A019B8C +:10CC6000002554429D41331C6340181C3B1C6B4003 +:10CC7000191C009B019CC018614105B03CBC90464A +:10CC80009946A246AB46F0BD4346DB430C1C984692 +:10CC9000131C00215842A1415EE7002746428F4104 +:10CCA00001214942884652E7B14200D87DE700267B +:10CCB000002702960397002800D08DE7029E039F6D +:10CCC000C6E720215346091ACB400022191C002335 +:10CCD000009201934B4683400B4301935CE75A4615 +:10CCE00020239B1A2A1C9A40201C131C5A46D04011 +:10CCF00018439BE720260027331A00260296039745 +:10CD00000127DF40039761E75B4620215D46C91A92 +:10CD1000031CAC40CB40191C231C0B438EE7C046C0 +:10CD2000F0B545464E465746E0B4041C82B00D1C93 +:10CD3000914698468B4262D85FD04146484600F003 +:10CD40009BF8291C061C201C00F096F82023311AA1 +:10CD50005B428A46C81865D44B4683401F1C4B462D +:10CD60008B401E1CAF4258D855D0A41BBD41002893 +:10CD700000DA77E000220023009201930132824022 +:10CD8000019201238B40009300293CD0FB07984679 +:10CD9000404672087B080243012600270CE0AB42A4 +:10CDA00001D1A2420AD8A41A9D4124196D4101392A +:10CDB000A4197D41002906D0AB42F0D901392419CC +:10CDC0006D410029F8D12022009801995346524222 +:10CDD000001969419E183AD42F1CF7405346DD4094 +:10CDE000002E29DB3C1CB440231C5446A7403A1CAF +:10CDF000801A99410090019105E082429DD900235B +:10CE00000024009301940098019902B01CBC904644 +:10CE10009946A246F0BDA342A7D900220023009262 +:10CE20000193B1E720224B46521AD3401A1C4346C5 +:10CE30008B401F1C174392E7534620245646E41AA2 +:10CE40003B1CB540E3401C1C2B1C2343CDE7524642 +:10CE500020239B1A2A1C9A40271C131C5246D74099 +:10CE60001F43BBE720230022581A0023009201939E +:10CE70000132C240019284E710B5002903D1FFF7C7 +:10CE800039FE203002E0081CFFF734FE10BDC0461A +:10CE9000F0B54746754B440080B4051C071C640878 +:10CEA0009C420BDDFF23DB059C4200DD72E0002885 +:10CEB00000DC9DE06E4804BC9046F0BD6D4B9C428A +:10CEC00079DC6D4B9C4269DD01267642291C281CC9 +:10CED000FDF7E0FB80464146FDF7DCFB6749041C9B +:10CEE000FDF7D8FB6649FDF767F8211CFDF7D2FB7B +:10CEF0006449FDF761F8211CFDF7CCFB6249FDF7A1 +:10CF00005BF8211CFDF7C6FB6049FDF755F8211CB5 +:10CF1000FDF7C0FB5E49FDF74FF84146FDF7BAFB50 +:10CF20005C498046201CFDF7B5FB5B49FDF7E4FC3E +:10CF3000211CFDF7AFFB5949FDF7DEFC211CFDF775 +:10CF4000A9FB5749FDF7D8FC211CFDF7A3FB554968 +:10CF5000FDF7D2FC211CFDF79DFB011C731C49D081 +:10CF60004046FDF729F8291CFDF794FB4E4BB6000F +:10CF7000F158FDF7C1FC291CFDF7BEFC4B4B011C11 +:10CF8000F058FDF7B9FC002F95DA80231B069C466C +:10CF9000604490E7291CFDF70FF88CE74449FDF742 +:10CFA0000BF8FE218905FCF73DFF031C281C002B14 +:10CFB00000D080E788E700F013F93E4B051C9C4247 +:10CFC00023DC3D4B9C423FDC291CFCF7F5FFFE2196 +:10CFD0008905FDF791FC8021041CC905281CFCF77C +:10CFE000EBFF011C201CFDF763F90026051C6DE713 +:10CFF000324860E74046FCF7DFFF291CFDF74AFB9B +:10D00000011C281CFDF778FC55E72D4B9C4214DCD5 +:10D01000FF218905FDF770FCFF21041C8905281CF0 +:10D02000FDF738FBFE218905FCF7C6FF011C201C1B +:10D03000FDF73EF90226051C48E7291C2148FDF7AB +:10D0400037F90326051C41E7FE218905FDF754FC4D +:10D05000FE21041C8905281CFCF7AEFF011C201CC6 +:10D06000FDF726F90126051C30E7C046FFFF7F507B +:10D07000DB0FC93FFFFFDF3EFFFFFF30D769853C75 +:10D0800059DA4B3D356B883D6E2EBA3D2549123E2F +:10D09000ABAAAA3E21A215BD6BF16E3D95879D3DC1 +:10D0A000388EE33DCDCC4C3E9C1A0300AC1A0300F5 +:10D0B000CAF24971FFFF973FFFFF2F3FDB0FC9BF48 +:10D0C000FFFF1B40000080BFF0B54746430080B41F +:10D0D0005F081B0E7F3B051C1C1E162C1DDC8046AA +:10D0E000002B23DB1B4F061C1F41074211D01A499E +:10D0F000FCF762FF0021FCF795FE002809D0002D07 +:10D1000004DD80231B0423419846A8444346BB43C7 +:10D110001E1C301C04BC9046F0BD104B061C9F42E8 +:10D12000F7D9291CFCF748FF061CF2E70A49FCF76F +:10D1300043FF0021FCF776FE002806D0002D06DB19 +:10D14000002F02D0FE26B605E3E72E1CE1E780267D +:10D150003606DEE7FFFF7F00CAF24971FFFF7F7FDF +:10D1600000B51D4A430083B0011C5B08934217DDE4 +:10D170001A4A934203DDFDF7BFFB03B000BD6946C9 +:10D1800002F000FA03231840012816D002280BD021 +:10D1900000281CD000980199012203F037F8ECE731 +:10D1A000002102F0D5FBE8E70098019902F0D0FBDE +:10D1B00080231B069C466044DFE70199009801220A +:10D1C00003F024F880231B069C466044D5E70098B2 +:10D1D000019902F0BDFBD0E7D80F493FFFFF7F7FE9 +:10D1E000400040087047C046F0B54746430080B451 +:10D1F0005F081B0E7F3B051C1C1E162C18DC80468E +:10D20000002B1EDB1B4F061C1F4107420CD01A4986 +:10D21000FCF7D2FE0021FCF705FE002804D0002D0B +:10D220001DDB4346BB431E1C301C04BC9046F0BDB6 +:10D23000124B061C9F42F7D9291CFCF7BDFE061CA9 +:10D24000F2E70D49FCF7B8FE0021FCF7EBFD0028E2 +:10D2500003D0002D09DB0026E6E72E1CE4E780233F +:10D260001B0423419846A844DBE7002FF5D0044E69 +:10D27000DAE7C046FFFF7F00CAF24971FFFF7F7FF8 +:10D28000000080BF43005B080220002B00D17047E4 +:10D29000084A02309918084A9142F8D9074A591E9B +:10D2A00001389142F3D9064A9446634458425841A2 +:10D2B000EDE7C046000080FFFFFFFF7EFEFF7F001E +:10D2C0000000808038B50C1C00212160104943000B +:10D2D000051C5B08021C8B4218DC002B16D00D4984 +:10D2E00000228B4208DC9821C905FDF7D3F91922E9 +:10D2F000051C43005B085242DB157E3B9B18FC205B +:10D300002A1C2360044B80051A400243101C38BDC0 +:10D31000FFFF7F7FFFFF7F00FFFF7F8038B5041C8A +:10D320000D1C03F0ABFB002805D0201C0021FCF7EE +:10D330005FFD002801D0201C38BD201C291C00F0F6 +:10D3400055F8041C03F09AFB002805D0201C00218E +:10D35000FCF74EFD0028EED003F0ACFB2223036067 +:10D36000E9E7C04608B543001B0E7F3B162B0DDCDA +:10D37000002B0FDB094A1A41131C024206D0021C83 +:10D380009A430A60111CFDF7B7FA02E00860C00F6B +:10D39000C00708BDC30FDB070B60FAE7FFFF7F0084 +:10D3A00043001B0E7F3B10B5162B0DDC002B12DB50 +:10D3B0000D4C011C1C41044204D08022D2031A41AE +:10D3C0001118A143081C10BD011C802BFAD1FCF7D9 +:10D3D000F3FD011CF6E7C10FC9070133F2D1FE23AB +:10D3E0009B051943EEE7C046FFFF7F00430070B581 +:10D3F0000D1C041C5E08011C002E10D0274886421C +:10D400000FD827498E4211D9211C1B0E5B19FE2B08 +:10D4100029DC002B18DD234CDB0521401943081CB7 +:10D4200070BD201CFCF7C8FD011CF8E79821201CEA +:10D43000C905FDF72FF91C4B041C9D421CDB430062 +:10D440001B0E011C193BE1E71A1C163219DA174BA7 +:10D450009D4208DC211C164803F00AFB1449FDF725 +:10D4600019F9011CDBE7211C124803F001FB1149EB +:10D47000FDF710F9011CD2E70D49FDF70BF9011C6E +:10D48000CDE7084819330140DA050A43CC21101CC6 +:10D490008905FDF7FFF8011CC1E7C046FFFF7F7F4C +:10D4A000FFFF7F00FFFF7F80B03CFFFF50C3000005 +:10D4B0006042A20DCAF2497100B51E4A430083B012 +:10D4C000011C5B0893421ADD1B4A934203DDFDF702 +:10D4D00013FA03B000BD694602F054F80323184064 +:10D4E00001281BD002280FD000281CD000980199D9 +:10D4F00002F02EFA80231B069C466044E9E70021D7 +:10D50000002202F083FEE4E700980199012202F074 +:10D510007DFE80231B069C466044DAE70199009853 +:10D5200002F016FAD5E700980199012202F06EFE8A +:10D53000CFE7C046D80F493FFFFF7F7F00B50F4AB6 +:10D54000430083B0011C5B08934212DD0C4A9342F6 +:10D5500003DDFDF7D1F903B000BD694602F012F812 +:10D56000012210404000121A0199009802F0C8FEF2 +:10D57000F1E70021012202F0C3FEECE7DA0F493F98 +:10D58000FFFF7F7F08B500F057FC08BDF0B54746A8 +:10D5900080B48CB0041C0D1C00F022FD274B061C2F +:10D5A00098461B780F1C5BB201330DD0201C291C40 +:10D5B00003F086F9002807D0201C291C0022002334 +:10D5C000FCF7E2FB002805D1301C391C0CB004BC70 +:10D5D0009046F0BD01230293194B069407950393DF +:10D5E00000230A934346049405951C78002C0FD120 +:10D5F000002300240893099402A803F08FF900285F +:10D6000010D00A9B0193002B11D1089E099FDBE7E4 +:10D6100000200021021C0B1CFDF7C4FE089009919C +:10D62000022CE9D103F046FA21230360E9E703F075 +:10D6300041FA0A9B01930360E7E7C0460C01002012 +:10D64000BC1A030070B58CB0051C00F0BFFD0023B0 +:10D65000224E041CF356013304D0281CFFF712FE9F +:10D66000002802D1201C0CB070BD281CFFF7B8FDAB +:10D67000FE218905FCF7D6FB0028F3D00123029395 +:10D68000174B281C039300230A93FFF74FF90690CA +:10D69000079104900591134803F042F90023F356D3 +:10D6A00008900991022B0ED002A803F037F9002848 +:10D6B00009D00A9B0193002B0AD108980999FFF71A +:10D6C00089F9041CCEE703F0F5F921230360F0E7A4 +:10D6D00003F0F0F90A9B01930360EEE70C010020D0 +:10D6E000C41A0300E81A030070B58CB0051C00F0E2 +:10D6F000D5FE0023224E041CF356013304D0281C0F +:10D70000FFF7C0FD002802D1201C0CB070BD281C02 +:10D71000FFF766FDFE218905FCF784FB0028F3D0A6 +:10D7200001230293174B281C039300230A93FFF74E +:10D73000FDF80690079104900591134803F0F0F866 +:10D740000023F35608900991022B0ED002A803F093 +:10D75000E5F8002809D00A9B0193002B0AD108980C +:10D760000999FFF737F9041CCEE703F0A3F9212349 +:10D770000360F0E703F09EF90A9B01930360EEE774 +:10D780000C010020CC1A0300E81A030008B500F0D1 +:10D79000DBFF08BDF0B58BB0051C01F069F8002374 +:10D7A000304E041CF356013336D0281C03F066F9C2 +:10D7B000002831D0281C2C49FCF734FB071E2ED141 +:10D7C000281C2A49FCF71AFB002825D004230093C3 +:10D7D000274B281C01930897FFF7A8F80023002285 +:10D7E000069207930023F3566C460490059102902D +:10D7F0000391022B30D0201C03F090F800282BD08E +:10D80000236A002B03D003F055F9236A0360A06953 +:10D81000E169FFF7DFF8041C201C0BB0F0BD032307 +:10D820000093134B281C019300230893FFF77EF805 +:10D8300033786C460490059102900391002B05D13A +:10D84000E0220C4B120606920793D4E700200A4907 +:10D8500006900791022BCED103F02CF9222303600E +:10D86000CEE7C0460C0100208071B142B5F1CFC2B5 +:10D87000D41A0300FFFFEF470000F07FF0B58DB032 +:10D88000061C0D1C01F0F0F800232B4F041CFB5666 +:10D89000013304D0281CFFF7F5FC002802D1201C1E +:10D8A0000DB0F0BD301CFFF7EDFC0028F7D0281CB0 +:10D8B0000021FCF79DFA0028F1D0012302931F4BB1 +:10D8C000301C039300230A93FFF730F8031C0C1C51 +:10D8D000281C0093019404930594FFF727F83C78E3 +:10D8E00006900791002C17D000200021021C0B1C71 +:10D8F000FDF758FD08900991022C11D103F0DAF8D8 +:10D90000212303600A9B0093002B0FD108980999EB +:10D91000FFF760F8041CC2E7009B019C0893099480 +:10D9200002A802F0FBFF0028ECD1E7E703F0C2F801 +:10D930000A9B00930360E9E70C010020DC1A030056 +:10D9400070B58CB0041C01F015F90023364E051C8F +:10D95000F35601330ED0201CFFF794FC031C281C47 +:10D96000002B07D0201C0021FCF75CFA031C281CAC +:10D97000002B01D00CB070BD2C4A201C03920A93DE +:10D98000FEF7D4FF35780690079104900591002D9D +:10D9900012D1E022264B1206201C00210892099386 +:10D9A000FCF726FA002835D10123029302A802F0E1 +:10D9B000B5FF002812D10DE000221E4B201C0021D3 +:10D9C00008920993FCF714FA002815D10123029359 +:10D9D000022DEBD103F06EF821230360164802F00C +:10D9E0009FFF089009910A9B0193002B15D108987D +:10D9F0000999FEF7EFFFBDE702230293022D04D041 +:10DA000002A802F08BFF0028EDD103F053F8222387 +:10DA10000360E8E702230293F2E703F04BF80A9B66 +:10DA200001930360E3E7C0460C010020E41A030001 +:10DA3000FFFFEFC70000F0FFE81A0300F0B546460D +:10DA40004F46C0B48BB0051C0C1C01F0FBF9002341 +:10DA5000C74F8046FB56061C013304D0201CFFF73D +:10DA600011FC002805D1301C0BB00CBC9046994627 +:10DA7000F0BD281CFFF706FC8146002833D1201C8E +:10DA80000021FCF7B5F90028EDD001230093B94B34 +:10DA9000281C01934B460893FEF748FF0290039120 +:10DAA000201CFEF743FF0022B34B6E4606920793FD +:10DAB0000023FB56049005915A1C0ED0022B0CD06B +:10DAC000301C02F02BFF002800D1AEE0336A002B9F +:10DAD00003D002F0EFFF336A0360B069F169FEF72B +:10DAE00079FF061CBFE7281C0021FCF781F90028FC +:10DAF00024D0201C0021FCF77BF9804600285AD056 +:10DB0000012300939B4B281C019300230893FEF7ED +:10DB10000DFF02900391201CFEF708FF0023002256 +:10DB2000069207930023FB566E4604900591002B46 +:10DB3000C6D00022904B06920793CEE7404602F0F3 +:10DB40009DFF8146002875D040460021FCF750F922 +:10DB50004646002800D186E7281C02F08FFF464683 +:10DB6000002800D17FE7201C02F088FF002800D1A8 +:10DB700079E7042300937F4B281C0193002308932B +:10DB8000FEF7D4FE02900391201CFEF7CFFE002387 +:10DB90000022069207930023FB566E4604900591DF +:10DBA000022B76D0684602F0B9FE002871D0336AA5 +:10DBB000002B92D08DE7201C02F060FF002800D1DE +:10DBC00051E7201C0021FCF719F9002800D14AE791 +:10DBD00001230093674B281C019343460893FEF7EB +:10DBE000A5FE02900391201CFEF7A0FE3B786E4636 +:10DBF00004900591002B45D1002200230692079343 +:10DC0000301C02F08BFE0028D1D102F053FF2123FB +:10DC10000360CCE700200021021C0B1CFDF7C2FBB7 +:10DC200006900791022C00D04AE702F043FF21231F +:10DC300003604BE7281C02F021FF002884D0201C41 +:10DC400002F01CFF002800D17EE74046FFF71AFBD8 +:10DC50006E46002822D101230093464B0890281CD1 +:10DC60000193FEF763FE02900391201CFEF75EFE17 +:10DC70003C7804900591002CCCD100220023069220 +:10DC800007931DE700203D4906900791022BBCD069 +:10DC9000B6E702F00FFF2223036088E70323009317 +:10DCA000344B281C01934B460893FEF73FFE02902D +:10DCB0000391201CFEF73AFE0023FB5604900591C9 +:10DCC000002B19D1E0222E4B1206281C00210692AF +:10DCD0000793FCF793F8002830D10023FB56022B62 +:10DCE00005D0301C02F01AFE002800D0EEE602F04B +:10DCF000E1FE22230360E9E60022224B281C0021DA +:10DD000006920793FCF77AF80028E6D0FC21201C45 +:10DD10008905FCF7BFFCFEF709FE041C0D1C02F090 +:10DD200005FE021C0B1C201C291CFCF727F80028F0 +:10DD3000D3D10022114B06920793CEE7FC21201C81 +:10DD40008905FCF7A7FCFEF7F1FD041C0D1C02F091 +:10DD5000EDFD021C0B1C201C291CFCF70FF80028F1 +:10DD6000BBD1E022084B120606920793B5E7C046E6 +:10DD70000C010020EC1A03000000F03F0000F0FF4F +:10DD8000FFFFEF470000F07FFFFFEFC770B58CB0DB +:10DD9000051C01F081FD0023254E041CF3560133C0 +:10DDA0000AD0281CFFF76EFA002805D0281C002195 +:10DDB000FCF724F8002802D1201C0CB070BD012310 +:10DDC00002931C4B281C039300230A93FEF7AEFD1D +:10DDD00034780690079104900591002C12D100220E +:10DDE00000230892099302A802F098FD002813D09E +:10DDF0000A9B0193002B14D108980999FEF7EAFDBC +:10DE0000041CD9E700200021021C0B1CFDF7CAFAF4 +:10DE100008900991022CE6D102F04CFE2123036008 +:10DE2000E6E702F047FE0A9B01930360E4E7C04681 +:10DE30000C010020F41A0300F8B54F4646460C1CAE +:10DE400089465142C0B4051C11435800564E400843 +:10DE5000C90F9C460143B1423DD86100490888463C +:10DE6000474669422943C90F3943B14233D84F4924 +:10DE70005918114347D0022699170E40E10F0E435F +:10DE80004146294331D0011C114336D046498842CE +:10DE900049D04549884530D04146081A00153C28EC +:10DEA0003BDC614600295ADB281C211CFDF77AFA6D +:10DEB00002F002FD02F062FB012E40D0022E43D0A0 +:10DEC000002E0ED03A4A3B4BFEF744F93A4A3B4B00 +:10DED000FEF740F905E0101C191C2A1C231CFCF756 +:10DEE00039FF0CBC90469946F8BD022E18D00FDCC5 +:10DEF000002EC8DB281C211CF3E74B462E48002BC4 +:10DF00001BDB2F49EDE7281C211C02F037FBE8E75B +:10DF1000032EB8D128482B49E3E727482849CBE707 +:10DF200025482649DDE780451ED0012E2CD025DD71 +:10DF3000022EF5D0032EEDD0ABE72349D1E78024A4 +:10DF400024060B19191CCCE7194A1A4BFEF702F9E3 +:10DF5000021C0B1C18481949FEF7FCF8C1E73C30BD +:10DF6000A2DA00200021A7E7012E19D010DD022E31 +:10DF700013D0032EC1D115481549B2E7002E00D0A9 +:10DF800087E700200021ACE7802100200906A8E7F0 +:10DF9000002EB2D108480F49A3E70C480E49A0E76C +:10DFA00005480E499DE7C0460000F07F000010C004 +:10DFB000075C143326A6A13C182D4454FB210940CC +:10DFC000FB21F93FFB2109C0FB21F9BFD221337F9F +:10DFD0007CD902C0FB21E93F7CD90240FB21E9BF8B +:10DFE000F0B556464D4644465F46754BF0B40A1CA4 +:10DFF0000E1C191C83B0051C041C3140994200D131 +:10E00000B7E0002E00DC93E0311500D1A0E06D4BAD +:10E010001203CE188023120B5B031A43F30700D5BB +:10E0200077E0731052009846E30FD3188022162130 +:10E030000027002564009203A818984202DC851886 +:10E040001B1ABF18E00F5B0001391B18640052084F +:10E050000029F1D10022019294468022120620204C +:10E06000924609E0AB4247D0E10F5B0001385B18F4 +:10E070006400520800281ED0614689189D42F1DADA +:10E080008E18B446CE0FF607A94656452ED05B1B18 +:10E090008C42AD416D425B1B641A01995B008B465B +:10E0A0009344594601380191E10F4D465B186400D5 +:10E0B00052080028E0D1234330D1019B5B0842493C +:10E0C0007A108C466244F90702D5802109060B4379 +:10E0D00041460E05B1181D1C0E1C281C311C03B036 +:10E0E0003CBC90469946A246AB46F0BD6646002E23 +:10E0F000CDDB6E1CB146CAE7A14208D88E18B446E3 +:10E10000CE0FF607564541D099460023C4E71D1CA3 +:10E11000AAE7E30F5200D218640082E7019B0133A3 +:10E120003AD0019A01239446134063445B08C6E742 +:10E1300073005B080343D0D00021002E33D1E20AE4 +:10E1400015396405002AFAD080235B031A4226D1D0 +:10E15000802000234003520001330242FBD00125FE +:10E160002020ED1AC01A4919251CC5409C402A439D +:10E170004DE72A1C331C281C311CFDF751FD2A1CBD +:10E18000331CFCF7E7FD051C0E1CA6E76646002EB7 +:10E19000AFDA0023A9467FE7013700238FE720206D +:10E1A00001250023DFE72A1C331C281C311CFDF746 +:10E1B000D1FF021C0B1CFDF7F5F8051C0E1C8CE7AB +:10E1C0000000F07F01FCFFFF0000E03FFE22F8B5F9 +:10E1D0004300041C5B089205934211D009DC9F4A5E +:10E1E000934212DC8C229205934200DD81E09C4830 +:10E1F00005E0211CFCF780FB011CFCF759F8F8BD79 +:10E200000020002CFBDC9748F9E7002800DAC5E085 +:10E21000FE20211C8005FCF76FFBFC218905FCF723 +:10E2200039FA041C01F038FB8F49061C050B201C31 +:10E23000FCF730FA8D49FBF7BFFE211CFCF72AFAE8 +:10E240008B49FCF759FB211CFCF724FA8949FBF7A1 +:10E25000B3FE211CFCF71EFA8749FCF74DFB211C7D +:10E26000FCF718FA8549FBF7A7FE211CFCF712FA08 +:10E270008349071C201CFCF70DFA8249FCF73CFB84 +:10E28000211CFCF707FA8049FBF796FE211CFCF7DE +:10E2900001FA7E49FCF730FB211CFCF7FBF9FE215B +:10E2A0008905FBF789FE011C381CFCF701F8311CBD +:10E2B000FCF7F0F92D03071C291C281CFCF7EAF9D0 +:10E2C000011C201CFCF718FB291C041C301CFBF74C +:10E2D00073FE011C201CFBF7EBFF011C381CFBF735 +:10E2E0006BFE011C281CFBF767FE011CFBF764FE9C +:10E2F00085E7211CFCF7CEF95B49051CFCF7CAF940 +:10E300005A49FBF759FE291CFCF7C4F95849FCF798 +:10E31000F3FA291CFCF7BEF95649FBF74DFE291C00 +:10E32000FCF7B8F95449FCF7E7FA291CFCF7B2F9F5 +:10E330005249FBF741FE291CFCF7ACF95049061C79 +:10E34000281CFCF7A7F94F49FCF7D6FA291CFCF763 +:10E35000A1F94D49FBF730FE291CFCF79BF94B490D +:10E36000FCF7CAFA291CFCF795F9FE218905FBF791 +:10E3700023FE011C301CFBF79BFF011C201CFCF73B +:10E3800089F9011C4248FCF7B7FA011C201CFCF774 +:10E39000B3FA011C3F48FCF7AFFA30E7FE218905CC +:10E3A000FBF70AFEFC218905FCF774F92E49041CD1 +:10E3B000FCF770F92D49FBF7FFFD211CFCF76AF90A +:10E3C0002B49FCF799FA211CFCF764F92949FBF762 +:10E3D000F3FD211CFCF75EF92749FCF78DFA211C9F +:10E3E000FCF758F92549FBF7E7FD211CFCF752F92A +:10E3F000061C201C01F050FA2149051C201CFCF7CA +:10E4000049F92049FCF778FA211CFCF743F91E4929 +:10E41000FBF7D2FD211CFCF73DF91C49FCF76CFA17 +:10E42000211CFCF737F9FE218905FBF7C5FD011C0E +:10E43000301CFBF73DFF291CFCF72CF91449FCF7B5 +:10E440005BFA011C281CFBF7B7FD011CFBF7B4FDB0 +:10E45000011C1148FCF750FAD1E6C046FFFFFF3E11 +:10E46000DB0FC93FDB0F494008EF1138047F4F3AFB +:10E470004611243DA80A4E3E90B0A63EABAA2A3EC5 +:10E480002EC69D3D6133303F2D57014039D1194093 +:10E490006821A233DA0FC93FDA0F4940F0B5FE23F5 +:10E4A0004E46454657464400E0B46408051C061C29 +:10E4B0009B059C4200D1C9E000DDA6E0904B9C4248 +:10E4C0000FDC904B9C4200DDCDE08F49FBF774FDE3 +:10E4D000FE218905FBF7A6FC031C281C002B00D09D +:10E4E00099E0281CFEF77CFE011CFE208005FCF74D +:10E4F00003FAFC218905FCF7CDF88449051CFCF7DB +:10E50000C9F88349FBF758FD291CFCF7C3F881497A +:10E51000FCF7F2F9291CFCF7BDF87F49FBF74CFD2D +:10E52000291CFCF7B7F87D49FCF7E6F9291CFCF734 +:10E53000B1F87B49FBF740FD291CFCF7ABF87949A2 +:10E540008046281CFCF7A6F87749FCF7D5F9291C6A +:10E55000FCF7A0F87549FBF72FFD291CFCF79AF88A +:10E560007349FCF7C9F9291CFCF794F8FE218905C9 +:10E57000FBF722FD8146281C01F08EF96D4B071C2C +:10E580009C424DDC391C040BFBF716FD49468246C4 +:10E590004046FBF78DFE011C5046FCF77BF8240338 +:10E5A0008046211C201CFCF775F8011C281CFCF778 +:10E5B000A3F9211C051C381CFBF7FEFC011C281CC0 +:10E5C000FBF776FE011CFBF7F7FC011C5A48FCF731 +:10E5D00093F9011C4046FCF78FF9211C051C201CF7 +:10E5E000FBF7EAFC011C5548FCF786F9011C281CC6 +:10E5F000FCF782F9011C5148FCF77EF9002E0ADC79 +:10E6000080231B069C46604405E0291CFCF774F936 +:10E61000011CFBF74DFE1CBC90469946A246F0BD7E +:10E6200049464046FBF744FE011C381CFCF732F813 +:10E63000391CFBF7C1FC011CFBF7BEFC4049FBF792 +:10E64000BBFC011C3F48FCF757F9D7E73D49FCF7F5 +:10E6500021F83949041C281CFCF71CF8011C201C5B +:10E66000FBF7AAFCD7E7291CFCF714F82749041C80 +:10E67000FCF710F82649FBF79FFC211CFCF70AF871 +:10E680002449FCF739F9211CFCF704F82249FBF76F +:10E6900093FC211CFBF7FEFF2049FCF72DF9211C00 +:10E6A000FBF7F8FF1E49FBF787FC211CFBF7F2FF85 +:10E6B0001C49061C201CFBF7EDFF1B49FCF71CF94D +:10E6C000211CFBF7E7FF1949FBF776FC211CFBF740 +:10E6D000E1FF1749FCF710F9211CFBF7DBFFFE21D6 +:10E6E0008905FBF769FC011C301CFBF7E1FD011CEF +:10E6F000281CFBF7CFFF291CFBF75EFC8BE7C0460D +:10E70000FFFFFF3EFFFFFF31CAF2497108EF1138EA +:10E71000047F4F3A4611243DA80A4E3E90B0A63ED3 +:10E72000ABAA2A3E2EC69D3D6133303F2D57014096 +:10E7300039D119409999793F2EBD3BB3DB0F493F41 +:10E740002EBD3B33DB0FC93FF0B54746FF254A00DE +:10E7500080B4031C5208ED05AA4216DC8046400036 +:10E760004008A84211DCFE24A405A1423DD00227A6 +:10E770008C173C40DF0F3C4300280DD1022C32D0D7 +:10E78000181C032C05D1314803E0081C191CFBF7A9 +:10E7900013FC04BC9046F0BD002A1DD0AA4228D02C +:10E7A000A84219D0821AD2153C2A1ADC00293BDB78 +:10E7B000181CFBF77DFDFEF713FDFEF769FB012C2E +:10E7C00025D0022C28D0002CE3D02149FBF7F4FB04 +:10E7D0002049FCF791F8DCE74346002B15DB1E4887 +:10E7E000D7E71D48EBE71B48D3E7181CFEF750FBA3 +:10E7F000CFE790421CD0022CF5D0032CC3D00020D0 +:10E80000012CC6D180200006C3E71448C1E780234D +:10E810001B069C466044BCE70D49FBF7CDFB011C81 +:10E820000C48FCF769F8B4E700203C32C7DBBFE7CF +:10E83000022C05D0032C07D0012C03D00848A8E7F0 +:10E840000848A6E70848A4E70848A2E7DB0F49C044 +:10E850002EBDBB33DB0F4940DB0FC93FDB0FC9BF08 +:10E86000DB0F493FE4CB1640DB0F49BFE4CB16C0BA +:10E87000F8B5FF224F4646464300C0B4041C5B086F +:10E88000D20593426ED8C50F934200D171E0654A1C +:10E89000904200DD8BE0002800DA81E0624A93427A +:10E8A0006BD9624A934200D99BE0614BAF00F958A3 +:10E8B000201CFCF721F8814601205E4B401BFF58CD +:10E8C000451B4846391CFCF717F8041C211C201C6A +:10E8D000FBF7E0FE5849061CFBF7DCFE5749FCF746 +:10E8E0000BF8311CFBF7D6FE5549FBF765FB311CD5 +:10E8F000FBF7D0FE5349FBF7FFFF311CFBF7CAFEC5 +:10E900005149FBF759FB311CFBF7C4FE011C201CCD +:10E91000FBF7F2FF8046201C4146002D4CD0FBF750 +:10E92000B9FE041C80204146C005FBF7E5FF011C31 +:10E93000201CFBF7BDFC011C381CFBF7DDFF494622 +:10E94000FBF7DAFF011CFE208005FBF7D5FF2B1C2F +:10E950007D3363DAD8216435ED0528180905FBF706 +:10E9600099FE02E0211CFBF727FB0CBC9046994660 +:10E97000F8BD002DF9D00020F7E7344A934214D8AF +:10E980003349201CFBF718FBFE218905FBF74AFAE7 +:10E9900000280AD0FE21201C8905FBF70DFBE4E7C7 +:10E9A0002C4A934200D879E7E5E700258EE728480E +:10E9B000011CFBF76FFED8E7FBF76CFE8021051CFE +:10E9C000C9054046FBF798FF011C281CFBF770FCAB +:10E9D000211CFBF791FF011CFE208005FBF78CFF3B +:10E9E000C3E71D49201CFBF755FE1C4BAD00E95841 +:10E9F000FBF7E2FAFCF7FEF8051CFCF71BF91849D7 +:10EA0000071CFBF747FE011C201CFBF775FF15498F +:10EA10008146381CFBF73EFE071C52E7ED0528181F +:10EA2000A3E7C0461772B1421872B13E9115853FF7 +:10EA30000C1B0300041B03004CBB31330EEADD3515 +:10EA400055B38A38610B363BABAA2A3EFFFF7F31B4 +:10EA5000CAF24971B5F1CF423BAAB83FFC1A030094 +:10EA60008071313FD1F7173770B54E0076083ED030 +:10EA7000C40FE407251C3B4B45409D4237DC013366 +:10EA80009E4234DCB54237DB3CD0374B9D423EDC06 +:10EA90007E222B025242002B03DD013A5B00002B49 +:10EAA000FBDC314B9E4241DC7E2033024042002B96 +:10EAB00002DB01385B00FCD5131C7E3331DB802385 +:10EAC0006D026D0A1B041D43031C7E3323DB802370 +:10EAD0004902490A1B041943131A002B0DD06A1A64 +:10EAE0006D00002A01DB0DD05500013BF5E7FBF777 +:10EAF000D1FD011CFBF7DCFB70BD691A00D5291C98 +:10EB0000002916D1E10F194B8900C858F4E7EB151D +:10EB10007F3B1A1CC5E77E23311C5B421B1A9940C0 +:10EB2000DAE77E235B429B1A9D40CDE7F0157F38E4 +:10EB3000C2E70D4A131C914203DC49000138994297 +:10EB4000FBDD031C7E3306DB094B7F30CB182343F0 +:10EB5000C0051843D0E77E235B42181A0141081C08 +:10EB60002043C9E7FFFF7F7FFFFF7F00141B0300E7 +:10EB7000000080FFF8B55F4656464D464446011CEE +:10EB8000F0B44B0000D191E0002800DAB2E09E4BD7 +:10EB9000984200DDB5E09D4A0023904206DC081C47 +:10EBA0009821C905FBF776FD19235B42C5157F3D0A +:10EBB000ED184002964B440AE01880231B040340E2 +:10EBC000FE20FE2180055840DA152043890555199D +:10EBD000FBF792FE231C0F335B02061C5B0A0F2B14 +:10EBE0006FDD8021C905FBF7E7F9011C301CFBF73D +:10EBF0005FFB8146281CFCF71DF8494682464846C3 +:10EC0000FBF748FD8346834B59469846FBF742FD88 +:10EC10008149071CFBF73EFD8049FBF7CDF9391C04 +:10EC2000FBF738FD7E49FBF7C7F9391CFBF732FDCE +:10EC30007C49FBF7C1F95946FBF72CFD7A4983461D +:10EC4000381CFBF727FD7949FBF7B6F9391CFBF7B0 +:10EC500021FD7749FBF7B0F9391CFBF71BFD011CBF +:10EC60005846FBF7A9F9A0444346071C7148041B0A +:10EC70001C43002C00DC9BE0FC21301C8905FBF7C9 +:10EC800009FD311CFBF706FD041C002D57D1391C72 +:10EC9000FBF792F94946FBF7FDFC011C201CFBF732 +:10ECA0002BFE011C301CFBF727FE04E0CC200021CA +:10ECB0000006FBF7FDFA3CBC90469946A246AB46DF +:10ECC000F8BD0021FBF794F800281ED00020002D8D +:10ECD000F1D0281CFBF7AEFF5749041CFBF7DAFC08 +:10ECE0005649051C201CFBF7D5FC011C281CFBF712 +:10ECF00063F9E0E7081CFBF7FFFD0021FBF7D8FAFA +:10ED0000D9E7081CFBF758F9D5E7311C301CFBF795 +:10ED1000C1FC4B49041C301CFBF7BCFC011CFC2053 +:10ED20008005FBF7E9FD011C201CFBF7B3FC041C6C +:10ED3000002D25D1301C211CFBF7DEFDBBE7504622 +:10ED40003D49FBF7A7FC391C051C201CFBF734F9D7 +:10ED50004946FBF79FFC3949071C5046FBF79AFCD4 +:10ED6000011C381CFBF728F9011C201CFBF7C4FD13 +:10ED7000311CFBF7C1FD011C281CFBF7BDFD9AE708 +:10ED8000281CFBF757FF2C49051CFBF783FC2B497C +:10ED9000071C281CFBF77EFC011C201CFBF7ACFDAC +:10EDA000311CFBF7A9FD011C381CFBF7A5FD82E710 +:10EDB000002D1CD050462049FBF76CFC391C041C6C +:10EDC000301CFBF799FD4946FBF764FC1B49051C09 +:10EDD0005046FBF75FFC011C281CFBF78DFD311C26 +:10EDE000FBF78AFD011C201CFBF786FD63E7391C3D +:10EDF000301CFBF781FD4946FBF74CFC011C301C25 +:10EE0000FBF77AFD57E7C046FFFF7F7FFFFF7F00DC +:10EE100020FB4A00305CCFFF9788173E25333A3EEF +:10EE20002549923EABAA2A3F4FD01C3E298E633E15 +:10EE3000CDCCCC3E88C235008071313FD1F7173739 +:10EE4000ABAAAA3EF0B5444656464D465F46F0B4DE +:10EE50004E0087B0051C0C1C8846760811D0FF2395 +:10EE6000470081467F08DB059F4204DD654801F0CD +:10EE70000FFE041C07E09E420DDDFE239B059F4212 +:10EE8000F4D1FE24A405201C07B03CBC9046994652 +:10EE9000A246AB46F0BD0023019300286FDBFF23A1 +:10EEA000DB059E4260D0FE239B059E427CD08023E2 +:10EEB000DB05984500D18BE0FC239B05984521D0CC +:10EEC000281CFEF78DF9FF23011CDB059F4236D07D +:10EED000002F34D0FE239B059F4230D0EB0F013B27 +:10EEE0001A1C0293019B13437CD09A23DB059E429C +:10EEF00000DC95E0444B9F4229DC4346002B2DDB90 +:10EF00000024C0E74B46281C002B67DAFEF768F99F +:10EF1000FF23011CDB059F4201D0002FDAD13B4BC0 +:10EF2000081C9C46019B67441F435DD0019B0C1C41 +:10EF3000012BA8D180231B069C466444A3E74346CB +:10EF4000002B58DB4B460C1C002B9CDAE7E7304BC0 +:10EF50009F4200DCBDE24346002BD1DD2D48011C61 +:10EF6000FBF798FB041C8EE7FE239B059F4200D114 +:10EF700087E728DD4346002B00DB84E7C0E7264B0C +:10EF80009E421DDC254B9E428DDD9623F2159B1A79 +:10EF9000321C1A41111C9940B14284D101231A40FC +:10EFA00001339B1A01937EE743462C1C002B00DBA8 +:10EFB00069E7FE20291C8005FBF77AF9041C62E74B +:10EFC000022301936BE74346002BB3DB00245AE78F +:10EFD000281C291CFBF75EFB041C54E700F05CFCBA +:10EFE000041C50E7281C291CFBF786FC011CFBF7BE +:10EFF0005FF9041C47E7FE208005FBF759F9011C67 +:10F00000A0E7C046E81A0300F7FF7F3F000080C07A +:10F010000700803FCAF24971FFFF7F4BFFFF7F3F30 +:10F02000F14B00229F4207DC081C9721C905FBF722 +:10F0300031FB1822071C5242FB157802FE277F3B4A +:10F040009B180393E94B400ABF050743984200DC35 +:10F05000AEE1E74B984200DC7CE2039B0133039373 +:10F06000E44B9C460023674404939D00E24B381C0C +:10F07000EB58BB46191C9946FBF73EFC49468246B5 +:10F08000381CFAF799FF011CFE208005FBF710F9E8 +:10F09000031C191C50460593FBF7FCFA80237F10D4 +:10F0A0009B051F438023DB029C46049B67449C46D0 +:10F0B000060B674436038046391C301CFBF7EAFA1E +:10F0C000011C5046FBF718FC49468246381CFBF7EA +:10F0D00013FC011C5846FBF70FFC011C301CFBF70E +:10F0E000D9FA011C5046FBF707FC0599FBF7D2FA49 +:10F0F000414683464046FBF7CDFA071C391CFBF717 +:10F10000C9FABE498146381CFBF7C4FABC49FAF774 +:10F1100053FF391CFBF7BEFABA49FAF74DFF391C09 +:10F12000FBF7B8FAB849FAF747FF391CFBF7B2FA10 +:10F13000B649FAF741FF391CFBF7ACFAB449FAF7C4 +:10F140003BFF011C4846FBF7A5FA311C071C404653 +:10F15000FAF732FF5946FBF79DFA391CFAF72CFFF4 +:10F16000311C8146301CFBF795FAAA498246FAF712 +:10F1700023FF4946FAF720FF070B3F03391C301CD9 +:10F18000FBF788FA391C061C5846FBF783FAA1499D +:10F190008346381CFBF7B0FB5146FBF7ADFB011C67 +:10F1A0004846FBF7A9FB4146FBF774FA011C584699 +:10F1B000FAF702FF8146301C4946FAF7FDFE070BBD +:10F1C0003F03381C9449FBF765FA94498046381C84 +:10F1D000FBF760FA311C8246381CFBF78DFB011CE3 +:10F1E0004846FBF789FB8E49FBF754FA011C504651 +:10F1F000FAF7E2FE8B4BE958FAF7DEFE071C03989C +:10F20000FBF718FD884B8146EB5840469A46391C5F +:10F21000FAF7D2FE5146FAF7CFFE4946FAF7CCFE8E +:10F22000060B36034946301CFBF766FB5146FBF7DD +:10F2300063FB4146FBF760FB011C381CFBF75CFBE2 +:10F240008046019D029B013D1D4300D0ADE0774FFC +:10F25000250B2D03291C201CFBF74EFB311CFBF753 +:10F2600019FA41468146201CFBF714FA011C484656 +:10F27000FAF7A2FE291C8046301CFBF70BFA061C8D +:10F280008246311C4046FAF797FE44008146051C31 +:10F290006408002800DC05E18623DB059C4200DDD4 +:10F2A00098E000D187E0FC239B059C4200DDD3E081 +:10F2B0000023002699462D0B2D03281C5C49FBF7E3 +:10F2C000E9F951468346281CFBF716FB011C404612 +:10F2D000FBF712FB5749FBF7DDF95749041C281CC3 +:10F2E000FBF7D8F9011C201CFAF766FE041C211C50 +:10F2F0005846FAF761FE5946051CFBF7FDFA011C5A +:10F30000201CFBF7F9FA291C8046281CFBF7C2F9E0 +:10F310004A49041CFBF7BEF94949FBF7EDFA211CE9 +:10F32000FBF7B8F94749FAF747FE211CFBF7B2F99A +:10F330004549FBF7E1FA211CFBF7ACF94349FAF721 +:10F340003BFE211CFBF7A6F9011C281CFBF7D4FA95 +:10F35000041C211C281CFBF79DF980218246C9054D +:10F36000201CFBF7C9FA011C5046FAF7A1FF4146E1 +:10F37000041C281CFBF78EF94146FAF71DFE011C00 +:10F38000201CFBF7B9FA291CFBF7B6FA011CFE207A +:10F390008005FBF7B1FA3118CB15002B00DCDEE05D +:10F3A000381CFBF777F9041C6DE5FE27BF054FE716 +:10F3B0000023049359E626494046FAF7FDFD311C27 +:10F3C00082464846FBF798FA011C5046FAF72AFD98 +:10F3D000002841D01F49381CFBF75CF91D49FBF799 +:10F3E00059F9041C4FE5C046FFFF7F0071C41C00A3 +:10F3F000D6B35D00000080FF2C1B030042F1533E9A +:10F4000055326C3E05A38B3EABAAAA3EB76DDB3EE0 +:10F410009A99193F000040400038763FA0C39D36BE +:10F420004F38763F241B03001C1B0300000080BFE5 +:10F430000072313F1872313F8CBEBF354CBB313347 +:10F440000EEADD3555B38A38610B363BABAA2A3E4E +:10F450003CAA3833CAF2497180221204131CE41505 +:10F460007E3C23415C1963025B0A1A4396236100C8 +:10F47000090E5B1A1A41131CED0F6A42534099465C +:10F48000394B7F390B419C43211C301CFBF734FA6C +:10F490008246A94440465146FAF78EFD4B46051C6C +:10F4A000DE0508E7314B9C420ADC00D0FBE6311C4C +:10F4B000FBF722FA011C4046FAF7AAFC0028CBD041 +:10F4C0002B49381CFBF7E6F82949FBF7E3F8041C45 +:10F4D000D9E4081CFE218905FBF70EFA2549061C14 +:10F4E000FBF7D8F82449071C301CFBF7D3F8311C74 +:10F4F000051C301CFBF7CEF8FA2181468905301C2B +:10F50000FBF7C8F8011C1D48FBF7F6F9311CFBF7A7 +:10F51000C1F8011CFC208005FBF7EEF9011C4846F0 +:10F52000FBF7B8F81649FBF7B5F8011C281CFBF7E8 +:10F53000E3F9051C291C381CFAF73EFD060B3603BF +:10F54000391C301CFBF7D8F9011C281CFBF7D4F937 +:10F55000804676E680239B030493012385E5494694 +:10F56000FDF744FF011C1BE7FFFF7F00000016436F +:10F570006042A20D00AAB83F70A5EC36ABAAAA3E25 +:10F580003BAAB83FF0B55F46564644464D46F0B4F8 +:10F5900042005708B24A89B0031C0C1C061C974253 +:10F5A0006FDDB04A97421BDCAF49002B00DC0BE15A +:10F5B000FBF7A2F90F233A1C9A43AC4B051C9A4265 +:10F5C00000D170E0AA49FBF797F9011C2060281CC4 +:10F5D000FBF792F9A649FBF78FF96060012054E030 +:10F5E000A44A974200DC70E0A34A974254DC86228A +:10F5F00052429146FB1599444B46DD057D1B281C64 +:10F60000FBF7F8FAFBF716FB011C0590281CFBF72B +:10F6100073F98721C905FBF73DF88046FBF7EAFA45 +:10F62000FBF708FB051C0690291C4046FBF764F914 +:10F630008721C905FBF72EF800210790FAF7D8FBC0 +:10F64000002800D1D8E0281C0021FAF7D1FB0222C3 +:10F65000431E9841131A02220092884A05A801927B +:10F66000211C4A4600F03EFA002E0EDA80221206D5 +:10F670009446236840426344236063686344636044 +:10F6800003E00023206000204B6009B03CBC9046A2 +:10F690009946A246AB46F0BD191CFBF72DF96060F8 +:10F6A00020600020F1E77649FBF726F97549051C33 +:10F6B000FBF722F9011C2060281CFBF71DF971499A +:10F6C000FBF71AF960600120DFE7FDF789FD6E495D +:10F6D0008046FAF7DFFFFC218905FAF76DFCFBF79E +:10F6E00089FA051CFBF7A6FA5F498146FAF7D2FFB3 +:10F6F000011C4046FBF700F95D4980464846FAF791 +:10F70000C9FF824640461F2D25DCFF233A1C5F4976 +:10F710009A436B1E9B005B589A421CD05146FBF7E4 +:10F72000EBF883465B46236059464046FBF7E4F816 +:10F730005146FBF7E1F8031C6060281C002EA4DA98 +:10F74000802212065A4422608022120694466344A4 +:10F750006360684299E75146FBF7CEF8FB15FF213D +:10F760001A1C0293C30D0B408346D31A082BD9DD14 +:10F7700043494846FAF78EFF071C391C4046FBF701 +:10F78000BBF8031C191C039040469846FBF7B4F8DD +:10F79000391CFBF7B1F83B49071C4846FAF77AFFDA +:10F7A000391CFBF7A9F8824640465146FBF7A4F8FE +:10F7B000FF22C30D1340029A8346D31A192B30DC63 +:10F7C000039B20609846AFE7FAF7F6FB0F233A1C3D +:10F7D0009A43264B051C9A4210D02549FAF7ECFBB8 +:10F7E000011C2060281CFBF787F82149FAF7E4FB8D +:10F7F00060600120404248E703232CE72049FAF7E4 +:10F80000DBFB2049051CFAF7D7FB011C2060281CF4 +:10F81000FBF772F81B49FAF7CFFB6060012040420A +:10F8200033E71B494846FAF735FF039B071C391C91 +:10F83000181C9A46FBF760F8804650464146FBF795 +:10F840005BF8391CFBF758F81249071C4846FAF7D1 +:10F8500021FF391CFBF750F8824640465EE7C04660 +:10F86000D80F493FE3CB1640800FC93FD00FC93FA7 +:10F8700043443537800F4943FFFF7F7FB41B0300AC +:10F880000044353708A3852E84F9223F341B03003A +:10F8900000A3852E32318D242B49420070B5031C04 +:10F8A000041C52088A423BD8011C002A36D000288A +:10F8B00040DBC115254882420AD80130204240D1A0 +:10F8C00000225B0001320342FBD00120821A89181A +:10F8D00080225B025B0A12047F391343CA0727D4D4 +:10F8E000802219200025002649105B005204B4181C +:10F8F0009C4202DCA6181B1BAD1801385B005208A5 +:10F900000028F4D1002B02D001232B405D19FC23E9 +:10F910009B059C466D106544C9054919081C70BDBE +:10F92000211CFAF7B7FE211CFAF746FB011CF5E78C +:10F930005B00D5E7FAF7E0FF011CFAF7B9FC011C00 +:10F94000ECE701228918C3E7FFFF7F7FFFFF7F00FD +:10F95000F8B54F464646584B4500C0B46D08061CE6 +:10F960000F1C9D4248DCFBF745F9002800D19FE0C1 +:10F97000311C301CFAF78EFE5049041CFAF78AFE3F +:10F980004F49FAF719FB211CFAF784FE4D49FAF7A3 +:10F99000B3FF211CFAF77EFE4B49FAF70DFB211C41 +:10F9A000FAF778FE4949FAF7A7FF211CFAF772FE29 +:10F9B0004749FAF701FB211CFAF76CFE8046FC214F +:10F9C000201C8905FAF766FE4146051C201CFAF743 +:10F9D00061FE391C041C301CFAF75CFE011C201C63 +:10F9E000FAF78AFF011C281CFAF786FF011CFE208B +:10F9F0008005FAF781FF53E0311CFAF74BFE2F49DF +:10FA0000041CFAF747FE2E49FAF7D6FA211CFAF73A +:10FA100041FE2C49FAF770FF211CFAF73BFE2A49F8 +:10FA2000FAF7CAFA211CFAF735FE2849FAF764FFFB +:10FA3000211CFAF72FFE2649FAF7BEFA211CFAF725 +:10FA400029FE244B80469D42B9DD234B9D422BDC91 +:10FA5000FF231B069C46FE2065448005291CFAF7FF +:10FA60004BFF8146FC21201C8905FAF713FE291C57 +:10FA7000FAF742FF4146051C201CFAF70BFE391C21 +:10FA8000041C301CFAF706FE011C201CFAF734FF98 +:10FA9000011C281CFAF730FF011C4846FAF72CFF1E +:10FAA0000CBC90469946F8BD0C4B0D4D9946D9E7D4 +:10FAB000FE208005F4E7C046FFFFFF314ED747AD7B +:10FAC000F6740F317CF29334010DD037610BB63AE6 +:10FAD000ABAA2A3D9999993E0000483F0000383F63 +:10FAE0000000903EF0B5564644465F464D46F0B4A1 +:10FAF000DDB00190181C069166990893C04B8900EF +:10FB0000C958031C013B181C0093D31E0C1C059103 +:10FB1000D917490FCB18DB10191CDB43DB17194031 +:10FB2000CB43DB009B180A9104930E1A071919D4D2 +:10FB3000679A01379046B300BF009844002520AC77 +:10FB400008E043465859FBF775F860510435013613 +:10FB5000BD4207D0002EF4DA002060510435013692 +:10FB6000BD42F7D1059B002B00DA3DE3059B013335 +:10FB70009B009946089B9B009B460023984648ABF8 +:10FB80009A465B46043B0293009B002B00DA31E26D +:10FB9000029B002543441C1C20AB9C464346019E0F +:10FBA0001F1F64446744216801CEFAF773FD011CEE +:10FBB000281CFAF701FA043C051CBC42F3D1534659 +:10FBC00042469D5004239C46E044C845DCD18D4A02 +:10FBD000059D94462B1C63449B000CA91A1C8C4663 +:10FBE000D14604336244634409920B93AB009A46B6 +:10FBF0004B4652469E58002D27DD0CAB9846824B53 +:10FC0000EC184346A8461D1CA4004C44EE21301CB1 +:10FC10008905FAF73FFDFAF7EDFFFBF70BF88721AF +:10FC2000C905071CFAF736FD011C301CFAF764FE03 +:10FC3000FAF7E0FF216801C5381CFAF7BDF9043C6A +:10FC400047AB061C9C42E1D14546049B301C191C65 +:10FC50009846FDF7CBFBF8218905041CFAF71AFD3D +:10FC6000FDF7C2FA8221C905FAF714FD011C201C18 +:10FC7000FAF742FE041CFAF7BDFF071CFAF7DAFF99 +:10FC8000011C201CFAF738FE4446061C002C00DC40 +:10FC900092E108216A1E92000CAB9B58081B191CAC +:10FCA00001417F1881405B1A0CA98B500722121B5F +:10FCB00013410293029B002B34DD0137002D00DC41 +:10FCC00090E2802252000CAB00210024FF209446D9 +:10FCD00009E0002A03D06446A21A01241A60013107 +:10FCE00004338D4209DD1A68002CF2D0821A0131EA +:10FCF0001A60012404338D42F5DC049B002B0EDDD9 +:10FD0000012B00D162E1022B09D16B1E9B000CAAD2 +:10FD1000D25803923F2203990A400CA9CA50029B71 +:10FD2000022B73D0301C0021FAF762F8002800D1B2 +:10FD300086E0059B691E8B420FDC0CAA94460022CC +:10FD4000314B0B98EB189B0063441C68043B224327 +:10FD50008342FAD1002A00D0AAE1059B0CAA013BFC +:10FD60009B00D358002B00D03AE20122099B043BB0 +:10FD7000596801320029FAD0AA186B1C07929342E5 +:10FD80003ADC009AD718089BFF1A20AB9C46079BC9 +:10FD9000BF005B1B9B0003930A9B67449C46654422 +:10FDA000AB00029300239846679A029B9446434413 +:10FDB00063445868FAF73EFF5B46F850009B002BFF +:10FDC0001CDB5B460025019EFC18216801CEFAF77A +:10FDD00061FC011C281CFAF7EFF8043C051CBC422E +:10FDE000F3D1434653444B445D6004239C46039B3C +:10FDF000E04404379845D7D1079DF7E60025F0E7A2 +:10FE0000CC1E0300FEFFFF3FFFFFFF3FFE20311C23 +:10FE10008005FAF771FD061C002C00D182E7FE2058 +:10FE200004998005FDF7E2FA011C301CFAF764FD25 +:10FE3000061C301C0021F9F7DBFF002800D078E712 +:10FE40005346CA469946049B301C59420797009571 +:10FE5000FDF7CCFA8721C905041CF9F7EDFF00284E +:10FE600000D1C7E1EE21201C8905FAF713FCFAF74F +:10FE7000C1FEFAF7DFFE8721C905051CFAF70AFC67 +:10FE8000011C201CFAF738FDFAF7B4FE4A460CAB09 +:10FE90009850009B049A01330832281C9C00009360 +:10FEA0000492FAF7A7FE0CAB1851FE2004998005C6 +:10FEB000FDF79CFA009A061C131E00DAB4E0013329 +:10FEC00098469B005B420CA999468C4693001A1CED +:10FED000019363441C1C131C53441F1C00256059D0 +:10FEE000FAF7A8FE311CFAF7D5FBEE217851890507 +:10FEF000301CFAF7CFFB043D061C4D45EFD134AB67 +:10FF00009B46C04BB9469A4643460393059B002740 +:10FF100098464346002B00DA84E0002F00DA81E0A7 +:10FF20003B1C00264F4600250024994602E004357C +:10FF30004C450CDC534679595859FAF7ABFB011C78 +:10FF4000301CFAF739F80134061CA045EFDA4B46AD +:10FF5000B9461F1C5A46BB00D65004235B429C4640 +:10FF6000039B0137E144BB42D3D1669B022B00DDEA +:10FF7000D9E0002B00DDBBE014D1019B00205B44E5 +:10FF80001C1C2168FAF718F8009B043C5A1E0092CA +:10FF9000F7D2029B002B03D080231B069C466044B3 +:10FFA000069B18600720079B18405DB03CBC90463C +:10FFB0009946A246AB46F0BD049B002B11D16B1EA7 +:10FFC0009B000CAAD3581B12029373E66B1E9B0076 +:10FFD0000CAAD25803927F2203990A400CA9CA5056 +:10FFE0009DE6FC218905F9F727FF00280DD10023A4 +:10FFF000029397E65346424600259D5004239C46B3 +:020000040002F8 +:10000000E044C84500D0BFE5E1E502230137029393 +:10001000002D00DD55E6FE20311C8005FAF76CFC52 +:10002000061C7FE6002695E7669B022B27DC002B4B +:1000300003DC0020002BACD0B4E7029B0021002B96 +:1000400066D08023069A1B06CB1813603498FAF703 +:1000500053FC009B002B0BDD012435AD02CDF9F7DD +:10006000ABFF009B0134A342F8DA029B002B03D0C4 +:1000700080231B069C466044069B586092E734AB85 +:100080009B46669B032B00D08CE7029B0020002B35 +:1000900000D19CE0802212069446349B069A634469 +:1000A00013605B465B68604463445360906079E72B +:1000B00007970F1C049B0A1C083B00910493191C12 +:1000C0000CA8BB00C358CA46002B00D0EDE64E4832 +:1000D0003B1C84460CA8634484469B006344043B59 +:1000E0005868013A08390028F9D000920491DCE6FA +:1000F000019B00215B441C1C33AD081C2168043C9F +:10010000F9F75AFFAC42F9D1029B011C002B98D1A0 +:10011000069B34981960FAF7EFFB009B002B9BDCE1 +:10012000069B58603EE7669B032B00D03AE7009B96 +:10013000002BAADD5B46019A9E58334A009B9446E9 +:1001400063441C1C9D0033AB9A46A0465D442C685A +:10015000301C211CF9F730FF071C391C201CFAF752 +:10016000CBFB011C301CF9F727FF043DA8606F6032 +:100170003E1C5545EBD1009B4446012B85DD5B467B +:10018000A400A046019A1D199E582C68311C201C01 +:10019000F9F712FF071C391C201CFAF7ADFB311CC4 +:1001A000F9F70AFF043DA8606F603E1CAB45ECD137 +:1001B0004446002004345C4435AD2168043CF9F722 +:1001C000FBFEAC42F9D1029B002B00D062E7069BFC +:1001D000349A98601A605A46526800925A60E1E672 +:1001E0000122C9E5002488E5089B9B009B4648AB9B +:1001F0009A46ECE4201CFAF7FDFC4A460CAB9850FA +:1002000053E6C046D81E0300FFFFFF3FF8B54F4638 +:1002100046469046334A4300C0B4041C0F1C5B089A +:10022000934205DCFAF7E6FC031C201C002B46D0A9 +:10023000211C201CFAF72EFA211C051CFAF72AFAB9 +:100240002949061C281CFAF725FA2849FAF754FB15 +:10025000291CFAF71FFA2649F9F7AEFE291CFAF70E +:1002600019FA2449FAF748FB291CFAF713FA22492C +:10027000F9F7A2FE43468146002B24D0FC21381C0E +:100280008905FAF707FA49468046301CFAF702FA60 +:10029000011C4046FAF730FB291CFAF7FBF9391C20 +:1002A000FAF72AFB1549051C301CFAF7F3F9011C73 +:1002B000281CF9F781FE011C201CFAF71DFB0CBC61 +:1002C00090469946F8BD4946281CFAF7E3F90B49D0 +:1002D000FAF712FB311CFAF7DDF9211CF9F76CFE75 +:1002E000EDE7C046FFFFFF31D3C92E2F342FD732A1 +:1002F0001BEF3836010D50398988083CABAA2A3EDD +:10030000F0B5564644465F464D46F0B4894B46002C +:1003100083B0041C88469246834676089E4211DCD0 +:10032000FAF768FC002823D1534601331E4300D15D +:10033000EEE05346012B00D1FAE0211C7E48F9F78C +:10034000B7FFB1E07D4B9E4212DD002800DAE8E005 +:10035000211C7B48FAF7D0FA4146041C7948FAF789 +:10036000CBFA011C201CF9F727FE00239846041C39 +:10037000211C201CFAF78EF9071C391CFAF78AF9A0 +:10038000211C051C381CFAF785F96F498146281C89 +:10039000FAF780F96D49F9F70FFE291CFAF77AF997 +:1003A0006B49F9F709FE291CFAF774F96949F9F75D +:1003B00003FE291CFAF76EF96749F9F7FDFD291CC0 +:1003C000FAF768F96549F9F7F7FD65490190281CC6 +:1003D000FAF760F96349F9F7EFFD291CFAF75AF9C2 +:1003E0006149F9F7E9FD291CFAF754F95F49F9F772 +:1003F000E3FD291CFAF74EF95D49F9F7DDFD291CEB +:10040000FAF748F95B49F9F7D7FD391CFAF742F9D1 +:10041000011C0198F9F7D0FD4946FAF73BF941462E +:10042000F9F7CAFD391CFAF735F94146F9F7C4FD69 +:100430005149051C4846FAF72DF9291CF9F7BCFD6E +:10044000071C391C201CF9F7B7FD3C4B051C9E42CC +:1004500031DC5346012B27D0291C060B3648F9F70F +:1004600027FF3603211C8046050B301CFAF744FA9F +:100470002D03011C381CFAF73FFA291CFAF70AF978 +:10048000291C041C301CFAF705F9FE218905F9F72F +:1004900093FD011C201CF9F78FFD4146FAF7FAF88D +:1004A000011C281CF9F788FD03B03CBC9046994616 +:1004B000A246AB46F0BD5046FAF7BCFB5B46061CB5 +:1004C000981702231840013B181AFAF7B3FB291CAE +:1004D0008046281CFAF7DEF8311C8146281CF9F703 +:1004E0006BFD011C4846F9F7E3FE391CFAF704FAE4 +:1004F000011C201CFAF700FA011CF9F75DFD011C34 +:10050000301CFAF7F9F9011C4046FAF7C3F8CBE7BB +:10051000201CFCF765FE011CFE208005F9F7C8FED3 +:10052000C2E780231B069C464344644498460FE779 +:10053000201CB9E7FFFF7F31000080BF3FA12C3FA7 +:10054000DA0F493F682122335FAE9BB745F4A338E9 +:10055000C8261A3A16696B3BA427B33C8988083E23 +:100560008453D9377AC09538B937813948DEBE3AD5 +:100570001F37113CD10D5D3DABAAAA3EF8B55646DA +:100580004D4644465F46A54BF0B44E008046894632 +:100590008A4676089E420CDDA14B9E4200DDA0E01B +:1005A00000D19BE05346002B00DCDEE09D4B9E4AD1 +:1005B0009FE09E4B9E4200DDB1E09D4B9E4200DCE1 +:1005C0009FE001235B429B4642464B4640464946DC +:1005D000FBF726FB061C0F1C321C3B1CFBF720FB09 +:1005E000041C0D1C934A944BFBF71AFB934A944B43 +:1005F000FAF7B0FB221C2B1CFBF712FB914A924B23 +:10060000FAF7A8FB221C2B1CFBF70AFB8F4A904B26 +:10061000FAF7A0FB221C2B1CFBF702FB8D4A8E4B2A +:10062000FAF798FB221C2B1CFBF7FAFA8B4A8C4B2F +:10063000FAF790FB321C3B1CFBF7F2FA894A8A4B13 +:10064000061C0F1C201C291CFBF7EAFA874A884B62 +:10065000FBF780FD221C2B1CFBF7E2FA854A864B38 +:10066000FBF778FD221C2B1CFBF7DAFA834A844B3C +:10067000FBF770FD221C2B1CFBF7D2FA814A824B40 +:10068000FBF768FD221C2B1CFBF7CAFA0B1C594612 +:10069000021C013100D170E05946301CCC00391CDD +:1006A000FAF758FB42464B46FBF7BAFA774D784BC0 +:1006B0002D191C1922686368FBF74CFD42464B4616 +:1006C000FBF748FD021C0B1C28686968FBF742FD1C +:1006D00053460A1C002B4BDB031C0AE0002800D108 +:1006E00060E742464B4640464946FAF733FB031C57 +:1006F0000A1C181C111C3CBC90469946A246AB46ED +:10070000F8BD644A644BFAF725FB0022634BF9F706 +:100710004FFB002800D154E743464A46E9E700F082 +:10072000CBF85F4B041C0D1C9E4237DC5D4B9E4298 +:100730005DDC221C2B1CFAF70DFB0022574BFBF74C +:1007400009FD8023061C0F1C0022DB05201C291C30 +:10075000FAF700FB0B1C021C391C301CFAF722FEB6 +:100760000023804689469B462EE72E4B4E4AC0E723 +:1007700080221206031C8A18BBE7301C391CFAF7CA +:10078000E9FA42464B46FBF74BFA021C0B1C40466B +:100790004946FBF7DFFC031C0A1CAAE7434B9E42B9 +:1007A0001ADC0022424BFBF7D5FC0022061C0F1C72 +:1007B0003F4B201C291CFBF733FA0022374BFAF77A +:1007C000C9FA0B1C021C391C301CFAF7EBFD022382 +:1007D000804689469B46F7E62B1C00203549221CA3 +:1007E000FAF7E0FD0323804689469B46ECE60022AB +:1007F0002A4BFBF7AFFC0022061C0F1C274B201CCA +:10080000291CFAF7A7FA0B1C021C391C301CFAF73A +:10081000C9FD0123804689469B46D5E6FFFF0F446C +:100820000000F07F182D4454FB21F93FFFFFDB3F10 +:10083000FFFF1F3E11DA22E33AAD903FEB0D762425 +:100840004B7BA93F513DD0A0660DB13F6E204CC5FA +:10085000CD45B73FFF8300922449C23F0D55555502 +:100860005555D53F2F6C6A2C44B4A2BF9AFDDE5279 +:100870002DDEAD3F6D9A74AFF2B0B33F711623FE1B +:10088000C671BC3FC4EB98999999C93F68B90200F9 +:1008900048B902009C7500883CE4377E0000F03FB8 +:1008A000FFFFF23FFFFFE53FFB21F9BFFF7F034062 +:1008B0000000F83F0000F0BF49004B08191C7047CA +:1008C0000A1C031C024330B50220002A00D130BDAF +:1008D00080221206914216D00C4A04208C180C4A31 +:1008E0009442F4D90B4C0C199442F0D90A4A4900AD +:1008F000490803209142EAD9064A00209142E6D1F4 +:1009000058425841E3E7002BE1D0EFE70000F0FF49 +:10091000FFFFDF7F0000F07FFFFF0F000020704728 +:10092000002001497047C0460000F87FF0B54746F7 +:1009300080B44B004A4A5B0D9D1882B0071C0C1C0A +:10094000CE0F132D39DC002D59DB464F021C2F41F1 +:100950003B1C0B4003439C46B84667460B1C002FCC +:1009600025D043465B081A1C0A4010430027002884 +:1009700008D0132D00D16FE099438023DB022B4177 +:1009800019430C1C3849F6008E19231C346875680D +:100990003A1C201C291CFAF7DDF9009001910098FF +:1009A0000199221C2B1CFBF7D5FB021C0B1C101CF5 +:1009B000191C02B004BC9046F0BD332D0BDD0B1C9E +:1009C0008021021CC9008D42F1D1211CFAF7C2F925 +:1009D000021C0B1CEBE7254A9D1801235B42EB40F0 +:1009E0009C460B1C6146021C0142E0D04B080342AE +:1009F000C8D08027FF052F4198430743C2E74C002A +:100A000064080443021C0B1C002CD0D00903090B02 +:100A100001434A4211438022090B12035B0C11402F +:100A20005B04021C194310480B1CF10041180C68B0 +:100A30004D68201C291CFAF78DF90090019100984F +:100A40000199221C2B1CFBF785FB4B005B08F6076A +:100A50001E43021C331CAAE780273F068CE7C046D2 +:100A600001FCFFFFFFFF0F0088B90200EDFBFFFF55 +:100A70004000C90FC90740080843704743000020E1 +:100A8000024A5B089A4240417047C046FFFF7F7FA1 +:100A9000004870470000C07F054B10B5041C181EAD +:100AA00005D0131C02200A1C211C07F0AEFF10BD4C +:100AB0000B8A0200014B18687047C046F000002006 +:100AC000084B10B5041C002B02D0002100E000BF31 +:100AD000054B1868836A002B00D09847201C08F04B +:100AE000A6F8C04600000000641F030070B5051C96 +:100AF0000C1E01D1002049E0002804D08369002B9E +:100B000001D100F0F9F8224B9C4201D16C6808E059 +:100B1000204B9C4201D1AC6803E01F4B9C4200D1AA +:100B2000EC680C22A35E002BE4D0281C211C0AF0E8 +:100B300067FA236B061C002B06D0281C216A9847F5 +:100B4000002801DA01267642A3891B0603D5281C5A +:100B5000216900F0FBFA616B002908D0231C4433A3 +:100B6000994202D0281C00F0F1FA00236363A16CC3 +:100B7000002904D0281C00F0E9FA0023A3640AF03D +:100B8000DEFA0023A3810AF0DBFA301C70BDC046F8 +:100B9000041F0300241F0300441F030008B5034B78 +:100BA000011C1868FFF7A2FF08BDC046F000002036 +:100BB00038B50B69051C0C1C002B01D100201CE072 +:100BC000002804D08369002B01D100F095F80B4B6D +:100BD0009C4201D16C6808E0094B9C4201D1AC6891 +:100BE00003E0084B9C4200D1EC680C22A35E002B72 +:100BF000E4D0281C211C0AF003FA38BD041F0300AE +:100C0000241F0300441F030008B5011E05D1054B36 +:100C1000054918680AF0B5FA03E0044B1868FFF7B5 +:100C2000C7FF08BD641F0300B10B0200F0000020E5 +:100C300038B5051C0C1C002804D08369002B01D199 +:100C400000F05AF80E4B9C4201D16C6808E00D4B45 +:100C50009C4201D1AC6803E00B4B9C4200D1EC6894 +:100C60006368013B6360002B04DA281C211C01F03F +:100C70000BF803E023685A1C2260187838BDC04680 +:100C8000041F0300241F0300441F030008B5034B87 +:100C9000011C1868FFF7CCFF08BDC046F00000201B +:100CA00008B502490AF06DFA08BDC046B10B020052 +:100CB000002310B5041C0360436083608181436698 +:100CC000C281036143618361191C08225C300AF010 +:100CD000B0FA054B24626362044BA362044BE362E7 +:100CE000044B236310BDC046AD1E0200D51E02009A +:100CF0000D1F020001B40200836913B5002B28D137 +:100D00008364C3640365134B134A1B6882620193B7 +:100D1000984201D101238361041C00F01FF8606038 +:100D2000201C00F01BF8A060201C00F017F8042124 +:100D3000E06000226068FFF7BBFFA0680921012284 +:100D4000FFF7B6FFE06812210222FFF7B1FF01238F +:100D5000A36113BD641F0300A10C0200F8B51D4B75 +:100D6000061C1D68AB69002B02D1281CFFF7C4FFCD +:100D70004835AC686B68013B05D40C22A75E002F98 +:100D800010D06834F7E72B68002B06D1301C042103 +:100D90000AF0BFF92860002801D02D68E9E70C238C +:100DA000336016E00123201C5B42E3810233A38100 +:100DB00067662760A760676027616761A7615C302D +:100DC000391C08220AF035FA201C6763A763A76460 +:100DD000E764F8BD641F030038B5074B074C1D1CC2 +:100DE000E41AA410002C04D0013CA300EB5898474F +:100DF000F8E70AF009FC38BD240100202801002092 +:100E0000F7B50F1C111C01AA051C0AF032FB061EC7 +:100E100001D1002427E0281CFFF7A0FF041EF8D012 +:100E2000DB23281C391C019A5B0000F0ADFD002873 +:100E300006DA00250AF083F9A5810AF081F9E8E7CE +:100E40000A4BE08163620A4BA681A362094B2462CC +:100E5000E362094B2363F30505D5281C211C0022FE +:100E600002230AF06EF9201CFEBDC046AD1E020032 +:100E7000D51E02000D1F020001B4020008B5031CBC +:100E80000A1C03490868191CFFF7BAFF08BDC046D1 +:100E9000F000002070B5051C0E1C141C002804D0A6 +:100EA0008369002B01D1FFF727FF0A4B9C4201D138 +:100EB0006C6808E0084B9C4201D1AC6803E0074B2A +:100EC0009C4200D1EC68281C311C221C00F08AFDD9 +:100ED00070BDC046041F0300241F0300441F03000D +:100EE00008B5031C0A1C03490868191CFFF7D2FF48 +:100EF00008BDC046F0000020F7B5051C0C1C01928F +:100F00001E1C002804D08369002B01D1FFF7F4FEDA +:100F1000414B9C4201D16C6808E0404B9C4201D19E +:100F2000AC6803E03E4B9C4200D1EC688422A3896C +:100F300052001340934203D1281C211CFFF738FEB6 +:100F4000E36A0093002B01D11D3331E0012E05D05F +:100F5000022E31D01623002E2AD12DE0281C211C70 +:100F6000FFF726FE8023A2895B011A4001D0606D45 +:100F700006E0331C281C216A009EB047431C18D091 +:100F8000A3895A0707D56368C01A636B002B0AD080 +:100F9000236CC01A07E01B0705D52368002B02D07D +:100FA00022699B1AC018019B00261B18019303E0BD +:100FB0002B6001277F422DE02369002B03D1281CE1 +:100FC000211C00F057F8281C211CFFF7F1FD071E1B +:100FD000EFD1331C281C216A019A009EB047431CA4 +:100FE000E7D0616B002908D0231C4433994202D01A +:100FF000281C00F0ABF8002363630021201C236948 +:10100000A2892360074B61601340A3815C300822F2 +:101010000AF00FF9381CFEBD041F0300241F030053 +:10102000441F0300DFF7FFFF0E4B70B500251E1CA9 +:101030000D4CE41AA410A54204D0AB00F358984715 +:101040000135F8E70AF0DAFA084B00251E1C084CB7 +:10105000E41AA410A54204D0AB00F3589847013518 +:10106000F8E770BD100100201001002010010020E1 +:1010700024010020F0B58B8991B09B0706D50B1C8D +:1010800047330B600B6101234B6145E00C1C0E23C1 +:10109000C95E061C002904DA8023A5891D4010D1F1 +:1010A0000CE001AA01F098F90028F5DBF023029D7D +:1010B0001B021D40194BED186B425D418027FF005C +:1010C00001E000254027301C391C00F085F800287D +:1010D0000CD1A3899A051FD402221343A381231C98 +:1010E0004733236023610123636115E080220C4BA9 +:1010F000B362A38920601343A38120616761002D3F +:101100000AD00E23E15E301C01F078F9002803D0EC +:101110000122A3891343A38111B0F0BD00E0FFFFBA +:10112000A10C020008B5034B011C186800F054F82C +:1011300008BDC046F000002008B5034B011C18682C +:1011400000F004F808BDC046F000002030B50029CA +:101150003ED004390B68002B00DAC9181D4A136809 +:10116000141C002B02D14B60116031E099420DD26A +:1011700008680A189A4203D11368C3180B605368B1 +:101180004B60216024E08A4203D8131C5A68002A6D +:10119000F9D11D685C198C420BD10968691858187F +:1011A0001960904214D110685268091819605A6089 +:1011B0000EE08C4202D90C23036009E008680C1889 +:1011C000944203D114685268001908604A6059605B +:1011D00030BDC046DC2D0020032370B5CC1C9C43E1 +:1011E0000834051C0C2C01D20C2405E0002C03DA79 +:1011F0000C2300202B6042E08C42F9D3204A136874 +:10120000101C191C002913D00A68121B0DD40B2ABC +:1012100002D90A608B181FE08B4202D15A68026023 +:101220001BE04A685A600B1C17E00B1C4968E9E791 +:10123000144E3368002B03D1281C00F055FD30609C +:10124000281C211C00F050FD031C421CD0D003229E +:10125000C61C964386420AD11C60181C07210B301D +:101260001A1D8843821A0AD05142995007E0311A58 +:10127000281C00F039FD431CBAD0331CECE770BDCC +:10128000DC2D0020D82D0020F0B59FB0061C0F1CCF +:1012900002920593002804D08369002B01D1FFF747 +:1012A0002BFD794B9F4201D1776808E0774B9F4235 +:1012B00001D1B76803E0764B9F4200D1F768BB8944 +:1012C0001B070AD53B69002B07D0002306AD6B61D5 +:1012D00020336B761033AB763DE0301C391C00F0C8 +:1012E000F5FF0028F1D001204042CAE0059A111D07 +:1012F00012680591002A7EDB0992013423782E2B97 +:1013000000D189E021786348032209F05BFF0028BF +:1013100008D0604B0134C01A40238340181C2B684E +:10132000184328602178631C5B48062202932976C3 +:1013300009F048FF002800D191E0584B002B00D065 +:1013400084E00722059B07339343083305936B69B9 +:10135000039A9B186B61029C2378002B04D1029B9B +:10136000E31A049311D003E0252BF8D00134F3E7FE +:10137000049B301C391C029A09F078FF431C7BD077 +:101380006A69049B944663446B612378002B73D095 +:101390000122002352426A6002A9543252180134D9 +:1013A0002B60EB60AB601370AB6521783C48052285 +:1013B00009F008FF002809D0394B0134C01A012375 +:1013C0008340181C2B6818432860EEE72B68DA0668 +:1013D00004D55322202102A8121811701A0704D52F +:1013E00053222B2102A81218117022782A2A00D128 +:1013F0007CE7099B05E05242EA60022213432B601E +:101400007BE72278303A092A04D80A214B43013479 +:101410009B18F6E7099371E763782A2B09D1059B9E +:1014200002341A1D1B680592002B0DDA01235B4262 +:101430000AE0002301342278303A092A04D80A212C +:101440004B4301349B18F6E707935BE705AB00932A +:10145000301C291C3A1C134B00E000BF07E005AB11 +:101460000093301C291C3A1C0E4B00F01DF8039011 +:10147000039B013300D06AE7BB895B0600D532E7E6 +:101480000B981FB0F0BDC046041F0300241F0300CB +:10149000441F03002DB0030031B003000000000022 +:1014A00027B003006DB20200F0B58BB006920A1CA3 +:1014B00043320793059004920A7E0C1C109B6E2AFF +:1014C00000D1A8E011D8632A22D009D8002A00D17F +:1014D000B2E0582A00D0C2E045310A707C4A4FE0A1 +:1014E000642A1DD0692A1BD0B9E0732A00D1A7E075 +:1014F00009D86F2A29D0702A00D0B0E020220968CC +:101500000A43226037E0752A1FD0782A33D0A6E03C +:101510000E1C1A684236111D196013683370A1E061 +:1015200021681A68080606D4490604D5111D1960F9 +:101530000023D55E02E0111D19601568002D3BDA0D +:101540002D23049A6D42137036E021681A6808064C +:1015500006D4490604D51568111D1960ADB202E024 +:10156000111D196015685A4B227E03930A276F2AB2 +:101570001DD108271BE0221C782145321170554AE5 +:1015800019680392081D226818600D68100602D4BD +:10159000500600D5ADB2D30702D520231A432260EE +:1015A0001027002D03D1202322689A432260231C98 +:1015B000002243331A7002E00A27454B0393636805 +:1015C000A360002B03DB0422216891432160002DDE +:1015D00002D1049E002B0ED0049E281C391CF8F763 +:1015E000C1FA039B013E5B5C281C3370391CF8F781 +:1015F00033FA051EF1D1082F09D12368DB0706D580 +:1016000063682269934202DC3023013E3370049BFD +:101610009B1B23612BE009681A68080607D449065A +:1016200005D5111D19601368A28A1A8004E0111DE6 +:101630001960136862691A600023049E236116E032 +:101640001A68111D196016680021301C626809F0C3 +:10165000B9FD002801D0801B6060636803E0261C90 +:1016600042363270012323610023049A1370079BD2 +:1016700005980093211C069B09AA09F009FE431C4A +:1016800002D10120404221E0236905980699321CCD +:10169000079DA847431CF4D023689B0705D4099BEA +:1016A000E068984212DA181C10E00025E368099AF5 +:1016B0009B1A9D42F3DA221C0123059806991932E0 +:1016C000079EB047431CDCD00135EFE70BB0F0BDFF +:1016D00038B0030049B00300F7B5151C8A680190C3 +:1016E0000C1C002A06D18A69511E8A4101215242EE +:1016F0000A43A2602268D20603D41A68111D196039 +:1017000017680026A06900281DD123680136DB0672 +:1017100003D42B681B783B7001372A686B68013251 +:101720002A60A268013B013A6B60A260002A1FD0C8 +:10173000002BE7DCC0235B00E3580198291C984785 +:101740000028DFD014E0012808D12B6862691B78DB +:10175000D35C002BD9D1002E19D009E0022807D183 +:101760002B680B4A1B781268D3185B781B07CCD503 +:1017700010232268134006D1E2680132E260A269B8 +:10178000002A00D03B70002023699E192661FEBD0F +:10179000F4000020F0B50C1C8BB00193744B049046 +:1017A000161C07AA23CB23C2724B0593A369032BF4 +:1017B00001D0714B05930022A36803925D32591E3C +:1017C000FF32914205D95E3BFF3B03935E23FF331B +:1017D000A360231C1C330093D023002722681B0125 +:1017E00013432360009B02933268BB00117807AA61 +:1017F0009858022209F0E6FC002839D0012F0DD1BB +:101800006368002B06D1083322686360F933FF3325 +:1018100013432360594B226813400DE0022F0CD173 +:10182000C02280212368D2001A4089008A4222D136 +:1018300010226260F03213432360A3685A1EA26034 +:10184000002B15D0029B5D1C33685A1C32601B783C +:10185000029A029513707368013B7360002B07DCDA +:10186000C0235B00E3580498311C9847002844D1FA +:101870000137032FB8D16368002B01D10A336360AD +:101880001021002763686069C91A3D4BC91809F027 +:1018900079FD029DA368002B30D032686069117811 +:1018A000405C00282AD030290BD12168090508D5D1 +:1018B000039A0137002A0BD0013A01330392A36047 +:1018C00006E021682F4B0B40236013782B70013505 +:1018D0007368013B7360002B03DD336801333360B1 +:1018E00007E0C0235B00E3580498311C98470028A8 +:1018F00004D1A368013BA360CCE700272368DB0584 +:101900000ED5009B9D4207D9BE23013D5B0029787F +:10191000E3580498321C9847009B01209D4225D033 +:10192000102223681A401AD12A706368049800991B +:10193000059EB047019B22681B68910607D4D1071A +:1019400005D501991A1D0A601B68188004E00199E9 +:101950001A1D0A601B681860E3680133E360002009 +:10196000009BED1A2369ED195D1925610BB0F0BDDF +:10197000681F0300391F020075200200FFFAFFFFF5 +:101980005AB00300FFF6FFFF38B5051C0020074CD6 +:101990002060081C111C1A1CF3F710FC431C03D117 +:1019A0002368002B00D02B6038BDC046D42F002008 +:1019B0000FB40B4B13B51C68002C05D0A369002B8A +:1019C00002D1201CFFF798F905AB201CA168049AEE +:1019D0000193FFF759FC16BC08BC04B01847C04679 +:1019E000F000002070B5051C0E1C141C002804D04B +:1019F0008369002B01D1FFF77FF9154B9C4201D180 +:101A00006C6808E0134B9C4201D1AC6803E0124BB8 +:101A10009C4200D1EC68A368013BA360002B10DA64 +:101A2000A269934207DB23681E70236819780A298C +:101A30000AD1281C01E0281C311C221C00F0DAFB12 +:101A400005E023681E7023685A1C2260187870BD58 +:101A5000041F0300241F0300441F030070B5051C6E +:101A60000E1C002804D08369002B01D1FFF744F934 +:101A7000AB69AC68002B02D1281CFFF73DF9324B53 +:101A80009C4201D16C6808E0304B9C4201D1AC68AB +:101A900003E02F4B9C4200D1EC68A3891B0702D5C1 +:101AA0002369002B19D1281C211C00F00FFC0028F1 +:101AB00013D00120404245E03178002B1BDAA269A7 +:101AC000934211DA221C281C00F094FB01304242A0 +:101AD0004241D0B20028ECD10136A3683278013BF4 +:101AE000A360002AE8D10CE02368197023681978F4 +:101AF0000A2903D1E6E723681970236801332360BC +:101B0000EAE7002B17DAA269934208DB0A2322686E +:101B10001370236819780A2911D1281C01E0281CA8 +:101B20000A21221C00F066FB013042424241D0B241 +:101B3000002806D0BDE70A2322681370236801330A +:101B400023600A2070BDC046041F0300241F030049 +:101B5000441F030008B5034B011C1868FFF77EFF04 +:101B600008BDC046F0000020F8B5051C0C1C00287C +:101B700004D08369002B01D1FFF7BEF83D4B9C4296 +:101B800001D16C6808E03C4B9C4201D1AC6803E099 +:101B90003A4B9C4200D1EC680023A289636093B267 +:101BA000990663D459071AD4D90605D409232B60A2 +:101BB00037331A43A28159E0082633420AD0281C41 +:101BC000211CFEF7F5FF002850D1A389A060B34384 +:101BD000A381A0610422A3891343A38112E0616B56 +:101BE00000290FD0231C4433994202D0281CFFF750 +:101BF000ADFA0020236C60636360834202D0E36B24 +:101C0000236035E02369002B03D1281C211CFFF73A +:101C100031FAA789BEB2B3070FD00123A381184BB5 +:101C20001849186809F091FA0923A7813340092B54 +:101C300003D1281C211C09F0E3F92369281C1A1C74 +:101C40002360216A6369656AA847021C60600020FE +:101C500082420DDCA389824204D120221343A38156 +:101C6000013805E0402213436060A3810120404217 +:101C7000F8BDC046041F0300241F0300441F0300D7 +:101C8000641F03006DB3020038B5051C0C1C00284E +:101C900004D08369002B01D1FFF72EF80F4B9C4233 +:101CA00001D16C6808E00E4B9C4201D1AC6803E0A6 +:101CB0000C4B9C4200D1EC68281C211CFFF754FF00 +:101CC000002807D16368013B636023685A1C2260C7 +:101CD000187801E00120404238BDC046041F0300CF +:101CE000241F0300441F030038B50023064C051CC5 +:101CF000081C2360F3F75AFB431C03D12368002B15 +:101D000000D02B6038BDC046D42F0020F7B51E1C74 +:101D10003C4B041C1D680F1C0192002D05D0AB69C3 +:101D2000002B02D1281CFEF7E7FF374B9C4201D164 +:101D30006C6808E0354B9C4201D1AC6803E0344B41 +:101D40009C4200D1EC68019B022B58D8002E56DB38 +:101D5000281C211CFEF72CFF00236360A361A389CC +:101D60001B0603D5281C2169FFF7F0F98322A389FC +:101D70009343A381019B022B13D0002F25D1002E6A +:101D800001D18026F600301CFFF7CCF9071E18D1D0 +:101D90008020C000FFF7C6F9071E10D10120404285 +:101DA00000E000200222A3891343A3810023A36043 +:101DB000231C4733236023610123636121E08026D4 +:101DC000F6008022A3891343A381019B012B05D137 +:101DD000A389019A1A437342A281A3610D4B00208B +:101DE000AB62A289276027616661130709D50323C7 +:101DF0001A40534253415B421E40A66001E001205D +:101E00004042FEBDF0000020041F0300241F030019 +:101E1000441F0300A10C02000EB410B59DB002A92E +:101E2000029008610B48822488604861012040428A +:101E30001FABC881084804CBA400006801938C81C3 +:101E400000F062FB0023029A13701DB010BC08BCA6 +:101E500003B01847FFFFFF7FF00000200EB481237E +:101E600070B59DB002AC21AD9B0040CDA381029026 +:101E7000069009F0E3FA0B4B606063620023636332 +:101E8000A364013BE381084B6061211C1868321C8C +:101E90002B1C019500F02EFC1DB070BC08BC03B0DB +:101EA0001847C046FDB30200F000002038B50C1CF6 +:101EB0000E25495F00F096FD002803DB636D1B18BB +:101EC000636503E0A289024B1340A38138BDC0467D +:101ED000FFEFFFFFF8B51E1C8B89051C0C1C171C9F +:101EE000DB0505D50E23C95E0022022300F098FA17 +:101EF000A289054B281C1340A3813A1C0E23E15EE6 +:101F0000331C00F0CFF9F8BDFFEFFFFF38B50C1C14 +:101F10000E25495F00F084FAA389421C03D1054ACB +:101F20001340A38104E0802252011343A381606522 +:101F300038BDC046FFEFFFFFF0B51E1C444B87B015 +:101F40001B68059002930B1C039101921C78029A66 +:101F50005D1C121950780822104001D02B1CF5E7A7 +:101F60002D2C04D19D1C5C780123009304E000908B +:101F70002B2C01D15C789D1C002E02D0102E0AD192 +:101F800060E0302C5CD120222B789343582B52D127 +:101F900010266C780235009F311C7B1E9F412D4B13 +:101FA000FF18381CF7F7DEFD381C0491311CF7F7D9 +:101FB00053FD0022071C131C029909194978480790 +:101FC00001D5303C07E00320084017D03721012815 +:101FD00000D02031641AB44210DA511C0BD0BB423D +:101FE00007D802D1049A944203DC73430122E31818 +:101FF00001E0012252422C780135DDE7181C511C0A +:102000000BD10098059A431E9841124BC018222309 +:102010001360019B002B0AD117E00099002900D022 +:102020005842019B002B10D0039B002A00D06B1E4E +:10203000019A136009E03024002EACD10826AAE7EB +:102040000A26A8E7302CA6D19DE707B0F0BDC04610 +:10205000F4000020FFFFFF7F38B5051C0C1C131C8B +:10206000034A291C1068221CFFF766FF38BDC046D2 +:10207000F0000020F0B51E1C3E4B87B01B68171CFB +:1020800002930B1C059004911C78029A5D1C121996 +:10209000517808220A4001D02B1CF5E72D2C04D1E1 +:1020A0009D1C5C780123019304E001922B2C01D14B +:1020B0005C789D1C002E02D0102E0AD154E0302CEA +:1020C00050D120222B789343582B46D110266C7880 +:1020D00002350120311C4042F7F7BEFC039001207D +:1020E000311C4042F7F73EFD00228C46131C02993A +:1020F00009194978480701D5303C07E0032008401A +:1021000017D03721012800D02031641AB44210DAE8 +:10211000511C0BD0039A934206D801D1644503DCCD +:1021200073430122E31801E0012252422C78013569 +:10213000DDE7181C511C04D122230599101C0B60EB +:1021400003E00199002900D05842002F0FD0049BD2 +:10215000002A00D06B1E3B6009E03024002EB8D16D +:102160000826B6E70A26B4E7302CB2D1A9E707B0B3 +:10217000F0BDC046F40000200B1CF7B54D6B443396 +:102180000C1C9D421BD18026F600311CFFF724F861 +:10219000002802D10120404225E0231C6063A66391 +:1021A00046331A78104BC254231C45331A780F4B10 +:1021B000C2542A780E4BC254C018206012E08E6BB5 +:1021C000291C73001A1C019309F08BF9051EE1D03C +:1021D0008719381C291C321C09F00EF8019B276056 +:1021E0006563A3630020FEBDFF030000FE03000043 +:1021F000FD03000070B5051C0E1C141C002804D043 +:102200008369002B01D1FEF777FD234B9C4201D15E +:102210006C6808E0214B9C4201D1AC6803E0204B84 +:102220009C4200D1EC68A369A360A3891B070AD56F +:102230002369002B07D023682269F6B2981A6369D4 +:1022400098420FDB08E0281C211C00F03FF8002812 +:10225000F1D0012040421DE0281C211CFEF7A8FC03 +:102260000028F6D1A3680130013BA36023685A1C03 +:1022700022601E706369984205D0A389301CDB0779 +:1022800008D50A2E06D1281C211CFEF791FC002837 +:10229000DFD1301C70BDC046041F0300241F0300A3 +:1022A000441F030038B5051C0020074C2060081CA3 +:1022B000111C1A1CF3F704F8431C03D12368002BEC +:1022C00000D02B6038BDC046D42F0020354B70B5F0 +:1022D0001D68061C0C1C002D05D0AB69002B02D11B +:1022E000281CFEF709FD304B9C4201D16C6808E0C8 +:1022F0002E4B9C4201D1AC6803E02D4B9C4200D197 +:10230000EC68A3899AB2110723D4D10607D4092215 +:102310000120326037321343A381404240E053072B +:1023200013D5616B002908D0231C4433994202D095 +:10233000301CFEF70BFF002363632422A389934321 +:10234000A38100236360236923600822A3891343C8 +:10235000A3812369002B0BD1A023A2899B001340EA +:1023600080229200934203D0301C211CFEF782FE93 +:102370000123A289134005D00023A36063695B4257 +:10238000A36103E0910700D46369A360002023697F +:10239000834205D1130603D540231A43A281013895 +:1023A00070BDC046F0000020041F0300241F03007E +:1023B000441F030038B50023064C051C081C23608D +:1023C000F2F768FF431C03D12368002B00D02B6079 +:1023D00038BDC046D42F002038B50023064C051C5C +:1023E000081C111C236006F002FC431C03D1236867 +:1023F000002B00D02B6038BDD42F002038B500232F +:10240000064C051C081C2360F2F7A8FF431C03D1EF +:102410002368002B00D02B6038BDC046D42F00208D +:1024200038B5051C0020074C2060081C111C1A1C24 +:10243000F2F7A8FF431C03D12368002B00D02B60C8 +:1024400038BDC046D42F0020F0B58E6885B0071C7B +:102450000C1C03920193B34245D390238A89DB007D +:102460001A423DD003250969236801985B1A02933B +:1024700063695D43EB0F5D19029B6D1001331B18FF +:102480009D4200D21D1C381C53050FD5291CFEF798 +:10249000A3FE061E13D0029A216908F0ADFEA289A0 +:1024A000184B134080221343A38111E02A1C09F02A +:1024B00018F8061E0CD1381C2169FEF747FE0C23C4 +:1024C000402201203B60A38940421343A38117E0CF +:1024D000029B2661F61826606561019EED1AA560D3 +:1024E000019BB34200D2019E321C2068039908F080 +:1024F0008CFE0020A3689B1BA36023689E192660A6 +:1025000005B0F0BD7FFBFFFFF0B59FB002900593D3 +:102510008B890E1C171C1B0610D50B69002B0DD1C7 +:102520004021FEF759FE30603061002804D10C23B1 +:10253000029A01381360D0E040237361002306AD96 +:102540006B6120336B761033AB763C1C2378002B09 +:1025500003D1E31B049312D003E0252BF9D00134FF +:10256000F4E7049B0298311C3A1CFFF76DFF431CF3 +:1025700000D1ACE06A69049B944663446B612378A4 +:10258000002B00D1A3E00122002352426A6002A97D +:102590005432521801342B60EB60AB601370AB65A2 +:1025A0004F4F2178381C052208F00CFE002808D077 +:1025B000C01B01278740381C2B6801341843286052 +:1025C000EEE72B68DA0604D55322202102A8121860 +:1025D00011701A0704D553222B2102A8121811706A +:1025E00022782A2A01D0099B0EE0059A111D126853 +:1025F0000591002A01DB099204E05242EA600222BE +:1026000013432B60013409E02278303A092A04D8B8 +:102610000A214B4301349B18F6E7099323782E2BAC +:1026200018D163782A2B09D1059B02341A1D1B6827 +:102630000592002B0DDA01235B420AE000230134EE +:102640002278303A092A04D80A214B4301349B18D6 +:10265000F6E70793234F2178381C032208F0B2FDD8 +:10266000002807D0C01B40278740381C2B68013446 +:102670001843286021781C480622671C297608F038 +:10268000A1FD002812D0194B002B06D10722059B73 +:10269000073393430833059314E005AB0093029886 +:1026A000291C321C124B00E000BF07E005AB009371 +:1026B0000298291C321C0E4BFEF7F6FE0390039B7A +:1026C000013304D06B69039A9B186B613DE7B389B2 +:1026D0000B985B0601D5012040421FB0F0BDC046FB +:1026E00027B003002DB0030031B00300000000004C +:1026F00049240200F0B5B54C071CA5440393002300 +:1027000086204893499305AB4A93BE2340000D1C95 +:10271000019202A9AE4A5B000918CA50AD4A02A94B +:1027200004330918CA50019B1C78002C00D144E1E5 +:10273000A94E33681B195A780823134023D06B68BD +:10274000002B10DD2B6831681A788A18527812072E +:1027500015D5499A01330292013249926A682B6079 +:10276000013A6A60EBE78621C023490002AA5218A9 +:102770005B00D358381C291C98470028E2D0019EE2 +:1027800001360196CFE7019A561C252C4FD147936D +:10279000459353782A2B02D11A3B45930136341CBA +:1027A00021780B1C303B092B09D8479B013401933E +:1027B0000A23019A5343303B59184791F0E7874E5B +:1027C0000322301C08F0FEFC002808D0801B0126E4 +:1027D0008640301C459B0134184301934590661C8C +:1027E0002478672C10D8652C00D384E05B2C5AD059 +:1027F00005D8002C00D1E2E0252C18D07DE0632C18 +:102800005FD0642C46D078E0702C34D007D86E2C82 +:102810005FD041D8692C70D10023469341E0752CDC +:1028200038D0782C2DD0732C67D1022347E06B6809 +:10283000002B0EDD2B681A78A24200D0BDE00133D8 +:102840006A682B60499B013A019301336A6049939E +:1028500097E78621C023490002AA52185B00D3588B +:10286000381C291C98470028E4D04898002800D03C +:102870009FE00138A5E0459B01932023019A134373 +:102880004593459B01938023019A9B0013434593F5 +:10289000102302E00A2300E00823469304236E2C51 +:1028A0000DDC03230BE0311C05A808F06BFD459BF4 +:1028B000061C01934023019A1343459301234B9334 +:1028C0001FE0459B01934023019A13434593002346 +:1028D000F5E74599CB0600D553E7039B499AC8070E +:1028E00004D5191D03911B681A804AE7191D03912D +:1028F0001B681A6045E70523E1E703234B93073381 +:1029000046936B68002B04DD459B01935B0618D54D +:102910001FE08621C023490002AA52185B00D35849 +:10292000381C291C98470028EED09EE7499A01924E +:10293000013249926A68013A6A60002A13DD013364 +:102940002B602B6824491A7809688A185278120774 +:10295000ECD44B9B022B13DC381C45A92A1C03AB7F +:10296000FEF7BAFE1FE08621C023490002AA5218D2 +:102970005B00D358381C291C98470028E1D074E725 +:10298000042B06DC381C45A92A1C03ABFEF702FF0A +:1029900009E0134B002B00D1F3E6381C45A92A1C93 +:1029A00003AB00E000BF012807D0022800D0E8E612 +:1029B0005BE7AB895B0604D501E0489801E00120A4 +:1029C0004042A7239B009D44F0BDC04664FDFFFF2D +:1029D0002FB50200A9B50200F40000202DB00300BD +:1029E0000000000038B5051C0020074C2060081CC2 +:1029F000111C1A1CF2F78EFC431C03D12368002B18 +:102A000000D02B6038BDC046D42F002010B5041C68 +:102A100008F014FD011C201CDDF7A6FC10BD38B524 +:102A2000051C03300C1C00F013FE2060457020686C +:102A3000023038BDF8B54578871C041C291C381CA9 +:102A4000DDF75CFC061E0BD1291C381CDDF738FCB9 +:102A500065192070AE70201CDDF70CFC061C02E02E +:102A6000201C00F01CFE301CF8BD08B5DDF7F0FBA3 +:102A7000007808BD08B5DDF7EBFB407808BD08B568 +:102A8000DDF7E6FB023008BD10B50C1CDDF7E0FBFE +:102A900043780230236010BD436870B5CC180368DA +:102AA00001269C4218D9067BB607F60F13D10723DF +:102AB00040349C430834051C211C806800F0DEFD76 +:102AC0000122002803D12B7B13432B7304E02C60DD +:102AD000A860161C00E00026301C70BD037B70B59A +:102AE000041C0E1C151CDB0703D5237B9B0706D497 +:102AF00014E0111CFFF7D0FF002805D1F5E763684B +:102B00002568AB420AD2ED1AA3686268311C981896 +:102B10002A1C08F07AFB63685D19656070BD10B50A +:102B2000041C002900D10131002321606360081CCE +:102B300000F08EFD0122A060237B002801D1134309 +:102B400002E0934302229343237310BD38B50D1C5A +:102B5000041C0131FFF7E3FF656038BD002382608C +:102B600001224360037B0160934392181343037374 +:102B70007047037B10B5041C9B0702D4806800F0EB +:102B80008EFD0023A36010BD002301224360037B60 +:102B9000934303737047007BC007C00FC0B27047F8 +:102BA000027B0023D20700D48368181C7047027B85 +:102BB0000023D20700D44368181C704738B5037B44 +:102BC000041C00209B0711D423680D1CA068C918A1 +:102BD00000F054FD002804D10122237B134323730A +:102BE00004E02368A060ED182560C01838BD38B532 +:102BF000037BDB0701D500200AE00D1C041CFFF756 +:102C00004BFF0028F7D06368A068E9186160C0181E +:102C100038BD38B5037BDB07DD0F002B01D000206A +:102C200009E00121041CFFF737FF0028F7D0A36853 +:102C300062689D54A06838BD10B50C1C0121FFF7D7 +:102C4000D6FF002800D0047010BD38B5051C081C44 +:102C50000C1C08F0F3FB211C021C281CFFF73EFF94 +:102C600038BDF8B5037BDB0701D5002019E04768C4 +:102C70000C1EBC4200D93C1C161C051C002A0ED0A0 +:102C8000111CFFF709FF0028EFD0A968A019081848 +:102C90003A1B091908F0B9FA6B689E196E60A868AA +:102CA0000019F8BD10B5141C0122FFF7DAFF002847 +:102CB00000D0047010BD10B5141C0122FFF7D1FF25 +:102CC000002800D0047010BD037BDB07DB0FDBB2F4 +:102CD000002B06D14268914201D9436001E0521AAB +:102CE00042607047037B70B5DB0714D44368994298 +:102CF00011D28E189E4201D341600CE0151C0A1CB3 +:102D0000041C816888189A1A521B891908F07DFAE8 +:102D100063685D1B656070BD38B5041C0D1C002226 +:102D200001794020E6F7CEFDE3682B60A3685843A5 +:102D3000686023790020AB6038BD416838B5C2684F +:102D40008C68031C0020A24207D29C68551C08799D +:102D5000A218C968DD60E6F7D7FD38BD7FB500254C +:102D60001C1C081C02230E1C0095111C0122DDF7FF +:102D70003BFC206803A9E9F70FFD0078012E03D181 +:102D8000291CDDF799FD02E06168DDF765FE04B0FE +:102D900070BD826810B5C3689468011C0020A3420E +:102DA00005D2D268980082580133101CCB6010BD48 +:102DB000F0B585B001900E1C171C0293E0F758FD8A +:102DC000019BB34254D2019B1C1F002F02D13368D8 +:102DD000039304E0381C316801F0D4FD0390351CE6 +:102DE0000434AC420FD2002F01D1216804E02168E5 +:102DF000381C01F0C7FD011C1920039AE5F746FABB +:102E0000029B9842ECD0043DAC4214D2002F01D179 +:102E10002A6804E0381C296801F0B4FD021C19205E +:102E20000399E5F733FA029B9842ECD023682A68AD +:102E300022602B60D4E72368326822603360019BF4 +:102E4000EA1A331B9B10013B921004349A4207DAB2 +:102E50000198291C3A1C029BFFF7AAFF0194AFE7D7 +:102E6000311C201C3A1C029BFFF7A2FF2E1CA7E777 +:102E700005B0F0BD08B50B1C0968021CC86889685C +:102E8000E8F774FA08BD38B5041C081CE5F770F9BA +:102E9000051C281CE5F7BAF9011C201C002902D0EA +:102EA000DDF7E8FEF5E738BD08B5031C0A1CC0686D +:102EB000996802F021FB08BD38B5051C102000F010 +:102EC000C7FB041C291CDEF729F8201C38BD73B58C +:102ED00000240D1C1E1C081C0094111C0123221C24 +:102EE000DDF782FBA54203D1281CFFF7E5FF05E0D3 +:102EF000201CFFF7E1FF3168FFF7C5FF76BD38B54D +:102F0000041C0D1CFFF7D8FF0023A4009D4206D02F +:102F1000A34204D0E958C268D1500433F8E738BD61 +:102F200008B5031C8068D968FFF7E9FF08BD83680E +:102F30000B60C368136070478160704738B5041C2C +:102F40000B1C151CA1681A1C00680023DEF77AFF11 +:102F5000E3688000C55038BD70B5146801291DD9DB +:102F60001025211C0378A94316D0082C08D1302B3A +:102F70001BD1202243781A43031C6F2A27D109E072 +:102F8000022C0BD1302B10D1202243781A43031C82 +:102F9000622A1CD1831C1AE0302B08D0002C04D1EB +:102FA0000A23136001E0002C09D0031C0FE0202647 +:102FB0004178831C31437829F5D1156007E06F29EA +:102FC00001D1673902E06229EAD160391160181A2B +:102FD00070BD10B57F244018431E14401C700C1A9D +:102FE0001C19002C05DD8024D2096442013B1443E6 +:102FF000F4E710BD30B50268051C00207F2411786D +:10300000C3010C4049B2E01801320029F6DB2A6006 +:1030100030BD13B5421C019202780C1C031C082A17 +:1030200010D8101CF6F7FAFC1D100E0508080E0E3D +:103030000A000533019314E00333FBE701A8FFF70F +:10304000D9FF0EE0192A01D80233F3E701A8FFF7F0 +:10305000D1FF01A8FFF7CEFF002C02D0019B18186A +:103060000190019816BD10B50C1C0221FFF7BFFDA1 +:10307000230A0A330370447010BDF8B50478002C9D +:103080002AD11E1C0D1C83684168171C041C8B422E +:103090000FD30C235943C068C031012200F0FBFA62 +:1030A000002802D10123237016E06368E06010332A +:1030B0006360A368E1685A1CA2600C225343CB18DA +:1030C0001A682D02290A150E2D060D431D603A7847 +:1030D0005E60DA70069A9A60F8BD10B50C1C052186 +:1030E000FFF785FD03230370431C05301C7001337B +:1030F00024128342FAD110BD70B5041C161C0025A1 +:1031000083690135DB09FCD16B1C081C191CFFF716 +:103110006EFD08230370291C0130A269FFF759FFD7 +:103120006569A369AB4206D30835A900E06900F0E0 +:10313000A5FA6561E061A369E269591C9B00A16180 +:103140009E5070BDF0B5046A89B0231C40330393D0 +:103150001D78071C0E1C082D08D1A16CE06CDDF752 +:1031600003F9011C301CFFF77EFF69E0092D0DD12A +:103170000022E06CA16C231CE0F7C6FB021CC30715 +:103180000ED54110301CFFF7A8FF59E00A2D0CD1D5 +:1031900000940122E06CA16C0023E0F741FC021CCA +:1031A000381C311CFFF7A8FF4AE02B1C0B3B012BFE +:1031B0003FD804A8A16CFFF7B2FC04A8E16CA26C94 +:1031C000FFF78CFC201C02F0DFF8039B1B78AB425E +:1031D000F3D00B3B0020012B36D9059906980A291C +:1031E00002D8DDF7C1F801E0DDF788F8041E0DD044 +:1031F0000B3D6B425D410523301C03215D1BFFF736 +:10320000F6FC4470240A057084700EE00698059957 +:103210000B2D03D1221CE8F707FE01E0E8F71CFEA6 +:10322000021C311C381CFFF767FF04A8FFF7A1FC44 +:1032300009E0081C0221FFF7DAFC01234570037046 +:10324000201C02F0A1F8012009B0F0BD13B5013037 +:10325000019001A80C1CFFF7CDFE2060019816BD5F +:10326000002310B50B60C2185278DC00A2400C6835 +:10327000013322430A60042BF5D1053010BD07B598 +:1032800001A9FFF7EDFF01980EBD10B502780023EC +:10329000032A06D10C1CFFF7F2FF0123400018435C +:1032A0002060181C10BD38B50D1C0024A84204D2A3 +:1032B00001210134FFF7ADFEF8E7201C38BD08B549 +:1032C0000121FFF7A6FE08BD08B50021FFF7A1FE0A +:1032D00008BD13B50130019001A80C1CFFF78AFE50 +:1032E00001A8FFF787FE019B18182060181C16BD67 +:1032F00013B5041C00680378002B02D10130206054 +:103300000DE0192B02D91A318B4203D00121FFF7AE +:1033100080FE04E001A9FFF7DCFF2060019816BDE4 +:1033200037B51C1C431C0193037801A81A3B0B60A2 +:10333000151CFFF75FFE286001A8FFF75BFE019BED +:1033400018182060181C3EBD07B501A9FFF7C1FF82 +:10335000019BC01A43425841C0B20EBD10B58068EF +:10336000002804D0446800F09AF9201CF8E710BD4A +:1033700073B5051C01A98068E8F794FDEB68019A14 +:10338000061C002093420CD2F618301C00F042FDBF +:10339000841B211C301C0122E8F746FDEB681C1938 +:1033A000EC6076BD73B51D1C061C0023081C111CA7 +:1033B00002220093131CDDF717F90C2000F048F9E6 +:1033C00006602B68041C43606868E4F7D1FEA060C7 +:1033D000201C76BD704708B5DEF772FB4068FFF72A +:1033E0004EFB08BD08B5830702D000F083FC07E060 +:1033F000002803DB01234000184301E000F095FCA6 +:1034000008BD70B5041C0E1C151CDEF759FBC36A01 +:10341000181E06D0201C311C2A1C984743425841D4 +:10342000C0B270BD022803D149000138084300E052 +:103430000020704708B5DEF74FFFF0F72DFDDEF7EF +:1034400089FF0028F9DB08BD08B5406902F092FB4E +:1034500008BD08B5406902F086FB08BD038870B559 +:103460000469032B09D10023C568AB4205D09E0037 +:10347000A659964208D00133F7E78B004069E25025 +:1034800002F069FB012000E0002070BD38B50C1C83 +:1034900089B2051C018042608360032905D1C3689D +:1034A00000219A00006907F0C4FE211F4B424B41E6 +:1034B0006869591C02F031FB68690021EAF724FAB7 +:1034C00038BDF0B5041C85B040690F1C02F079FBD3 +:1034D000606902F03BFB2388042B15D1606902F080 +:1034E00038FB6368051C60695E6902F030FB0022EE +:1034F00061680092498B031C019102920397301C72 +:1035000005212A1CDFF718FC05B0F0BD38B5051CF5 +:10351000182000F09DF8041CC560A80000F098F881 +:103520002061281C02F0DEFA6061201C38BD10B555 +:10353000041C006900F0B3F86069002102F0DFFAB2 +:10354000201C00F0ACF810BD08B5102000F092F877 +:10355000072203789343063A1343037008BD0378A8 +:1035600010B55B07041C5B0F052B06D0081CA36875 +:10357000111C6268E5F7C4FC06E003686168D802C4 +:10358000400DE268E5F706FD23889B0601D5E2F7CA +:1035900047FA10BD38B5141C802252000A400D1C99 +:1035A000111E01D021686268FFF7D9FF0223EA09E2 +:1035B0001A409A40E9B2A218E8F726FB38BD8368A2 +:1035C000C268934203D25A1C8260187801E001203D +:1035D00040427047036810B5041C002B02D04068BD +:1035E00000F05DF8201C00F05AF810BDFC30C160FE +:1035F0000261704738B5041C012500236A1ED2B24F +:103600009200A218FF32507C7F2806D102339B0023 +:103610001855201CE4F712FA38BD7E280AD17F2203 +:1036200002339B001A55201CE4F708FA00230135E9 +:10363000EDB2E3E70028FAD0990061180872907C97 +:1036400001334872D07CDBB28872127DCA72EEE719 +:1036500010B50021041CE3F709FC002804D1002C5C +:1036600002D0201CE5F71AFB10BD08B50021E3F7D6 +:10367000FDFB08BD08B5FFF7EBFF08BD10B5012243 +:103680000C1CE3F7F3FC002804D1002C02D0201C12 +:10369000E5F704FB10BD08B5E3F7E8FC08BD08B585 +:1036A000E3F768FC08BD00B50B7905280FD8F6F7DD +:1036B000B5F9030E05050709081C09E05B0003E0E6 +:1036C000584200E0D84343000120184300E00020A6 +:1036D00000BD08B50123097949001943E4F7D6FD77 +:1036E00008BDF0B585B000AF7A6052003B6053185A +:1036F000061CB960FB605D1C042B09D86A46AB0050 +:103700000E33DB08DB00D31A9D4600256C4605E02E +:10371000A800FFF7AAFF041EF0D0051C201CB36808 +:10372000396808C0FB689A0007F066FDB968231C79 +:10373000013170687A68E4F721FC041C002D02D086 +:10374000281CFFF7ACFF201CBD4605B0F0BD38B506 +:103750008368041C5D1C85604068DEF711FCDEF7A1 +:1037600099FA854201DB0023A3600121A368606808 +:103770005B0019430422DEF719FC38BD0B6870B5F5 +:103780008668DC00B34209D2C26801331219156899 +:10379000002D01D0042D03D10834F3E7002200E00E +:1037A0000B60101C70BD011C08B50C318068FFF760 +:1037B000E5FF031E00D0186808BD1FB5011C041CDE +:1037C0000C318068FFF7DAFF031E11D02279012A3D +:1037D0000BD0022A0BD01A6802A902925B68022061 +:1037E00001930393E6F76EFA02E0186800E0586868 +:1037F00004B010BD0B6810B504334C6800220328D8 +:1038000000D18A68181C211C0123E0F727FB10BD9A +:103810000B6810B504334C680022032800D18A6875 +:10382000181C211C0223E0F719FB10BD0B6810B512 +:1038300004334C680022032800D18A68181C211C1C +:103840000023E0F70BFB10BD10B50C7A031C002021 +:10385000012C05D11F2B03D1181C4968E0F748FB48 +:1038600010BD38B5051C1020FFF7F2FE041C291C02 +:10387000E0F730FC201C38BD38B5051C8068FFF728 +:10388000F0FF2B68416803606B68041CDB08DA00FA +:1038900007230B401343436001232A791A40111C6C +:1038A00002799A430A4302218A4302712A79CA4063 +:1038B00013409A00037949188B4313430371AB6893 +:1038C000E968DA00C06807F097FC201C38BD406842 +:1038D000C008704738B5151C041C01220430E1F7FC +:1038E000DFF84560201C38BD10B5041C00220223FF +:1038F0000430E0F7B3FA201C10BD04307047802379 +:10390000F0B55B0587B01D69E0F756FC037805AF9D +:10391000FD2B0BD1E0F750FC03783B70E0F74CFC3B +:10392000041CE0F755FC019500901BE0E0F750FC0B +:1039300003783B70E0F74CFC041CE0F73DFC6B4265 +:10394000009001930EE03378002B05D0E801201899 +:10395000311C8022E1F712FD01358036039B9D4228 +:10396000F1D1029C009B9C4210D0019B201CE318CB +:10397000029300F021FA201C00F01EFA80235B0560 +:103980001B69029EDB0903930025E7E7201C00F07A +:1039900013FA201C391C0122E1F7F0FCE0F782FC4D +:1039A00007B0F0BD38B5051C07F048FD0022011C2A +:1039B000131C281CE0F782FD041E05D0281CFFF70D +:1039C00025F8211CE0F704FF38BDF0B5071C85B0D1 +:1039D0000E1C00680968F9F751FF3B68041C356844 +:1039E000181C211C0393F6F787FF291CF6F760FCCF +:1039F00000210290201CF6F7FBF9002805D00024D6 +:103A0000002D24DA8024240621E001236A460021C7 +:103A10001370201CF6F7F2F9431E9841009B4042B8 +:103A200003400021281C0093F6F7E8F9431E984153 +:103A30006B461B7883420AD0201C291CF6F7BCFA7F +:103A4000FE21041C89050298F6F756FF02900298A1 +:103A50000021F6F7CDF9002809D0291C0398F6F7C4 +:103A600027FC0025002816DA80252D0613E0029891 +:103A7000F9F7BAFB051C291C0298F6F73DFFFC215B +:103A80008905F6F7CFF9002805D0FE21281C890505 +:103A9000F6F792FA051C3D60346005B0F0BD08B53C +:103AA000FF23DB05C91803239943E0F72DFF08BD69 +:103AB00010B5041C4160002901D1816003E0C800F9 +:103AC000FFF7D8FDA060072322681340236001237D +:103AD000237010BD072310B5046841602340C9005E +:103AE00019430723016019430170826010BD0378F8 +:103AF00010B5041C9B0702D48068FFF7D0FD072394 +:103B0000216800220B40012123600B4349188B439D +:103B100062602370A26010BD002310B5041C016018 +:103B200043608800FFF7A6FDA06010BDF0B50368F4 +:103B300087B0041C0E1C0292002B04D1131CDB075F +:103B40005CD5E1F7E7F8311C0220E4F7ADF943104A +:103B5000181C21680593F6F705F800270D1C049141 +:103B6000AB000393039AA3689B181A680192002A7A +:103B700006D1029AD20741D5002F2FD11F1C2DE06C +:103B8000019A042A03D1002F1BD11F1C19E00198B0 +:103B9000311CDEF72DF8002813D0029B9B070ED5B1 +:103BA0006368681C013B63602168F5F7DBFFA6686A +:103BB00089008B59002B00D00423039AB35001983D +:103BC0001DE0681C2168F5F7CDFF049B0D1E9D428A +:103BD000C6D1029BDB0711D5002F05D06368301CCE +:103BE000013363603E600AE0201CE1F793F805981A +:103BF0002168F5F7B7FF0D1C0491B1E7002007B06D +:103C0000F0BD002370B501688B4216D086689D0018 +:103C100075192C680133002CF6D0042CF4D04268BE +:103C2000013A4260181CF5F79DFF89008B59002B63 +:103C300000D004232B60201C00E0002070BD10B5D4 +:103C4000041C8068FFF72BFD002323606360A360E2 +:103C500010BDF0B587B004920EAA12780F1C059221 +:103C60000FAA12781C1D0392039B061C0C99201CA2 +:103C70000D9AEAF7CBF83B68051E9D4203D9FFF782 +:103C8000E7FC30603D603568039B01950093201C84 +:103C9000059B0C990D9A02F01BFE049B1860281CD2 +:103CA00007B0F0BD08B5043002F0B5FD08BD012233 +:103CB000031C104004D058100AD4431E984109E058 +:103CC0009968002906D0187910404042104301E05D +:103CD000012040427047D3B50F1C061CE1F76CF879 +:103CE0000123041C0093321C3B1C043002F086F9B3 +:103CF000201CD6BD08B543001A1C424002D4012046 +:103D0000184302E0C117FFF7E6FF08BDD3B50F1C4B +:103D1000061CE1F751F80023041C0093321C3B1CE5 +:103D2000043002F06BF9201CD6BD08B5830F03D117 +:103D300040000133184302E00021FFF7E7FF08BD10 +:103D4000F0B585B0041C0F1C161C0393E1F734F882 +:103D5000039B051C00932168331C3A1C043002F0BD +:103D6000D9F9236818182060281C05B0F0BD08B5E3 +:103D7000C30701D5401002E0043002F037FD08BD52 +:103D800008B5C30703D54010F6F754FF02E004302E +:103D900002F07FFD08BD08B50220E7F717FA08BD5D +:103DA00038B5051C0C1CE7F729F9281C211CF5F770 +:103DB00013FAE7F713F938BD10B5041CE7F71EF93D +:103DC000201CF5F7E9F9E7F709F910BD80235B0539 +:103DD0001B69013B184043425841C0B2704710B5BF +:103DE00003787F22191C914312D0134040221342C2 +:103DF00002D093435208FAE7421C10783F21041C7A +:103E00008C43802C04D19B01014001320B43F4E729 +:103E1000181C10BD3F22013003789343802BF9D04A +:103E20007047002210B5814208D93F2401390B7830 +:103E3000A343803B5C1EA341D218F4E7101C10BDC5 +:103E4000021C4118002010B58A4208D23F24137882 +:103E50000132A343803B5C1EA341C018F4E710BDB0 +:103E600010B5041CE1F70EFF031C201C002B00D032 +:103E7000203010BD10B5041CE1F710FF031C201CFE +:103E8000002B00D0203810BD3038092802D920235B +:103E9000984307387047002210B543889A420CDADD +:103EA00003230021534344680132E1544468E41879 +:103EB00061704468E3189970EFE7E1F725FF10BDE2 +:103EC00070B5468804AC257801248E420AD90234A4 +:103ED0006143446864186270002442685354436824 +:103EE00059188D70201C70BD4368F7B5051C9800EB +:103EF000FFF7AEFB0026071C69688E4210D2B300A4 +:103F00000193EB18D868E4F781F9041E04D1381C3A +:103F1000FFF7C5FB201C08E0019B0136F850EBE7DA +:103F2000A86800223B1CE4F729F8FEBD1FB54868CD +:103F3000012201A9DEF76EF80020029B019A013BE5 +:103F4000D318934204D3197800020843013BF8E7E1 +:103F5000FFF7EBFE05B000BD002803DAFF23DB0509 +:103F6000C01801E0C00DC0059C23DB0583428041E1 +:103F700040427047102230B58DB00692063A00924A +:103F800000220B1C051C01920292039206A907AAAB +:103F900008AC05A80594E2F7CDF8011C281C02F036 +:103FA0003CFD0598A04201D0FFF779FB0DB030BD74 +:103FB00007B512216A46E4F75FF80098431E98415E +:103FC000C0B20EBD406870474160704773B5141CA5 +:103FD0006A46551D0B1C291C7F22013D22402A7078 +:103FE000E409F9D16E46491B9847731B04339C4280 +:103FF00006D080212A5D49420A4302550134F6E782 +:10400000327901AB5D1B425573BD4379012B09D059 +:104010008368C918C36881605A8C914200DD598455 +:104020000023837170474279036A032A02D8591822 +:10403000016203E0026BC9180162D018704710B525 +:104040000C1C0121FFF7EFFF047010BD10B5427981 +:10405000836A032A02D85B18836205E0426A046B14 +:104060009A18CB188362A01810BD10B50C1C012142 +:10407000FFF7ECFF047010BD38B5151C041C0121BE +:10408000FFF7C3FF2A1C201C1B21E2F7B1FB38BD40 +:1040900038B50D1C041C0121FFF7B7FF2A1C201C9A +:1040A0001C21E2F7A5FB38BD38B50D1C041C01210D +:1040B000FFF7ABFF2A1C201C1D21E2F799FB38BD3E +:1040C000012138B5151C041C4942FFF79EFF2A1C2C +:1040D000201C2321E2F78CFB38BD38B50D1C0121D3 +:1040E000041C4942FFF791FF2A1C201C2421E2F7FF +:1040F0007FFB38BD38B50D1C0121041C4942FFF778 +:1041000084FF2A1C201C2521E2F772FB38BD08B56C +:104110002821E2F76DFB08BD08B52921E2F768FB0D +:1041200008BD38B50D1C041C0021FFF76EFF2A1CCA +:10413000201C2A21E2F75CFB38BD38B50D1C041C9D +:104140000021FFF762FF2A1C201C2B21E2F750FB05 +:1041500038BD38B50121141C051CFFF756FF0F2C84 +:1041600006D8211C5039C9B2281CFFF77EFF04E095 +:10417000281C1A21221CE2F73BFB38BD012138B56F +:104180004942141C051CFFF740FF0F2C06D8211CC8 +:104190004039C9B2281CFFF768FF04E0281C22211F +:1041A000221CE2F725FB38BD38B5041C151CFFF7AF +:1041B0005CFF0322A36A201C03339343A362042100 +:1041C000FFF744FF056038BD38B543790D1C002466 +:1041D000032B06D9836A033CE41AC3699200D358BF +:1041E000E4180321FFF732FF4470240A057084703D +:1041F00038BDF8B5069C151C079AC91A1F1C630028 +:10420000061C2402C91A002A04D00239FFF7FDFE59 +:10421000013501E0FFF7F9FE3A1CE9B2301C2243F8 +:10422000E2F7E6FAF8BD08B53820FFF723FA08BD33 +:1042300010B5041C81618800FFF70AFAE06110BD27 +:1042400010B5041CC069FFF72AFA201CFFF727FAF3 +:1042500010BD8079431E9841C0B2704783685918D9 +:104260008160704738B5041C0D1C0021FFF7CDFE9E +:104270006379012B05D0032B03D8A26AE369AD0053 +:10428000EA5038BD38B50D1C0121041C4942FFF726 +:10429000BCFE2A1C201C6821E2F7AAFA38BD38B5FA +:1042A0000D1C041C0121FFF7B0FE2A1C201C6921F3 +:1042B000E2F79EFA38BD012110B5041C4942FFF710 +:1042C000A4FE201C6A21FFF7D0FE10BDF7B50D1C1F +:1042D0000121061CFFF799FE2B1C10333F2B06D83B +:1042E000291C8039C9B2301CFFF7BFFE33E014210E +:1042F000301CFFF7BAFE6B465C1D211C2A1C7F2771 +:10430000ED11013C3A406B1C2270012BF6D8231CA6 +:104310004020013504D1024208D1013C277005E05C +:10432000024203D00022013B013C1A706D46091B7A +:10433000301CFFF78BFE00232A1B0432934206D069 +:104340008026E15C76423143C1540133F6E72A7995 +:1043500001AB1C1B0255F7BD38B50D1C041C012117 +:10436000FFF753FE2A1C201C1621E2F741FA38BD44 +:1043700038B5041C0D1C0121FFF747FE201C172136 +:10438000FFF773FE0322A36A201C03339343A36247 +:104390000421FFF75BFE056038BD10B5041C012148 +:1043A000FFF733FE201C1821FFF75FFE10BD38B564 +:1043B0000D1C041C0021FFF728FE2A1C201C1E21B6 +:1043C000E2F716FA38BD38B50D1C041C0121FFF7C1 +:1043D0001CFE2A1C201C1F21E2F70AFA38BD10B56A +:1043E000041C0121FFF711FE201C2021FFF73DFED8 +:1043F00010BD012110B5041C4942FFF706FE201C28 +:104400002121FFF732FE10BD38B50D1C0221041C1E +:104410004942FFF7FAFD2A1C201C2621E2F7E8F9A1 +:1044200038BD032110B5041C4942FFF7EEFD201CE6 +:104430002721FFF71AFE10BD10B5041C0121FFF75C +:10444000E4FD201C3021FFF710FE10BD10B5041C48 +:104450000221FFF7DAFD201C3121FFF706FE10BD17 +:10446000012110B5041C4942FFF7CFFD201C322169 +:10447000FFF7FBFD10BD10B5041C0021FFF7C5FDC3 +:10448000201C3321FFF7F1FD10BD38B5041C0D1CB5 +:10449000FFF783FF201CFFF7EEFF291C201CFFF70E +:1044A000B3FF38BD10B5041C0021FFF7AEFD201C82 +:1044B0003421FFF7DAFD10BD10B5041CFFF76DFFC6 +:1044C000201CFFF7EFFF201CFFF7ABFF10BD38B536 +:1044D0000D1C041C0021FFF798FD2A1C201C35210F +:1044E000E2F794F938BD70B50E1C0121041C494255 +:1044F000151CFFF78AFD201C3621002E00D1372124 +:104500002A1CE2F783F970BD70B50E1C0121041C52 +:104510004942151CFFF779FD201C3821002E00D1DF +:1045200039212A1CE2F772F970BD38B50D1C041C44 +:104530000421FFF76AFD2A1C201C3D21FFF744FEE1 +:1045400038BD38B50D1C041C0021FFF75EFD2A1C88 +:10455000201C3F21FFF738FE38BD38B50D1C041C68 +:104560000021FFF752FD2A1C201C4021FFF72CFEE2 +:1045700038BD012110B5041C4942FFF746FD201C3F +:104580004121FFF772FD10BD10B5041C0021FFF79B +:104590003CFD201C4221FFF768FD10BD38B50D1C05 +:1045A000041C0121FFF731FD2A1C201C4321FFF7C9 +:1045B0000BFE38BD012108B54942FFF726FD08BDB5 +:1045C00010B5041C0021FFF720FD201C4421FFF73B +:1045D0004CFD10BD38B5041C0D1CFFF7F1FF201C6D +:1045E0000F21E2F73DFA291C201CFFF73BFE0421B6 +:1045F000201C4942FFF709FD201C3E21FFF735FD35 +:1046000038BD10B5041C0021FFF7FFFC201C45211C +:10461000FFF72BFD10BD38B50C1C0021051CFFF762 +:10462000F4FC211C3039281CC9B2FFF71EFD38BD2F +:1046300070B5051C0C1E222C05D00026232904D1A0 +:104640000136033C01E001261F240121281C4942B8 +:10465000FFF7DBFC211C2939C9B2281CFFF705FD37 +:10466000002E07D0281C0021FFF7CFFC281CD621E4 +:10467000FFF7FBFC70BD38B50C1C0121051C091BA4 +:10468000FFF7C3FC281C5021221CE2F7B1F838BD0B +:1046900038B50C1C0121051C091BFFF7B6FC281CB2 +:1046A0005121221CE2F7A4F838BD38B50D1C0121B8 +:1046B000041C4942FFF7A9FC2A1C201C5221E2F7E6 +:1046C00097F838BD38B50D1C041C0121FFF79DFC7F +:1046D0002A1C201C5321E2F78BF838BD022110B5AB +:1046E000041C4942FFF791FC201C5421FFF7BDFC3C +:1046F00010BD38B50D1C0221041C4942FFF785FC92 +:104700002A1C201C5521E2F773F838BD38B50C1C63 +:104710000121051C091BFFF778FC281C5621221CCF +:10472000E2F766F838BD38B50D1C0121041C49427A +:10473000FFF76BFC2A1C201C5721E2F759F838BD03 +:1047400038B50C1C0121051C091BFFF75EFC281C59 +:104750005821221CE2F74CF838BD38B5051C0C1C5A +:104760000139FFF752FC281C5921221CE2F740F8BE +:1047700038BD70B5151C061C0C1C8918FFF745FCCC +:104780002A02301C22435A21E2F732F870BD38B5B4 +:104790000D1C041C13430121002B04D1FFF735FC31 +:1047A000201C602104E04942FFF72FFC201C6121FE +:1047B0006A69FFF7F9FC38BD70B50E1C0499041C3A +:1047C0000B43D5B2002B06D10121891AFFF71DFC3E +:1047D000201C622104E0D143FFF717FC201C632159 +:1047E0007269FFF7E1FC291C201CFFF73EFC70BD3D +:1047F00013B50C1C0092019300216422231CFFF7C7 +:10480000F8FC13BD13B50C1C012100920193494221 +:104810006622231CFFF7EDFC13BD012110B54942B0 +:10482000041CFFF7F2FB0123201CA3715B21FFF79F +:104830001CFC10BD38B5051C0C1C4942FFF7E5FBFC +:10484000281C0221FFF702FC5C234470037038BD72 +:1048500010B5041C0021FFF7D8FB0421E268201CDE +:10486000137E0B4313765931FFF7FFFB10BD012177 +:1048700010B5041C4942FFF7C8FB0421E268201C64 +:10488000137E0B4313765A31FFF7EFFB10BD83689D +:104890000633836070478368053B8360704770B55B +:1048A00000221E2B02DD1A1C1E3A07E0E2258418A6 +:1048B000ED00641924787F2C0DD10132D2B2F5E7D6 +:1048C0000132D2B29A420ED0E2268518F600AD1916 +:1048D0002D78FF2DF4D0E22664188518F600E4B296 +:1048E000AD192C70ECE770BD08B50222E3F712FA9F +:1048F00008BD08B50122E3F70DFA08BD816808B5C7 +:10490000031C081E09D00139181C996001234900B5 +:10491000194340680422DDF749FB08BD7FB5061C3A +:104920000024081C111C01221D1C0094131CDBF721 +:104930005BFE2868292102AAE3F79EFB029BA342A3 +:1049400005D0201C211C02AA00F024F80DE00C2048 +:10495000FEF77EFE06602B68041C43602868DDF7C6 +:104960000FFBDDF797F9A060201C04B070BD08B5FF +:1049700000F005F908BD002108B50A1C0B1CE3F77F +:10498000FDFA08BD07B50022019101AB0121E3F753 +:10499000F5FA0EBD536810B50C1C591E8B41191841 +:1049A0009B00D31A08331068221CE3F7E7FA10BD06 +:1049B00007B56A46E3F790FB01990098002901D0FA +:1049C000DFF766F90EBDF8B500F0D7F8FEF795FFF2 +:1049D0000025071C7B689D4215D2BB68EE009C59E0 +:1049E000002C0ED0042C0CD0E408201CFEF747F855 +:1049F00003785F2B05D0BB68201C9E197168E3F714 +:104A000023FA0135E6E7F8BD10B50C1CF5F79AF965 +:104A1000002902DA002C04DC04E0002902D0002C7A +:104A200000DA0919081C10BD08B5002804DB0029AC +:104A300006DACB43C01803E0002901DB401A01303D +:104A4000F5F79AF808BDF0B50E1C171C041C017987 +:104A50008288C907C90F87B0C9B21D1C5208C38814 +:104A60000091301C391CDBF7BFFD2379DB070AD529 +:104A7000B200AA1803A8391CFFF72CF8A368301C51 +:104A8000291C03AA18E0A3885B08032B16DCE28824 +:104A9000934213D1012B06D0022B08D0002B09D151 +:104AA000A36898470EE0A368286898470AE0A368BF +:104AB00003CD06E0A36807CD984703E0301C291C0E +:104AC000A368984707B0F0BDF0B5061C1C1C002376 +:104AD0000125081C0F1C111C726885B00093131C63 +:104AE000DBF782FDB3681D43002F01D1A84736E0F4 +:104AF0002068012F03D1E4F797F9A8472FE0022F90 +:104B000009D1E4F791F9071C6068E4F78DF9011CFD +:104B1000381CA84723E0032F0ED1E4F785F9071CC2 +:104B20006068E4F781F90290A068E4F77DF90299E2 +:104B3000021C381CA84712E0E4F776F9071C6068ED +:104B4000E4F772F90290A068E4F76EF90390E06868 +:104B5000E4F76AF90299031C039A381CA847F16824 +:104B6000E1F792FD05B0F0BD07B5019001A800F096 +:104B700035FC01A800F032FC0EBD8068704770471C +:104B800008B5031C0A1C0B20191C0023DEF75AF978 +:104B9000E4F7F0FA08BD08B5011C0B20DFF718FE9A +:104BA000E4F7E8FA08BD10B5041C06F047FC011C48 +:104BB000201CDFF74FFCFF38431E9841400010BD1A +:104BC00070477FB56846E2F7FFF80123029840007E +:104BD000184307B000BD7FB56846E2F7F5F801233A +:104BE00001984000184307B000BD38B5051C081CEB +:104BF000E3F7BEFA041C201CE3F708FB011E04D0F7 +:104C0000281D0122FEF792FFF5E738BD10B5041C00 +:104C1000E4F750FC201CE4F7D7FB2368036010BDC9 +:104C200038B5041C0D1CE4F745FC201CFFF7EEFF13 +:104C3000041C291CFFF7D9FF201C38BD70B5051CCA +:104C40000E1CE4F737FC281CE4F7BEFB041C311CE7 +:104C5000E4F77EFC2B68201C236070BDF7B50D1CAB +:104C60000190002A04D00868E4F750FC2C6807E0A3 +:104C70000C68201CE4F71EFC201CE4F7A5FB041CB8 +:104C80000126019B9E4215D2B300E858844203D10D +:104C9000201CE4F791FC0BE0E3F76AFA071C381CD0 +:104CA000E3F7B4FA011E03D0201CE4F777FCF6E723 +:104CB0000136E6E72B68201C1B682360FEBD08B5A3 +:104CC0000022FFF7CBFF08BD30B58468C368656874 +:104CD0009900AB420AD2E26801335258002A03D04D +:104CE000042A01D0C36002E00431F2E70022101C64 +:104CF00030BD08B50122E4F7F7FC08BD08B5002275 +:104D0000E4F7F2FC08BD08B504300122FEF70EFFFF +:104D100008BDF7B500240F1C051C1E1C081C0094C0 +:104D2000111C0123221CDBF75FFCA74205D1381CB4 +:104D3000391CE4F7BBFC056013E0211C201CE4F7E0 +:104D4000B5FC041C3068E3F713FA061C301CE3F7CB +:104D50005DFA011E03D0201CFFF7D5FFF6E7201CEB +:104D60002560FEBD08B5031C0022081C191CE4F7D1 +:104D7000F9FC08BD08B50022E4F7F4FC08BDF7B55E +:104D80001C1C0125002A02D1431EE418023D00220A +:104D90000023002906D000230027E356DE0F00235E +:104DA0007242BB41002181420ED0160E00961E02B7 +:104DB0000196267817023E43321C009F019E64191B +:104DC0003E43331C0131EEE7101C191C03B0F0BD4B +:104DD00007B50193002906D1131C01A9021C181C58 +:104DE00006F00AFA06E0013804D301AB1B5C13702D +:104DF0000132F8E707BD38B50C1C51282AD00ED86F +:104E000048281FD004D800281AD0422818D037E0EC +:104E10004C2833D0502831D0492831D12EE0682891 +:104E200010D006D8642821D0662819D0622827D14E +:104E300006E06C2822D0712807D0692820D11DE017 +:104E4000A3541DE0520013531AE0D1006118D81783 +:104E50000B604860D200A2181360DB1753600FE0AC +:104E6000181C9500F5F7E6FE285109E0D200181C41 +:104E70008C18F7F71FFD2060616001E0920013516C +:104E800038BDF7B56B46DF1D3A1C051C0C1C00F045 +:104E900060F93B78061C002B12D0281C211C00F066 +:104EA00085F900280AD00378023B022B06D8042398 +:104EB000281C3370211C00F08BF901E000233370B3 +:104EC000F7BD37B56B46041CDD1D2A1C00F041F907 +:104ED0002A782378002A07D0002B01D0072B01D194 +:104EE000002308E0022306E0013B052B04D80378E9 +:104EF000002B01D10233037037BD70B5051C0E1CA9 +:104F0000101C191C1C1C00F014F90378002B01D193 +:104F1000B36802E0012B04D1F368281C211C9847D8 +:104F200008E04288022B01D1336800E07368281C36 +:104F3000211C984770BD10B58468C3686268011C65 +:104F40000020934205D29A1C920012590133101C82 +:104F5000CB6010BD08B50B1C0968021C081C496811 +:104F60000830E6F703FA08BD08B5031C0A1C083030 +:104F7000596800F0C1FA08BD436808300B60106042 +:104F8000704708B5FEF78BFB08BDC168031C0029FC +:104F900005DD42688068824209DB00200DE00020C8 +:104FA00081420AD05A6894469A68944505DD58684B +:104FB000420041180120596010437047426808B50B +:104FC0008368C1689B1A5B18581C002900DD581EB5 +:104FD000F4F7D2FDC343DB17184008BDF0B5002736 +:104FE00085B003901D1C081C03230E1C0097111C88 +:104FF0000122DBF7F9FA1020FEF72AFB039B041CC1 +:10500000036001234760C36028689E4203D1DCF738 +:1050100041FEA0600CE0DCF73DFE60606868DCF7F4 +:1050200039FEA060032E03D1A868DCF733FEE060F0 +:10503000201C05B0F0BD136810B5002B0ED1141C58 +:10504000EE2901D1406806E0C02901D1806802E064 +:10505000BF2903D1C068FEF74DFE206010BD38B5F2 +:105060000D1C041CDCF72CFD291C036A0422201CE7 +:10507000984738BD70B50E1C151C041CDCF720FDCC +:10508000311C036A2A1C201C984770BD38B50D1CC2 +:10509000041CDCF715FD291C036A0022201C98471C +:1050A00038BD38B50D1C041CDCF70AFD2A1C8369C9 +:1050B000211C1F20984738BDF7B5061C30200D1C59 +:1050C000171C0193FEF7D6FA041C06708560C760B2 +:1050D000072E1AD8301CF4F7A1FC04060C0E10128F +:1050E000150626230CE02B786A780A3B1B02134333 +:1050F0000AE0932307E0282302E0942303E02A2315 +:10510000FF3301E095235B0023616B461B79202070 +:1051100063760423E384FEF79BFAE062201CFEBD65 +:1051200010B5041CC06AFEF7BAFA201CFEF7B7FAE5 +:1051300010BD30B50022041C058DAA4207D2E06ADA +:10514000D300C01843688B4202D00132F5E700203B +:1051500030BD70B5061C0D1C141CFFF7EAFF0023C0 +:10516000002818D1F18C338D8B4208D30631C90049 +:10517000F06AFEF783FAF38CF0620633F384308D25 +:10518000F36A421CC0001818002332850370437074 +:10519000438045600133237070BD08B54368002B20 +:1051A00001D0181CFAE7FFF7C4FF08BD38B5436803 +:1051B0000C1C181E0BD05D68002D07D0181C211C7C +:1051C000FFF7B7FF2B1C0028F5D000E0281C38BDE6 +:1051D00073B50E1C44686368002B12D06B46DD1D4E +:1051E000201C311C2A1CFFF7B4FF2B78002B03D0A6 +:1051F000042303706468EEE70378022B01D10133C6 +:10520000037073BD08B5DCF7A9FDF5F7F3FCFEF7F5 +:1052100071FD08BD08B5DCF7A1FDF7F7E5FFF5F76F +:10522000E9FCFEF767FD08BD08B5DCF797FDF7F769 +:105230004BFFF5F7DFFCFEF75DFD08BD026910B519 +:10524000531C2ED00A2A04D1C3690133C361012340 +:1052500006E0036A092A02D10733DB08DB000133C9 +:10526000041C03624369036183694361A368406866 +:1052700098472369A0610D2B09D1033B2361636922 +:105280000A2B04D16061A36860689847A061A36994 +:10529000013306D163695A1C03D00A2B01D00A23BB +:1052A000A36110BD10B500280FD0C368041C002BEB +:1052B00001D040689847201C4430FDF75AFC606BD1 +:1052C000FEF7EDF9201CFEF7EAF910BDF7B5071C53 +:1052D00054200E1C01921D1CFEF7C7F9041E04D1B8 +:1052E000281E50D0301CA8474CE0019B0022836050 +:1052F000C56001230A25C36103620363076042623C +:1053000082624660C562271C1420FEF7AEF944375E +:1053100060632021381CFDF702FC636B002B04D175 +:10532000201CFFF7BFFF00202DE0381CFDF733FCE9 +:105330000028F5D1636B1880019B301C9847019BB6 +:105340002061301C9847019B6061301C984722699E +:10535000A061531C04D06369591C06D10D2A01D1E8 +:1053600025610BE00A2A04D108E0421C06D10D2B6E +:1053700001D1656102E00A2B00D0A561201C01214A +:10538000E5F714F8201CFEBD08B50021E5F70EF87E +:1053900008BD73B50C1C051C01CC161CE5F75EFBA3 +:1053A0000023691E0093221C331CE5F79BFB76BD8E +:1053B00013B50C1C411E0020131C0090221D2068F8 +:1053C000E5F790FB16BD13B50C1C411E0120131C04 +:1053D0000090221D2068E5F785FB16BD30B50268F8 +:1053E000051C00207F240132531E1978C3010C4094 +:1053F000201C49B218430029F4DB2A6030BD10B5E7 +:1054000044680C6081681160C2681A6010BD08B5FC +:105410004368984708BD0120404270474A43F8B5A9 +:10542000071C1E1C141C0025B54209D00698391C07 +:10543000221C05F0E1FE069B01351B190693F3E7DC +:10544000F8BDF7B5B0CA00200191011CFDF757FD6A +:10545000061C002F0ADA013DAC4211DC019AAB00B8 +:10546000301CD158DBF706FCED19F5E7AC4207DA42 +:10547000019AA300301CD158DBF7FCFBE419F5E7D7 +:10548000301CFEBD70B5049D041C161C1B2803D1E6 +:105490000022AE422ED110E0192808D01C280CD1D1 +:1054A0002E1C151C0A1C1D24191C131C05E02E1C87 +:1054B000151C0A1C1A24191C131C2A1EB24200D9DE +:1054C000321C081C191C05F088FE1B2C02D144421A +:1054D000604109E0002290420CDB0132002809D132 +:1054E000AE4203D0AE424041C2B203E01A3C601E5D +:1054F0008441E2B2101C70BDF7B50025071C0E1CDC +:105500002C1C0192B54209D0AB00F8580199DCF788 +:105510006FFB431E984101352418F3E70120640016 +:105520002043FEBD10B5021C2324002388B003A82D +:1055300001A94460C160133C116884600374019345 +:1055400002930392E5F74CFF019808B010BDF0B547 +:10555000141C1268051C8BB00E1CCB000430002AF2 +:1055600028D1062119430191DFF79AFA002801D0CA +:1055700043682FE005AB079018742968181C05953F +:1055800006960894E5F72CFF2768002F23D1212EDB +:1055900021D0281C212102AAE2F76EFD029B002BDC +:1055A00019D0019B0120391C02AA0493FFF7F2F9DC +:1055B000206010E0062165681943002D05D1022204 +:1055C000DFF76EFA002806D003E00122DFF768FA61 +:1055D0004560002323600BB0F0BD37B51D1C041CD3 +:1055E0000023081C111C01220093131CDAF7FCFF96 +:1055F0000820FEF72DF82B68436004603EBD30B5EF +:10560000141C126887B0031C002A0AD101A841604B +:105610008260191C01320193C4600274E5F7E0FE58 +:1056200019E0806B002816D006236568C900043095 +:105630001943002D06D10222DFF732FA00280AD0E2 +:10564000256008E00122DFF72BFA002803D0636809 +:1056500043600023236007B030BDF0B5051C0F1C6C +:105660002C210023012489B003A88160161C29681D +:1056700001AA0374019302934460C2600395E5F7A5 +:10568000AFFE019B201C042B07D12869DCF718FA18 +:10569000391CC36A321C2869984709B0F0BD70B53F +:1056A0001923051C002488B003A8436001AE0B3306 +:1056B00029688360C6600474019474600395E5F7FB +:1056C0008FFE0198A0420DD0042806D12869DCF78E +:1056D000F7F9436A2869984704E0201C211C321C12 +:1056E000FFF758F908B070BD08B5FFF71BFF431E60 +:1056F0009841C0B208BD13B5081C1C1C111C002326 +:1057000002220093131CDAF76FFF03CCE6F7E4F9EB +:1057100016BD10B50C1CDCF7D3F9211CE6F71CFAFA +:1057200010BD38B50D1C041CDCF7CAF9291CE6F7BE +:10573000E1F9031E00D02369181C38BDF0B5856857 +:105740008BB0161C029352004B19041C019398183D +:1057500053180F1C0393052814D8211CAD002A1CD4 +:105760000C3105A805F048FD05AB5819039B0299BB +:105770009A0005F041FD60680199321C05ABE2F723 +:10578000FDFB1DE08000FDF763FF211C051CA368E5 +:105790000C319A0005F030FDA36802999800039B34 +:1057A00028189A0005F028FDA3686068F918321CD3 +:1057B0002B1CE2F7E3FB041C281CFDF770FF201CE8 +:1057C0000BB0F0BD10B5884213D20378303B092BE3 +:1057D0000FD8002313600A23146863430478013050 +:1057E000303C1B191360884203D00378303B092BEF +:1057F000F1D910BDF7B50025994218D31E1CCC1A5B +:10580000089B019200900027AB4201DD271C2C1C55 +:10581000009B01991D19281C321C05F0DEFC002894 +:1058200005D0BC4202D0089BE418F1E70025281CF3 +:10583000FEBDF8B5061C1020151C0F1CFDF708FF57 +:10584000041C06608560002F0FD0291C381CDAF775 +:1058500037FD6060681CFDF7FBFE391CE0602A1C08 +:10586000061C05F0C9FC00237355201CF8BD13B5B8 +:10587000012A0AD10C1C01A9E6F714FB019B206048 +:10588000636062230020A36005E0002301200B6019 +:105890004B60013B8B6016BD08B501220023E6F783 +:1058A0005FFB08BD012208B552420023E6F758FB12 +:1058B00008BD012208B5131CE6F752FB08BD012202 +:1058C00008B552420123E6F74BFB08BD08B5031C9F +:1058D0000A1C0220191CE6F785FC08BD08B5031C4C +:1058E0000A1C0020191CE6F77DFC08BD08B5031C46 +:1058F0000A1C0120191CE6F775FC08BDF0B50C1C4C +:1059000095B0042803D001235B42069309E0C868E0 +:10591000DCF7C0F90690002800D189E0069B002B37 +:10592000F1DB2068DCF7CCF8061C6068DCF7C8F80F +:10593000051EB54201D0606806E0A068DCF7C0F83B +:105940000790A84202D0A068E6F7ACF90DA920683C +:10595000E6F7A8FA0EA908906068E6F7A3FA0FA97F +:105960000B90A068E6F79EFA0E9B0D9A0990002610 +:1059700093425DD80E9B0D9F002B0BD1002E04D0BF +:10598000301C09990F9A05F037FC0F9B03930123F4 +:10599000049302E0002304930393089D049B069A5A +:1059A000934236D0002F34D00E9B281C0A9301233B +:1059B000391C00930B9A0A9BFFF71CFF05900028E7 +:1059C00027D00A9B059A5F427B41D31805935F1B42 +:1059D000002E05D0039B291CF0183A1C05F00CFC86 +:1059E000039BFF18002E04D0F01909990F9A05F0B7 +:1059F00003FC0E9A0F9B9446FB180393059B0D9A8C +:105A000063441D1C089B9918049B4F1B013304938E +:105A1000C4E7002E05D0039B291CF0183A1C05F0A2 +:105A2000EBFB039BD919002E09D1049B002B01D15C +:105A3000206808E010A8FDF789F8129E9AE70798F9 +:105A400010A9E6F7BBF915B0F0BD08B50122E6F7DD +:105A5000ABFC08BD012208B55242E6F7A5FC08BD23 +:105A6000F0B589B0071C0D1C081C03A9E6F71AFA4B +:105A70000024061C039904A8FDF768F8069B01930F +:105A8000039B9C4205D2305DB847019B18550134F9 +:105A9000F6E7281CDCF714F804A9E6F78FF909B03B +:105AA000F0BD13B5041C01A98068E6F7FBF9E368B3 +:105AB0000199021C00208B4205D2D05C0133E360C7 +:105AC00001234000184316BD1FB5041C0122081C09 +:105AD00001A9DCF79FFA201C0199029AE7F7F0FE72 +:105AE00004B010BD38B5041C2420FDF7C3FD051C0F +:105AF0004461A000FDF7ACFDA861281C38BD10B5BD +:105B0000041C002902D0C068FDF7C9FDA069FDF79B +:105B1000C6FD201CFDF7C3FD10BD38B5041C0D1ECD +:105B2000012D07D10121436949429A00806905F09E +:105B300080FB07E0022905D14068FDF789FD636815 +:105B4000E060A36000232560636038BD7047806813 +:105B50007047C06870470368012B03D842688369A7 +:105B60008900CA50704742684B42013A51181940A7 +:105B70004160704770B505684468012D02D861180E +:105B800041600CE00E19C3684660022D07D11B1955 +:105B900059188B4203D01A70120A0133F9E770BD0D +:105BA000026810B54368012A03D8023343601030FD +:105BB00003E0C2689C1C4460D0180170090A41705F +:105BC00010BD016A10B5041C002904D0B0231B02CB +:105BD0001943FFF7E5FFBD21E36909021943201CC2 +:105BE000FFF7DEFF10BD30B504684368012C03D811 +:105BF00004334360103003E0C4681D1D4560E018A5 +:105C000001708270090A120A4170C27030BD08B575 +:105C10001143DB001943FFF7C3FF08BD08B5072A8E +:105C200001D8D20003E04023083AD2001A430729E2 +:105C300002D98023083919430A438C21C901114331 +:105C4000FFF7AEFF08BD38B583698900CC584368BB +:105C5000051CE41AE023043C21051B02490D1943ED +:105C6000FFF79EFF2B680120022B07D1E40AE40214 +:105C700004D080231B01E4186042604138BDF8B5B0 +:105C8000061C8069920014587268A41A043C6510BE +:105C9000002B15D1D023FF271B02090219433D40D9 +:105CA000301C2943FFF77CFF01233268181C022AAD +:105CB0001FD1BC431DD00134FF346042604118E065 +:105CC000F02389011B0219438023A212DB00134039 +:105CD0008022920119432303144080222D051202D1 +:105CE0009B0E22432D0D301C19432A43FFF77BFFE7 +:105CF0000120F8BD38B583698900CC584368051C7C +:105D0000E41AF023043C61021B02490D1943F823F5 +:105D100062101B0292B21A43FFF765FF2B68012045 +:105D2000022B07D1A40DA40504D08023DB03E418C3 +:105D30006042604138BDF0B51D09002495421BD278 +:105D4000521B6C00061C151C0919002D0DD00C8867 +:105D5000012D02D94F883F043C430F271F40FC40D0 +:105D6000013D348002310236EFE75300C01802389B +:105D7000048860424441141B201CF0BDF0B5059C12 +:105D8000121B94460022271C161C002F08D08C5A88 +:105D90009D5A013F6519AE198652360C0232F4E75E +:105DA000059B62465C00031909191C1C002A07D0D8 +:105DB0000D88013AAE1926800231360C0234F5E71F +:105DC000624652009A18002E02D00123138002323C +:105DD000101A4010F0BDF7B50025089C2E1C271C9A +:105DE0000193121B002F0AD04B5B013F9C46019B85 +:105DF00066445B5BF61A465336140235F2E76400DC +:105E00000319151C1F1C0919002D07D00C88013D12 +:105E100036193E80023136140237F5E75200023A55 +:105E20009A18824204D31388002B01D1023AF8E772 +:105E30000232101A4010FEBD0239814202D30B8893 +:105E4000002BF9D00231081A4010704710B5002815 +:105E500006D0041C8068FDF722FC201CFDF71FFC07 +:105E600010BD38B5051C0C1E012C00D80224A868F2 +:105E7000002803D02B689B08A3420CD22B789B07E9 +:105E800009D46100FDF7FAFB03232A68A40013403C +:105E90001C43A8602C6038BD38B5051C0C20FDF7EC +:105EA000D7FB01212B78041C0B401A1C03788B4371 +:105EB00013430222934303702B682168980803233D +:105EC00082000B40134323606B686360AB68002B58 +:105ED00001D1A36009E04000FDF7BAFBA0602B6888 +:105EE000A9689A08520005F087F9201C38BD10B542 +:105EF0004B00C018D218002908D00238023A038893 +:105F000014881B1B04D406D10139F4E7081C03E0F4 +:105F10000120404200E0012010BD38B5051C0C1CDA +:105F20000221FFF79EFF2B780122002C03DA134396 +:105F30002B70614202E0211C93432B7000236B60A5 +:105F4000002907D06B685A1C6A60AA685B009952E6 +:105F5000090CF5E738BDFC230278134003700323D6 +:105F6000026813400360002343608360704708B5F4 +:105F7000002805D003789B0702D48068FDF78FFBCB +:105F800008BD38B50C1C4968051CFFF76AFF0121E4 +:105F90002378A8680B401A1C2B788B4313432B7073 +:105FA0006368A1686B6063685A0005F025F938BD25 +:105FB00008B5002901D1416001E0FFF7AEFF08BD3F +:105FC00038B50D1C041CFFF7C6FF291C201CFFF769 +:105FD000EFFF38BD38B5012504788160AC436D19F9 +:105FE0002C4304700324AA400568191C2C4022434A +:105FF000026000224260FFF7DBFF38BDF8B5041CE9 +:106000001F1C06AB1D780421161CFFF72AFF2378FE +:106010000122002D07D0002F05DA1343237000233F +:106020007242BB4103E093432370321C3B1C0021AE +:106030006160111C19430CD061681D04481C60602C +:10604000A06849000A52100C190C05432A1C0B1CAD +:10605000EFE7F8BDF7B50D1C01210378EA0F8B437C +:106060001343FF220370D2012B0C061C134002D1F4 +:10607000002373604DE09342FAD07F236C00240E1E +:106080005B42E318F4D4002B02D1FFF746FF40E057 +:10609000221C6F3AD117090F8A1880216D02121144 +:1060A0006D0A090400920D43162B05DC9623002788 +:1060B0001C1BE5403C1C08E00F273B40173B963C6F +:1060C0001F40E3171B0F1C192411301C0099FFF708 +:1060D000C8FE009B736063000193002C04D0B0687D +:1060E00000211A1C05F0A5F8002F08D02B1CBB407E +:1060F000B2680199013453521023DF1BFD40009B0D +:1061000064005B009C4204D0B26815532D0C02342D +:10611000F8E7F7BDF7B5041C0D1C1E1C8B18D10049 +:10612000090901310193FFF79CFE23780122002E1B +:1061300001D0134300E0934323700023281C6360C5 +:10614000019B984231D20278131C303B092B07D9AE +:10615000113B192B03D9131C613B192B25D80A338A +:10616000089A934221D26268A6689446311C9BB279 +:106170000092009A002A0CD00A88171C089A92B242 +:106180007A43D318009A0B80013A1B0C009202311B +:10619000EFE762465200B218002B01D013800232A2 +:1061A000961B761066600130CAE7401BFEBD406852 +:1061B00043425841C0B2704770B50D1C4168021C83 +:1061C000002903D16B68081C002B1AD02B78147897 +:1061D000DB07E007DB0FC00FDBB2C0B2181A10D12B +:1061E0006B689668AA68994206D30130994205D82F +:1061F000301CFFF77CFE01E001204042E30700D5A0 +:10620000404270BD10B5041E8C4201D0FFF7B9FEAC +:10621000012223789343237010BD10B5041E8C42D5 +:1062200001D0FFF7AEFE01212378DA07D20F8A1AD8 +:106230000A408B431343237010BD7FB5041E8C426C +:1062400001D0FFF79EFE6268002A0BD1201C0121BD +:10625000FFF707FE0122A3681A80237862601343C8 +:10626000237020E00E26012523786E442B420AD0AD +:10627000A068AB4323703580011C0095331CFFF7E9 +:10628000AAFD60600FE0511C201CFFF7EAFDA0682A +:106290003580331C0095011C6268FFF76FFD237881 +:1062A00060601D4325707FBDF0B50D1C496887B047 +:1062B000041C161C002901D0002A03D1291CFFF759 +:1062C00060FE4FE0FFF7CDFDA968331CA0686A6847 +:1062D000FFF731FD6060029001202B780340191C0C +:1062E000237883430B43237003423BD00E230021CA +:1062F00002AA9B186A68300919800392039A914296 +:1063000010D081420ED04A0094466746AA68BA5A15 +:10631000002A05D00121039A1980904205D314E088 +:106320000131EBE7039A90421CD2A9684000405A21 +:106330000F210E400E390D1CB5402E1C013E0642A9 +:1063400000D01980198800290CD0029A0120A16878 +:10635000002A01D1088004E00090029A081CFFF78F +:106360000DFD606007B0F0BD73B5151C061C0C1C5C +:1063700088686B6849689268994204D306D8FFF729 +:10638000B6FD002802DA231C2C1C1D1C2A78237859 +:106390005340DB070DD46368301C591CFFF761FDC7 +:1063A0006B68B0680093A1686268AB68FFF7E6FCB1 +:1063B0000BE0301C6168FFF754FD6B68B068009318 +:1063C000A1686268AB68FFF706FD01217060237861 +:1063D0000B401A1C33788B431343337073BDF7B5EE +:1063E000171C041C0D1C88687B68496892689942D8 +:1063F00006D30026994207D8FFF779FDB04203DAA9 +:106400002B1C01263D1C1F1C3A782B785340DB07C0 +:106410000DD56B68201C591CFFF723FD7B68A06815 +:106420000093A9686A68BB68FFF7A8FC0BE0201C12 +:106430006968FFF716FD7B68A0680093A9686A6821 +:10644000BB68FFF7C8FC60602B782178002E08D06D +:10645000DA070123D20F9A1A99431A400B1C1343EF +:1064600003E00122134091430B432370F7BDF0B5C5 +:106470004B68141C52688BB0051C0E1C934201D251 +:10648000261C0C1C0123327871681A4201D1227833 +:1064900013405918281CFFF7E4FC2278B368111C3C +:1064A00003937368A8680193A368049363683478BE +:1064B000079361400023C90702D4E307DB0FDBB277 +:1064C000E407E40FE1B20F1C8446D207D20FD4B226 +:1064D0005A4292B208924A4292B20992624292B2EF +:1064E0000692019A02910594561E721C2AD0039AB4 +:1064F000099912884A40BF180199079A521A9219AD +:106500000699B24206D8049A1188069A5140049A14 +:1065100002320492059A013E521805923A1C0599DE +:106520003F0C0A4008994A4092B2D3186246138041 +:10653000059A1B0C120C059202229444039A023213 +:106540000392D2E7019A51004118002B02D0012397 +:106550000B800231FFF770FC029B012223401C1CC0 +:106560002B78686093431C432C700BB0F0BDF0B5E2 +:106570004B68161C52688BB0051C0C1C934201D250 +:10658000341C0E1C0123227861681A4201D1327832 +:1065900013405918281CFFF764FCA368A8680393EC +:1065A000636824780193B36832780493736807931F +:1065B00001231C4200D11340E407E40FE1B20F1C99 +:1065C0008446D207D20FD4B25A4292B208924A42BB +:1065D00092B20992624292B20692019A0291059495 +:1065E000561E721C28D0039A099912884A40BF1877 +:1065F0000199079A521A92190699B24206D8049A3A +:106600001188069A5140049A02320492059A013E7A +:106610005218089905923A434A4092B2D3186246FA +:106620001380059A3F0C120C059202229444039A9F +:106630001B0C02320392D4E7019A51004118002B3F +:1066400002D001230B800231FFF7F6FB0122029BEF +:1066500068601C432B7893431C432C700BB0F0BD37 +:10666000F0B54B6889B0041C0E1C151C002B02D021 +:106670005368002B02D10023636072E0814207D18E +:10668000081CFFF709FC071CB5420AD1051C08E0ED +:106690000027824206D1101CFFF7FEFB051C071CD9 +:1066A00000E03E1C6B687268201C9918FFF7D9FB4C +:1066B000236800219A085200A06804F0BAFDA3687C +:1066C0000393B368039A059373680493AB680193CB +:1066D0006B680293049B5B00D1185B420693002316 +:1066E000069A02988A1800282CD0059B0020009357 +:1066F000049B9C466346002B14D013881B180793F9 +:10670000009B1B88181C019B1B8843430798C018DB +:1067100001235B429C44009B10800233000C0093D9 +:106720000232E7E70B1C002801D008808B1C039A7B +:1067300002319B1A029A5B10013A0292019A0232CC +:106740000192CDE70122636033782978594023789C +:10675000114201D1934300E013432370381CFFF72B +:1067600075FB09B0F0BDF8B54B68002B03D00127CD +:1067700013783B4202D00023436036E05368151C77 +:10678000041C002B03D1391CFFF7C7FB2DE0081CAC +:10679000FFF782FB061C281CFFF77EFB391C051C3B +:1067A000201CFFF7BAFB6B68002B11D0AB681B886D +:1067B000DB0704D5201C211C321CFFF751FFA86801 +:1067C0006A68011C0123FFF7B6FA6860002806D149 +:1067D000301CFFF73BFB281CFFF738FB05E0301CA3 +:1067E000311C321CFFF73CFFDDE7F8BD4368011C9C +:1067F0005A00002310B58468A218023A901C844203 +:1068000003D210881B040343F7E7181C0B78DB073F +:1068100000D5404210BDF0B59C4685B01D1C002936 +:1068200000D09D1800248368261C019343680293BE +:1068300001230393029B002B29D0019B24041B8876 +:1068400010361C43072E1BDD0778A3B2FF0706D5C1 +:10685000FF279F43039BFB189BB21F0A0397002946 +:1068600004D06F1E3B70674506D110E02B70634665 +:106870006F1C9B189F420AD0083E240A3D1CE1E78A +:10688000019B02330193029B013B0293D2E705B0C7 +:10689000F0BDF8B586684368051C00205C0034191B +:1068A000023CA31C9E420CD28F21C905F3F7F2FED5 +:1068B000071C2088F4F7BEF9011C381CF3F77CFB99 +:1068C000EEE72B78DB0702D580231B06C018F8BD46 +:1068D000F0B58BB0099310AB1B78119E071C049187 +:1068E000141C0593002E03D00B1C023B1E2B02D957 +:1068F0000020307089E04368002B12D1301C331C1B +:10690000002A07D02278181C002A03D01A700134FC +:106910000133F7E730230370002301300370801B3D +:1069200073E05B00181C0393FCF792FEB968039AAE +:10693000029004F061FC06960196039A029B94462D +:1069400063441D1C00210793029B023D9D420DD311 +:106950002B88090419430891081C0499F3F77CF863 +:10696000049928800898F3F7FDF8EDE730313929CC +:1069700002D9099B3A3BC918019B5D1C1970029B07 +:10698000079A934204D21A88002A06D10233F7E705 +:10699000059B002B13D0012303E0059B002B0CD09B +:1069A0000023069AAA1A032A05D16946019A097D8D +:1069B000951C51700695002B01D10195BDE70298F9 +:1069C000FCF76DFE002C0CD0201C04F037FD2B1CB6 +:1069D00020181D1CA04204D9013802781A70013316 +:1069E000F7E73B78DB0702D52D232B700135321CEE +:1069F0006B1E9A4206D211781878013B10705970BC +:106A00000132F6E70023A81B2B700BB0F0BD08B5D0 +:106A1000081C111CEDF766FA08BD70B5061C081CB1 +:106A20000D1C04F00BFD041E03D009CE291C221CF2 +:106A30009847201C70BDF0B58BB0029312AB1B7849 +:106A40000D1C03930F2302A9071C5B18002A01D118 +:106A500000220EE0002D03DA2D226D421A7012E0A2 +:106A6000119A920701D52B2203E0119A5207EFD514 +:106A700020221A70002D06D130221F2406ABDA73B3 +:106A800002ABE41818E00AAC281C0299F3F76AF884 +:106A90000E1C281C0299F2F7DFFF331C051C303353 +:106AA000092E02DD109B0A3BF318013C237006AB54 +:106AB0009C4201D9002DE7D140250F21119B1D409B +:106AC00002ABC9180B78002D0FD00025AB4213D0B4 +:106AD0000122039B01920093381C119BE7F7AAFC4B +:106AE000139B051C013B139306E0002B04D006AA60 +:106AF000944201D9013C23700AAB1A1B039B381C3A +:106B00000093139B211C0193119BE7F793FC28181A +:106B10000BB0F0BDF0B51E1C8DB012AB1B78071C7E +:106B20000393151C2B23B20702D47307DB0F5B0101 +:106B3000149A04AC00920193081C2B1C211C2022E7 +:106B4000DEF746FCC343051CDB171D40F30507D5E4 +:106B50006B1C1F2B04DC2522625500221D1CE254F5 +:106B6000402000233040984212D022782F2A12D899 +:106B70000122211C00930192381CE7F75BFC0921DC +:106B8000139B041C013B139302AB013DC91804E0A5 +:106B9000211C041C01E0211C1C1C039B381C0093BD +:106BA000139B2A1C0193331CE7F744FC20180DB0FB +:106BB000F0BD0EB403B503AA02CA0192E7F7AEFD19 +:106BC00002B008BC03B018470123884202D0037802 +:106BD00058424341181C7047037842780A3B1B0215 +:106BE000134302300B607047838BC26A01339BB240 +:106BF0008383918C994200D29384704738B5051CE9 +:106C00000C1C101C191C2A68049BFEF755FAEB6A31 +:106C1000A4004360AB6AE05038BD13B5041C081CE7 +:106C200001A9FFF7D9FF206B0199FDF7C0FB13BD48 +:106C3000F0B587B0051C0C1C04920593002B03DDF6 +:106C400008220B7E13430B766B461B8AE383EB6AA9 +:106C50001B78002B06D1286B211C049A059BFDF79D +:106C600096FD33E00026371CEA6A138D9E4223DA34 +:106C7000D26AF300D31803931B78033B012B19D876 +:106C800000230293029A238D9A4213DA029BE26A4E +:106C9000DB00D3181A78042A09D1039A5B6851687B +:106CA000994204D15288286BFDF753FA0137029BB1 +:106CB0000133E6E70136D7E7002FCCD0059B286BE0 +:106CC0000093211C3A1C049BFDF776FD07B0F0BD34 +:106CD00073B51D1C0B781A32061C93420ED1081C8A +:106CE00001A9FCF7F6FA019B041E9C4209D0301C56 +:106CF000211CA847201CFCF7E2FAF4E7002B00D087 +:106D0000A84773BD30B5041C85B0081C03A9FCF767 +:106D1000A7FA6379051C012B08D1E36A201C5B7E6E +:106D20000399009302222B1CFFF768FF039BA26AC2 +:106D30009B009958201C2A1C1423E7F795FE05B0E8 +:106D400030BD7FB5041C081C03A9161CFCF788FA8B +:106D50006279051C012A05D10096201C03992B1C81 +:106D6000FFF74CFF281CFCF7AAFA039BA16A9B00C3 +:106D70005D58021C291C201C0C23E7F775FE2869AE +:106D800004B070BD10B5C36A041C5A7EFFF7D9FF6A +:106D9000011C201CE7F730FE10BD1FB50368002B57 +:106DA0000DD100290BD00B78192B08D9041C03AB8B +:106DB000081C02AA01A9FCF7B3FA029B23601FBDBD +:106DC00038B5051C081C0C1CFCF779FA011C281CA2 +:106DD000E7F7EEFF281C211CE7F7EAFF38BD10B5E6 +:106DE000041CE7F7E5FF206BFDF703FB10BD10B5B2 +:106DF000041CE7F7DDFF206BFDF732FB10BD38B553 +:106E0000051C141CA14204D0281CE7F7D1FF011C6B +:106E1000F8E738BDF0B5041C85B0081C0D1C171C24 +:106E2000FCF74DFAFCF750FA03A9FCF719FA63795D +:106E3000061C012B08D1E36A201C5B7E039900939A +:106E40003A1C2B1CFFF7DAFE039BA26A9B009958A1 +:106E50000022201C131CFFF7EBFE301CFCF72FFA5E +:106E6000011C201CE7F7A4FF206BFDF78DFB00221F +:106E7000206B0121131CFDF7BBFC05B0F0BD38B53C +:106E8000041C0D1E954204D1006B0F21DFF7E8FDB5 +:106E900025E00B78A82B0DD1006B0F21DFF7E0FD6B +:106EA000281CFCF751FA002819D1281CFCF70CFA11 +:106EB000011C0CE0A92B10D1081CFCF705FA011CE1 +:106EC000201CE7F775FF0378011CAA2B07D0201CB4 +:106ED000E7F76EFF206B032103E0E7F769FF02216C +:106EE000206BFDF72DFC38BD70B50E1C151C041C65 +:106EF0000F21006BDFF7B4FD311C2A1C201CFFF7AB +:106F0000BEFF70BD38B5151C041CE7F751FFFCF738 +:106F1000DBF92A1C011C201CFFF7B1FF38BDF8B5B6 +:106F2000051C161C1F1C0C1E02D0E7F741FF012494 +:106F3000BE4206D0311C281CE7F73AFF0134061C7C +:106F4000F6E7286B211CFDF796FBF8BD10B50C1C6D +:106F5000131C0021221CFFF7E2FF10BDF8B5041C32 +:106F6000171CE7F725FF051CBD4213D0A91C201CE8 +:106F70006E78E7F71DFF0721051C206B312E06D028 +:106F80000821342E03D00921332E00D00A21FDF729 +:106F90004FFBE9E7F8BDF8B5051C161CE7F708FF3D +:106FA000041CB4420DD0A11C281C6778E7F700FF31 +:106FB0000521041C286B2F2F00D00621FDF738FB7C +:106FC000EFE7F8BDF8B5051C161CE7F7F1FE041C49 +:106FD000B4420DD0A11C281C6778E7F7E9FE032115 +:106FE000041C286B372F00D00421FDF721FBEFE7AD +:106FF000F8BDF8B5051C161C1F1CE7F7D9FE041CCC +:10700000B44209D0211C281CE7F7D2FE391C041C0D +:10701000286BFDF70DFBF3E7F8BD08B50223FFF77A +:10702000E8FF08BD08B50123FFF7E3FF08BD08B579 +:107030000023FFF7DEFF08BD10B5041CE7F7B8FE1C +:10704000206B0621FDF7E7FA10BDF7B5041C0D1CF7 +:10705000171C06690193731C0361BD420CD0291CE7 +:10706000201CE7F7A5FE051EBD42F6D0206B019956 +:10707000321CFDF749FAF0E7311C206BFDF7F2F8FE +:10708000F7BD08B50023FFF7E0FF08BD08B50123F1 +:10709000FFF7DBFF08BDF0B5041C85B00D1C081C14 +:1070A000111CFCF700F9291C0290201CE7F780FE58 +:1070B000029B061C032B06DD012303932369019326 +:1070C0000133236102E00023039301930127029A15 +:1070D0007B1C934246DA3378012B18D17078B11CAF +:1070E00036380B2811D8F2F799FC21100610101031 +:1070F00010100A0C080E1A2519E01B2517E01C2594 +:1071000015E01D2513E01E2511E01F250FE02225A7 +:10711000812B06D0301CFCF717F9023D002800D166 +:107120000335301CFCF7CBF8011C00E01925201CAE +:10713000E7F73EFE029B0237061C9F4205DA206BF2 +:10714000FDF77AF9206BFDF7ADF9206B291CFDF7EF +:107150006FFA029B9F42BADA206B0021019AFDF779 +:10716000D3F9B4E7039B002B18D02569206B6B1C67 +:107170002361291CFDF7ABF9206B0199FDF772F82B +:107180000121206BFDF76AF8206BFDF774F9206B85 +:10719000FDF766F9206B291CFDF764F805B0F0BD1A +:1071A000F7B5041C0D1C171C914203D3111CE7F703 +:1071B000FFFD37E00669731C03610B78702B15D156 +:1071C000081CFCF781F8011C201CE7F7F1FD311CBD +:1071D0000190206BFDF7A9F9201C01990022E7F727 +:1071E000EBFE281CFCF76BF8051C09E0E7F7E0FD57 +:1071F000311C051C206BFDF798F9206BFDF730F969 +:10720000201CFFF7F1FC201C291C3A1CFFF7C8FFCB +:10721000206B311CFDF7DEF9A38B206B013BA383B0 +:10722000FDF7A7F9F7BD13B5041C019101A855217D +:10723000FCF75EF80199021C201CFFF7B1FF13BD9B +:107240007FB5041C081C03A9151CFCF709F8637919 +:10725000061C012B06D10095201C03990722331C24 +:10726000FFF7CCFC206BFDF7BAF8039BA26A9B00EA +:107270009D580022201C131C291CFFF7D9FC2969EA +:10728000206BFDF769F8301CFCF719F80378011C36 +:10729000B53B581E834100225B421940201CA2715D +:1072A0000223E8F765F9286904B070BD10B5C36A18 +:1072B000041C5A7EFFF7C4FF011C201CE7F79CFB4F +:1072C00010BD914292411140002208B5131CE8F70D +:1072D0004FF908BDF0B5051C0E1C171C85B0BE4249 +:1072E00033D0301CFBF7EBFF041EBC4225D03378B3 +:1072F000A22B22D10378A02B1FD1301CFBF7E4FF77 +:107300000190201CFCF720F80026B04203D1201C7D +:10731000FBF7DAFF061C03A90198FFF75DFC286B59 +:107320000399FDF750F8281C311C01220023E8F7CF +:107330001FF9201CFBF7C3FF03E0281C311CE7F7F3 +:1073400037FD0023061CAB71C9E705B0F0BDF0B5F1 +:10735000041C056985B003936B1C03610F1C006B53 +:10736000291C161CFDF7F9F8201CFFF73DFC002E28 +:107370000DD1206B0321FCF771FF391C201CE7F7AE +:1073800017FD0321206B4942FCF768FF07E00A9BC9 +:10739000201C0093391C321C039BE8F7ADFA206BCC +:1073A000FDF70EF9206B0F21DFF75AFB206B291C2C +:1073B000FCF758FF0B99201CE7F7FAFCA38B206B16 +:1073C000013BA383FDF7D5F805B0F0BDF0B5061C71 +:1073D00087B0081C0D1CFBF772FF03900378022294 +:1073E000191C914369290AD1512103A8FBF780FF99 +:1073F0000022031C0092301C291C039A14E0682B05 +:1074000020D104A9FBF765FF5121059005A8FBF7E2 +:107410006FFF041CFBF753FF049B984207D1301CFD +:10742000291C231C059A0094E8F766FA12E0201C38 +:10743000059FFBF744FF00940190291C301C3A1C67 +:10744000231C05E000230190291C301C1A1C00930A +:10745000FFF77DFF07B0F0BD08B516221723E8F748 +:107460005DFC08BD08B50E220F23E8F757FC08BDE8 +:10747000F8B5041C0D1C081C111C161CFFF7A4FBFE +:10748000002802D0206B002139E02B789A2B30D1D4 +:10749000281CFBF719FF051CFBF711FF0278131CD2 +:1074A0006333DBB2012B13D8FBF70EFF071C291C3B +:1074B000201CE7F77DFC201C391C321CFFF79FFCC9 +:1074C000311C381C246BFBF7EEFE411C201C16E01F +:1074D000201C291CBE2A03D1BB3AFFF79BFC10E0FD +:1074E000E7F766FC011C201CE7F762FC206B022119 +:1074F00005E0291C201CE7F75BFC0121206BFDF750 +:10750000C7F8F8BDF8B5051C0C1C081C111C161C8E +:10751000FFF75AFB071E04D00021281C0A1C0B1C75 +:107520001CE0201CFBF7D0FE041CFBF7C8FE027811 +:10753000131C6333DBB2012B05D8FBF7C5FE211CFE +:10754000021C281C09E0281CBE2A04D1211CB83AC0 +:10755000FFF760FC04E0391C221C331CFFF7DFFC42 +:10756000F8BD38B5041C4D780231E7F721FC206BDB +:1075700003212F2D03D00421302D00D00521FDF74C +:107580004AF838BD38B5041C0D1C081C111CFFF747 +:107590001BFB002802D0206B002116E02B784A2B21 +:1075A0000DD1281CFBF790FE011C201CE7F700FC06 +:1075B000011C201CE7F7FCFB206B022105E0291CC5 +:1075C000201CE7F7F5FB0121206BFDF733F938BDEF +:1075D000F0B5061C87B00D1C141C002903D1012135 +:1075E0003068216022E000220B780192562B0CD1EA +:1075F000081CFBF769FE051CFBF761FE211CFFF769 +:10760000EBFA002DEBD0012301932B78002BE6D071 +:107610000A3B281C0F2B0CD805A9FFF7DDFA019BAC +:10762000002B01D1059B236030680599FCF72AFEE9 +:1076300054E002A9FBF74DFE019B051C002B02D173 +:10764000211CFFF7C9FA01242F1C6442029B9F42B0 +:107650000AD0381C05A9FFF7BFFA071C0598FBF7ED +:1076600009FA01342418F1E7201C03A9FBF7D7F924 +:107670002F1C041C029B9F4215D0AF4202D92E231F +:1076800023700134381C04A9FFF7A6FA05A9071CCA +:107690000498FBF7F9F9059A011C201C03F0ACFDD6 +:1076A000059BE418E6E70398FBF7C4F9011C306872 +:1076B000FCF7E8FD019B002B10D0281CFBF7FFFD19 +:1076C000041C029B9C4209D005A9201CFFF784FAE8 +:1076D0000599041C3068FCF76AFEF2E707B0F0BDBC +:1076E00037B5041C0D1C006B0021FCF7EFFD206B6F +:1076F0000F21DFF7B5F9201C291C01AA3030FFF754 +:1077000067FF201C0199E7F777F937BD08B50378C3 +:10771000012B04D1407810384342584107E0032B35 +:1077200004D1FBF7ACFD431E984100E0002008BDEA +:1077300008B50378012B02D140780E3803E0032B03 +:1077400004D1FBF79CFD4342584100E0002008BDF6 +:10775000F0B5041C85B0081C0E1C151C0193FFF726 +:10776000E7FF002850D1301CFFF7D0FF002852D18E +:107770003378192B55D9301C03A9FBF7AAFD3378B0 +:10778000071C7B2B20D1002D22D12669731C23617D +:10779000381CFBF794FD039B984208D00122391C4A +:1077A0006A40201C331CFFF7D3FF071CF0E72A1C9C +:1077B000391C019B201CFFF7CBFF051C311C206BE3 +:1077C000FCF750FD281C37E07C2B0CD1002DDCD1C0 +:1077D0000398874230D0391C201C2A1C019BFFF7DC +:1077E000B7FF071CF4E77E2B07D10122201C6A405B +:1077F000391C019BFFF7ACFF1EE0962B11D1301C0A +:10780000FBF7A2FD002806D0002D06D1206B0199C0 +:10781000FCF75DFE01E0002DF8D1301CFBF74FFDB9 +:107820000AE0311C201CE7F7C3FA061C291C206B58 +:10783000019AFCF758FE301C05B0F0BDF0B5041CF1 +:107840000D1C066989B01F1C731C0493B31C0361D3 +:10785000311C006B0592FCF705FD206B0499FCF7C9 +:107860009DFE201C291C0022E7F7A6FB281CFBF725 +:1078700026FDFBF724FD059B984224D1201C391CD2 +:10788000E7F796FAE36A1B78032B05D10E9B206B72 +:10789000991CFCF70AFF3BE0042B05D10E9B206BE3 +:1078A000991CFCF726FF33E0052B05D10E9B206BBE +:1078B000991CFCF738FF2BE0206BFCF7C9FF206B0D +:1078C000FCF7CEFD24E00378BF2B09D105A9FBF717 +:1078D00000FD0022011C331C201CFFF739FFCAE702 +:1078E00007A9FBF7F6FCFBF7EAFC0390FBF7E7FCC4 +:1078F000011C201CE7F75CFA206BFCF745FE0E9B91 +:10790000201C5D1C00950399079A3B1CFFF796FF0E +:10791000206B311CFCF7DBFD206B0499FCF7A2FC0B +:10792000206BFCF747FE09B0F0BDF7B5041C081C3E +:107930000F1CFBF7C4FCFBF7C7FC25690022AB1C3E +:10794000011C2361201C2B1CFFF702FF6E1C391C3D +:107950000190201CE7F72CFA311C206BFCF7B7FDD7 +:10796000291C206BFCF77EFC0121206B4942FCF7AF +:1079700075FC0199201CE7F71BFA311C206BFCF702 +:1079800071FCF7BDF8B50569161C6B1C012203617B +:107990002B1C041CFFF7DCFE071C5821206BFCF796 +:1079A00083FB311C381CFFF70FF9061E09D1391C67 +:1079B000201CE7F7FDF9206B0121321C331CFCF77A +:1079C00017FF206B0121FCF735FF291C206BFCF70A +:1079D00049FCF8BDF0B589B00792038B07690493A1 +:1079E000438B7E1C0593C38B07830693BB1C0361EB +:1079F000838B4683C383041C081C0D1CFBF75FFCB0 +:107A00000290FBF75CFC0390281CFFF791FE002816 +:107A10001ED12369281C019301332361FFF776FEF1 +:107A2000002803D1206B311CFCF751FD206B01991C +:107A3000FCF718FC0299201CE7F7BAF9206B311CFF +:107A4000FCF710FC201C291C0122019BFFF780FE83 +:107A50006B461B8A079A23836B469B8A63836B461C +:107A60001B8BE383039B934203D0201C191CE7F775 +:107A70009FF9206B391CFCF7F5FB09B0F0BDF0B5A0 +:107A8000041C236985B000930133081C2361039112 +:107A90000192FFF74DFE061E07D00398FBF70FFC7F +:107AA0000390FBF70CFC039030E0256903986B1CF6 +:107AB0002361FFF72BFE321C03992B1C071C201C93 +:107AC000FFF746FE011C0390201CE7F771F9061C26 +:107AD0000390002F60D10199FFF776F8002809D1B3 +:107AE000206BFCF7B6FB00280CD1206B0099FCF74B +:107AF000EEFC07E0301CFBF7E2FB0199FFF764F8AE +:107B00000028EDD0206B291CFCF7ACFB039B019AED +:107B1000934241D003A84821FBF7EAFB071C0398D6 +:107B2000B84232D0FBF7D0FB0390FFF701FE051EF1 +:107B300007D00398FBF7C3FB0390FBF7C0FB039050 +:107B4000EDE726690398731C2361FFF7DFFD331C03 +:107B5000029003992A1C201CFFF7FAFD011C0390D8 +:107B6000201CE7F725F9029B0390002B14D1206B12 +:107B7000FCF76FFB002803D1206B0099FCF7A7FCF2 +:107B8000206B311CFCF76EFBC9E7019B9F4203D0C1 +:107B9000201C391CE7F70CF9206B0099FCF762FBFD +:107BA00005B0F0BD70B50B78161C0A3B4A781B0275 +:107BB0001343B53B5A4253410C1C8371321C051CC4 +:107BC000FFF71DF9201C311CFBF76DFB032803D1C7 +:107BD000286B0B21FCF72CFD70BDF0B587B001912F +:107BE0000B78041C0D1C012B01D0532B02D10595E1 +:107BF000002509E00026502B1AD1081CFBF764FB76 +:107C00000590FBF75CFB051C05A83921FBF770FB11 +:107C10000026071C0598B8420AD00378012B27D10B +:107C200043784A2B24D10136FBF749FB0590F1E755 +:107C30000198FBF744FB01900778012F1AD1437894 +:107C4000312B17D1206B311CFCF740FB206B02213C +:107C5000FCF782FB206B391CFCF70DFD201C291C56 +:107C6000303005AAFFF7B4FC206BFCF724FB4CE096 +:107C70000336D9E7311C206BFCF728FB01A83E2115 +:107C8000FBF736FB0027019E0090009B9E420FD21F +:107C9000301CFBF719FB05A9FEF79EFF206B059929 +:107CA000FCF75AFB301CFBF70AFB0137061CECE71C +:107CB000206B391CFCF7DFFC201C291C303002AA89 +:107CC000FFF786FC019D009B9D421BD2281C03A947 +:107CD000FBF7FFFA04A9FEF77FFF0499051C206B50 +:107CE000FCF7DDFA039B9D4202D1201C049906E0BB +:107CF000281C05A9FEF770FF051C201C0599E6F756 +:107D00007BFEE0E7206BFCF7ABFB07B0F0BD026841 +:107D100013783E2B05D83C2B05D2212B07D13E23CF +:107D200001E0402B03D101320260181C00E040202A +:107D30007047F7B5051C0668741C20780194DDF7C0 +:107D400079FFA71B031C01340028F6D12868391CD1 +:107D50000A22DBF7D9FD019B40102B60FEBD73B5F5 +:107D6000E4F704FD00906846FFF7D1FF0025061CEC +:107D7000009B01241A78002A28D001941878DDF796 +:107D800059FF002803D06846FFF7D3FF041C009B6F +:107D90001A780023732A13D1231C012410E0002B2E +:107DA00006D1009B301C197801AAE1F78BFD031C5A +:107DB000019A013C501E4519524215405D1900239D +:107DC000002CECD1009B01330093D1E768002043E5 +:107DD00076BD4368F7B51C1E1BD0051C0021181C7E +:107DE000E1F770FF0026041C6B689E4211D2B300BD +:107DF0000193EB189868E0F709FA071E04D1201CDC +:107E0000FDF7BFF83C1C04E0019B0136E3189860C5 +:107E1000EAE7201CFEBD08B5E0F7AAF908BD08B5E1 +:107E2000031C0A1C0C20191CE0F730FA08BD38B5F9 +:107E30000124A04200D04C680868E0F799F9051CBD +:107E4000281CE0F7E3F9021E05D0211C0520E0F70D +:107E50001DFA041CF4E7201C38BD08B5011C0220E3 +:107E6000E0F722F808BD08B51A23E8F7B9FD08BD08 +:107E700008B51923E8F7B4FD08BD10B50C1C02289D +:107E800002D106CC093007E0096862680B20E0F7F0 +:107E9000FDF9011C0A20A268E0F7F8F910BD0023E3 +:107EA00010B5C25C002A06D0CC5C002C03D0A242E4 +:107EB00010D10133F5E70024CB5CA34207D1013494 +:107EC000002A04D0101CDDF7CDFE6040C4B20120B2 +:107ED000204000E0002010BD10B5131CC468002233 +:107EE000A04710BD002108B50A1CFFF7F5FF08BD2B +:107EF00007B5019101AA0121FFF7EEFF0EBD08B5FC +:107F0000E9F742FA08BD08B5D9F7DAFDE9F784FACE +:107F100008BD38B5041C0D1CFFF7F5FF002803D081 +:107F2000201CD9F7CDFD041C291C201CE3F7E2FD21 +:107F300038BD13B5041C4068E0F768F9021E0BD089 +:107F4000A3680220591CA16001215B000B43694614 +:107F500000930192E1F7B6FE16BDF8B5071C0C20A0 +:107F60001D1C0E1CFBF774FB0760041C2868E0F75F +:107F7000FFF860600020012E02D96868D9F78AFEF8 +:107F8000A060201CF8BD08B5DBF756FC01234000BB +:107F9000184308BD136870B5002B10D14568AC1CA0 +:107FA000A4002458AB420AD09E00A6598E4204D1A8 +:107FB00002339B001B58136001E00133F2E770BDF0 +:107FC00008B54B680A1C02339B005958EAF752F96E +:107FD00008BD002313B5041C0093081C111C1A1CB7 +:107FE000D8F702FB0420FBF733FB046016BD10B585 +:107FF000141C081C111CEBF767FF201C10BD00208F +:10800000F8B5824219D01C1C151C0E1CEBF738FF6A +:10801000002803D10B23013823600EE0771C75196B +:10802000EBF73AFF7B1E3C1E1870AC4204D0EBF716 +:1080300027FF01370028F3D1A01BF8BD836810B5D6 +:10804000041C5808FBF756FE0123A2681340A360E6 +:1080500010BD10B5041C0430EAF70AFA012160686B +:1080600002F061F9FBF746FE10BD10B5041C0430A8 +:10807000EAF7FEF90121606802F063F9FBF73AFEC6 +:1080800010BD10B5041C0430EAF7F2F90121606854 +:1080900002F065F9FBF72EFE10BD38B50021051C76 +:1080A0000320E1F70FFE041C281DEAF7E1F96868D8 +:1080B000012102F038F9FBF71DFE0121A06068687C +:1080C00002F03FF9FBF716FE0121E060686802F05C +:1080D00046F9FBF70FFE2061201C38BD08B540684B +:1080E000F0F75CFBFBF706FE08BD08B54068F0F74B +:1080F000A7FBFBF7FFFD08BD08B5DDF7C7F8FBF7E9 +:10810000F9FD08BD08B5EAF75FFB407B40B208BD4A +:10811000031C013B5A42534141205B4218407047C7 +:10812000202304304B60423308608B60002070478E +:1081300010B5FFF7E7FF021CA0240023C132FF3275 +:10814000E405920013510133011C181C0138C0468C +:10815000C046C046C046C046C046C046C046C046EF +:10816000C046C046C046F1D1A222D200A058C840A5 +:10817000184010BD08B50120EAF74EFD08BD0223E6 +:1081800010B584171C40013B1C1B802342021B04BA +:10819000520AC0151A43C3B2963B5918002901DD93 +:1081A0008A4005E00B1C00201F3303DB49420A41D3 +:1081B000101C604310BD002307B5081C0093111C60 +:1081C0001A1CD8F711FAEAF7B1FE0EBD0423591AAA +:1081D000033B8B40191C031C421D1878084003D137 +:1081E00001339342F9D100E00120704708B501281E +:1081F00003D14868D9F7C4FE00E0002008BD10B5DF +:108200000421041CFFF7E2FF031C0420002B06D10D +:10821000201C0321FFF7DAFF431E9841023010BDF6 +:10822000002210B5036902764269C36093420FD2FF +:108230001B78827E0377002A01D005230BE0041C03 +:10824000181CEAF741FFFFF7DAFF0130607603E020 +:10825000202303771B3B437610BD05235A43521856 +:10826000182A03D100790007C00F08E0D308C0180E +:108270004379072002401341181C0123184070471E +:1082800083795A4352185308C018C37904209200C6 +:1082900002401341181C0F231840704730B51C1CB6 +:1082A00083795A43042352189500F021520880180C +:1082B000221C1D402941AA40C3790B401343C371BE +:1082C00030BD08B54279837900215A4301325210FA +:1082D000073002F0AEFF08BD08B50379DB0705D50E +:1082E000FFF7BBFF09235843C0B201E0FFF7C8FF07 +:1082F00008BD02790523D20700D48379181C704782 +:1083000008B5FFF7F6FF01234000184308BD0279C6 +:108310000523D20700D44379181C704708B5FFF72E +:10832000F6FF01234000184308BDF0B50B6887B085 +:1083300048680C1C0293D9F7ADFC0090A068D9F7EF +:10834000A9FC0190E068D9F7A5FC071C2069D9F7C2 +:10835000A1FCFE43C543F617ED1737400540291C25 +:10836000381C0497EAF7BEFE009B019ADC43E41731 +:108370001C40019B0390DB43DB171A4002980592D7 +:10838000FFF7B7FF049B009A9F18874200DD071C88 +:108390000298FFF7BCFF019BEE18864200DD061C29 +:1083A000049A3B1B9A4203DC059BF31A9D4204DDB1 +:1083B0000398FFF786FF00E00134BC4211DA059D07 +:1083C000B542F9DA2A1C0298211CFFF785FF009AB2 +:1083D000031CA11A019A0398AA1AFFF75FFF01353F +:1083E000EEE7039807B0F0BDF7B5061CFFF781FF75 +:1083F000071C301CFFF78BFF00900099381CEAF730 +:1084000071FE00240190009B9C4211DA0025BD42C0 +:108410000CDA291C221C301CFFF75EFF291C031CF0 +:10842000221C0198FFF73AFF0135F0E70134EAE733 +:108430000198FEBD08B5FFF7D7FF08BDF7B5061CCC +:10844000FFF757FF0090301CFFF761FF0190019983 +:108450000098EAF747FE0024071C019B9C4213DAB0 +:108460000025009B9D420DDA291C221C301CFFF7C1 +:1084700033FF0923291C1B1A221C381CFFF70EFF8F +:108480000135EEE70134E8E7381CFEBD08B5FFF71B +:10849000D5FF08BDF7B5051C0C1C0E1C8379009395 +:1084A00043790193009B9E4212DA0027019B9F4271 +:1084B0000CDA3A1C311C281CFFF7E2FE3A1C031CA4 +:1084C000311B281CFFF7EAFE0137EFE70136E9E729 +:1084D0001C1B009B9C420DDA0026019B9E4207DA82 +:1084E000321C281C211C0023FFF7D8FE0136F4E7BC +:1084F0000134EEE7F7BDC368426970B5041C9342CE +:108500000BD1037E052B08D1C37E181E4DD0201C35 +:10851000FFF786FEA068FFF7D4FEA0680121FFF7F1 +:10852000B9FF227E637E9A4216D2207FEAF7CCFD05 +:108530000025061C0421237E725DCB1A1A41131CF0 +:108540000122134008325343A0682A1C0135FFF76B +:10855000A5FE052DEED124E09A4222D1E36861699F +:108560005A1CE2608A4206D1202323771B3B6376A4 +:108570000023237615E058782077EAF7A5FDA17E41 +:10858000051C002904D0FF232376FA3B637608E01C +:10859000FFF71CFE40422076281CFFF730FE01301A +:1085A0006076237EA0680133237670BDF7B500297D +:1085B00029DB0E1C041C437901938579013DB542EA +:1085C00010DB0027019B9F42F8DA3A1CA91B201CF4 +:1085D000FFF756FE3A1C031C291C201CFFF75EFE09 +:1085E0000137EFE70025B5420DD00027019B9F42E0 +:1085F00007DA3A1C201C291C0023FFF74FFE013725 +:10860000F4E70135EFE7F7BD70B5041C0D1CFFF76B +:1086100070FE4342061C201C9D4201DDB54206DB74 +:10862000FFF775FE011C301CEAF75CFD0CE0FFF75C +:10863000DBFE041C002D03DB291CFFF72BFF02E0EF +:108640006942FFF7B3FF201C70BD10B5041C081C65 +:10865000D9F720FB011C201CFFF7D6FF10BD10B579 +:10866000041C081CD9F716FB4142201CFFF7CCFF65 +:1086700010BDF0B587B00D1C0490FFF73AFE0190D5 +:108680000498FFF744FE4342041CAB4200DA2B1C63 +:10869000A34200DD231CDA43D2171A4005921A19AF +:1086A0000392A24200DD03945B420093DB43009AF5 +:1086B000DB171A400198211C0092EAF713FD0025F0 +:1086C0000290009B9D420DD00026019B9E4207DA3E +:1086D000311C02982A1C0023FFF7E0FD0136F4E765 +:1086E0000135EEE7059D009B059A9B1A5F19039BD8 +:1086F0009D4213DA0026019B9E420CDA311C04983D +:108700002A1CFFF7E9FD311C031C3A1C0298FFF7F5 +:10871000C5FD0136EFE70135E5E70137A7420BDA82 +:108720000025019B9D42F8DA291C02983A1C00237F +:10873000FFF7B4FD0135F4E7029807B0F0BD10B5BE +:10874000041C081CD9F7A6FA011C201CFFF791FF96 +:1087500010BD10B5041C081CD9F79CFA4142201C1E +:10876000FFF787FF10BDF8B5071C081CEAF7ACFC43 +:108770000025061C00240423325D5B1B1A41131CD8 +:108780000122134008325343381C221C291C013497 +:10879000FFF784FD052CEED10135052DEAD1F8BD9A +:1087A00013B5041C01A94068E3F7F6FFA26801991C +:1087B00000238A4207D2815CE068FFF7D4FFA368F8 +:1087C0000133A360E368181C16BDF7B50025042A21 +:1087D00011D1041C0E1C406801A9E3F7DDFF2B1C1E +:1087E000071C0199321C2068D9F72CFB395CA06862 +:1087F000FFF7B9FFA568281CFEBD38B5051C05208C +:10880000011CEAF76FFC041C291CFFF7ACFF201CBD +:1088100038BD10B518C96210E10701D58158CB5891 +:108820008018984710BD10B5041C0430EBF70EF902 +:108830000121606800F09EFDFBF75CFA10BD10B5E9 +:10884000041C0430EBF702F90121606800F09FFD81 +:10885000FBF750FA10BD10B5041C0430EBF7F6F826 +:108860000121606800F0A0FDFBF744FA10BD10B5CF +:10887000041C0430EBF7EAF8606800F09DFDFBF79C +:1088800039FA10BD10B5041C406800F0D3FD002873 +:1088900002D1201CEBF7A2F8201DEBF7D7F8606897 +:1088A000EEF7ECFCFBF726FA10BD012803D1CB88CC +:1088B0005B00184300E00020704710B5041C02F074 +:1088C000BDFD011C201CEBF7FFFA10BD08B501200F +:1088D000EBF750FD08BD08B50020EBF74BFD08BDD8 +:1088E000F0B585B00390081C0D1CFFF702FD0526AE +:1088F000042803DC281CFFF7FCFC061C281CFFF7DF +:1089000006FD0527042803DC281CFFF700FD071CD3 +:10891000039B0293002301930093009BB34224DA4C +:108920000024BC420FDA221C281C0099FFF7D4FC5B +:10893000029B1B19187101238340181C019B0134F1 +:1089400003430193EDE7FB43DB173B40042B05DCBE +:108950000021029AD21811710133F7E7009B01330D +:108960000093029B05330293D7E7F343DB171E40C6 +:1089700005237343039A0433D318042E08DC002222 +:1089800001361A705A709A70DA701A710533F4E76A +:108990006A46039B92881A8405B0F0BD73B5061C25 +:1089A000081C0D1C002402F049FD221C011C231C84 +:1089B000281C0094EAF790FE0123011C0093301C50 +:1089C0009622231CECF7C4F973BD70B5051C081C76 +:1089D000161CD9F75FF9041C301CD9F75BF9211C70 +:1089E000021C281CECF7D4FA01234000184370BD88 +:1089F00004231A1CA0210320C132FF329200C905B2 +:108A000001335050112BF4D17047704710B5041C3E +:108A100043694268991800F077F8E36A002B04D1A3 +:108A2000A369002B07D0984705E0A069002802D071 +:108A3000211C1C31984710BD10B5041C00F06CF8C7 +:108A40000023A361E36210BD10B5041CECF710FB1A +:108A5000201C02F0BCFA201C10BD38B5051C0C1CF3 +:108A600000F05AF86C61286900F0D5F90119281C4A +:108A700000F04AF838BD00207047F8B5071C0E1CFE +:108A80000D1C8C18A54209D001353B686A1E5B6A33 +:108A90001178381C9847431CF4D12C1CA01BF8BD3E +:108AA000F8B5071C0E1C0D1C8C18AC4209D03B6895 +:108AB000381C9B6A9847431C02D028700135F4E7A4 +:108AC0002C1CA01BF8BD0020704700207047002020 +:108AD00070470020704738B50D1C041C4069F8F73A +:108AE00093F8281C6169F8F7FBF938BD10B5041C30 +:108AF0004069F8F789F8606900F0A4F810BD08B57E +:108B000003689B68984708BD08B50A1C031C011D33 +:108B1000006900F048F908BD08B5011D006900F0C2 +:108B20005EF908BD704718234A1C5A4382189268A0 +:108B300010B55943002A05D14118CB68002B08D045 +:108B4000984706E04318D868002802D0191C103155 +:108B5000904710BD10B5041C02F039FA201C10BD5E +:108B600038B50D1C041C0430EDF722F9E56338BD5F +:108B700008B5043000F0FFF908BD38B50C1C051C21 +:108B8000111C0430221E0AD018231A1C4A43AA18AA +:108B9000D4604A1C53430022EB189A600132EDF76F +:108BA00053F938BD08B5043000F0D8F908BD10B548 +:108BB0000C1C0430EDF78CF9201C10BD036870B557 +:108BC0001B6900210122041C9847061C731C0DD050 +:108BD000236800211B690222201C9847051C23687A +:108BE000201C1B69311C00229847281C70BD08B549 +:108BF000431E012B01D9002804D180239B014B6027 +:108C0000002005E0F7F756FF0923036001204042EA +:108C100008BD08B50120F7F753FF7047704708B546 +:108C2000FFF7FCFFFFF7F9FFEDF73EFA08BD08B5C7 +:108C3000002801D000F00AF8FEE708B5002102F094 +:108C4000D4FB08BD08B5F8F721F808BD00B59BB006 +:108C500002A8032100F064F808A8022100F060F8DF +:108C60000EA8012100F05CF814A8102100F058F8BB +:108C7000059B039A96201A60099A0C9B1A600F9A1A +:108C8000129B1A60159A179B01921A6000F058F80F +:108C9000069B039A96201A60099A0B9B1A600F9AFA +:108CA000119B01921A60159A189B1A6000F048F8FF +:108CB000DEE70FB4012008B5F7F702FF70B50D1C11 +:108CC000041C161CEDF712F96B1C07D0201C0021A8 +:108CD00000F05EF9201C311C00F054F970BD08B59D +:108CE0000322FFF7EBFF08BD08B5FFF7E7FF08BD5C +:108CF00070B50D1C041C161CEDF7F8F86B1C0ED09B +:108D00006368002E01D0E26800E02269201C012186 +:108D1000136000F03DF9201C002100F033F970BD14 +:108D200008B50022FFF7E4FF08BD38B5041CECF7D6 +:108D300037FF051CECF734FF401BA042FAD338BDC7 +:108D400008B5FA239B005843FFF7EFFF08BD38B57D +:108D5000041C0D1C03681B68984763681D6038BDC0 +:108D600038B50368041CDB68984763685A68236851 +:108D7000002A02D19B68984714E05B681568984701 +:108D800063682D1A002D08DC5A68916859601B68C9 +:108D9000002BEAD050689847E7E75A6821681068C6 +:108DA0000B69984738BD70B50D1C72B64B60002337 +:108DB00046680A607468002C05D02168511A02D4F4 +:108DC000231CA468F7E7002B05D1036875601B69B5 +:108DD000101C984700E09D60AC6062B670BD08B59D +:108DE00072B6426853688B420CD19B68536002682C +:108DF000002B02D1936898470BE0126918689047DE +:108E000007E0131C002B04D09A688A42F9D18A68C3 +:108E10009A6062B608BD08B503685B68984708BDEC +:108E2000F7B50192B1221F1C03684910D200995076 +:108E30008021012289005A50191C0024061CFC3193 +:108E4000CC601A607D1E019BAC4213DA1919301CEC +:108E50000022ECF77DFC00280AD0301CECF772FDF4 +:108E6000071C301CECF73AFD251C002F1ADA18E01D +:108E70000134E7E75919301C0122ECF769FC00289E +:108E800003D0301CECF72AFD0CE0089B3D1C002BA6 +:108E900008D031680B1CFC339A68002AFAD00022F3 +:108EA0009A603D1C281CFEBDF8B5171CB1221D1C84 +:108EB0000368D200491099508022002492009C50EF +:108EC0000122061C9A60AC4211DA395D301CECF7C5 +:108ED00029FC002809D0301CECF700FD301CECF711 +:108EE00031FD00280EDA041C0CE00134EBE7069B90 +:108EF0002C1C002B06D0301CECF70AFD002801D0FA +:108F000001246442201CF8BD82B00190C046C046D6 +:108F1000C046C046C046C046C046C046C046C04621 +:108F2000C046C046C046C046019B013B0193002B92 +:108F3000ECD102B070472F23C046C046C046C046A1 +:108F4000C046C046C046C046C046C046C046C046F1 +:108F5000C046C046013B002BEED1704703681A1C87 +:108F6000FC32D1680129FAD10021D160A322D200BC +:108F70009858C0B270470368FC33D8680138434240 +:108F80005841704708B5007840B200F05FF808BD5E +:108F9000002901D0012907D10023A022C356D20500 +:108FA000C133FF339B0099507047002310B5036015 +:108FB00043600A78041C2F2A15D14A789A4212D0AD +:108FC000481C191C206023681A782F2A02D101330B +:108FD000236005E0002A03D0013301312360F2E76A +:108FE000EDF746F86060201C10BD0068704708B5BA +:108FF0004368181E05D000F042F80138434258413A +:10900000C0B208BD10B5041CFFF7F1FF031E00D06D +:109010006368181C10BD08B54368181E04D000F022 +:109020002EF843425841C0B208BD10B5041CFFF7EA +:10903000F2FF031E03D06268131E00D0131F181C1A +:1090400010BD4068431E9841C0B27047A023800005 +:10905000DB05C018E02310B50C24DB00C2588900E2 +:10906000A243C250C2581143C15010BD10B5041CD8 +:10907000ECF7D2FF201C01F0AAFF201C10BD007BE2 +:10908000704770477047002070477047704710B5B1 +:10909000041CEFF7A9FC201C10BD10B5041CEFF751 +:1090A000A3FC201C10BD10B5041CF0F743F90023ED +:1090B000201C237510BD3ADF704708B50368002BEC +:1090C00001D0081C984708BD13B5041C7D30FF3043 +:1090D000002100F075F8201CA530FF30002100F0C1 +:1090E0006FF8201CCD30FF30012101F088FE13BD48 +:1090F0001FB5041C009202A80822019302F07CF81C +:10910000039A029B5010D20701D52258D358201839 +:109110000099019A98471FBD08B5EDF731FC016031 +:109120007047021C002310B5AC320432141F2468AF +:10913000002C01D00133F8E72A339B00C318596093 +:10914000201C10BD021C002310B5AC320432141FC9 +:1091500024688C4201D00133F8E72A339B00C318FE +:109160000020586010BD021C002310B5D432043218 +:10917000141F2468002C01D00133F8E734339B001E +:10918000C3185960201C10BD021C002310B5D43236 +:109190000432141F24688C4201D00133F8E73433C1 +:1091A0009B00C3180020586010BD4068704710B580 +:1091B000041CEDF7BFFD201CEFF716FC201C10BDB2 +:1091C0000630C17770470123807918407047C06826 +:1091D000431E9841704710B5041CEDF7EDFD201CAF +:1091E000EFF702FC201C10BD38B58388041C5A0719 +:1091F00008D59A0631D4DA0604D52169626901F0EE +:1092000027FC2AE004221343A380A3889A0705D5EC +:10921000A0682169626901F065FC09E02069616963 +:10922000DB0703D5E268A368984701E0A368984785 +:10923000A388DA060ED5A06900280BD0231C021CD7 +:10924000103322CA22C38368A361EFF7CDFBEEF788 +:1092500023FADAE704229343A38038BD031C72B6D5 +:10926000C068002807D08268DA60002A00D11A613D +:10927000DA8A013ADA8262B670478068002801D043 +:10928000C069FBE77047F7B50122041C0D1C076994 +:10929000EDF7B0FD00281FD1E38A092B1CD86B46DF +:1092A0000C3006CD06C3EFF77BFB0099019A051C35 +:1092B00000F0CDF872B6002F03D1E368AB60E56033 +:1092C00002E0BB68AB60BD60AB68002B00D12561DC +:1092D000E38A0133E38262B6F7BD07B500916946C0 +:1092E0000192FFF7D0FF07BD38B5051CFFF7C5FF9A +:1092F000281CFFF7B3FF041E0BD0211C0022281CE2 +:10930000EDF778FD201CEFF76FFBEEF7A5F90028CD +:10931000EED138BD10B5041CEDF792FE201CEFF71E +:1093200063FB201C10BD836B806A1B681840431EC2 +:1093300098417047836B37B51B68826A1A4218D010 +:109340000121041C6425EDF7C5FE68430321A061DB +:10935000201CEDF7BFFE68430521E061201CEDF7FE +:10936000B9FE4543A1882562684604220123EEF731 +:1093700061F837BD012904D0022906D10369C0690B +:1093800001E08369C068181A00E08069704701290C +:1093900004D0022906D18369C06801E00369C0696D +:1093A000181A00E0C06970470139036A012901D821 +:1093B0004269D31A181C7047F7B58369C268041C48 +:1093C000981AF3F777FAE2692369061C981A0F1CBA +:1093D000F3F770FA636900900191206A181AF3F7A5 +:1093E00069FA321C0D1C041C3B1C301C391CF2F7A2 +:1093F00017FC061C0F1C00980199021C0B1CF2F7AD +:109400000FFC021C0B1C301C391CF1F7A3FC2B1C9D +:10941000061C0F1C221C291C201CF2F701FC021C3C +:109420000B1C301C391CF1F795FCF4F7AFF8F3F77F +:109430000BFAFEBD01238079184070470223807922 +:10944000184070470122837993438371704737B581 +:10945000041C009101926D46EDF7CEFF231C06CD52 +:1094600006C30023201CA3603EBD72B601650B68D5 +:10947000002B03D143658365086007E05A6D002A1D +:1094800001D0131CFAE758658365426562B67047E0 +:10949000036D002B12D072B6826D436D002A01D08D +:1094A000536501E0026D1360436D002B01D0826DA6 +:1094B0009A65002343658365036562B6704708B506 +:1094C0000B1C111C1A1C0123EEF79EF808BD38B5C1 +:1094D000051CEFF30884C36B006C1C1B6B6C1B1A20 +:1094E000A3420CD21F2320349C43002801D0EFF765 +:1094F0007BFA201CEFF754FA041928646C6438BD19 +:1095000010B50C1C8047A047EEF78EF910BD08B5CA +:10951000EEF78AF908BD38B5141C031C101C0D1C8D +:109520009847201CA847EEF77FF938BD08B5EEF73D +:109530009BF8EEF7B1F8FAE710B5041C006801F0EB +:10954000C1FA201C10BD70B5061C081C0D1C01F0D2 +:1095500075FF041C0530EFF723FA306001F0A5FA1F +:109560003068291C4480621C043001F045FE70BD47 +:1095700038B5041C0B6800680D1C984205D001F03A +:10958000A1FA2868206001F093FA201C38BD00235E +:10959000994207DB02680223D05E0023884201DD86 +:1095A00051180B79181C704710B582604A43041C8F +:1095B0004160002A0ADDFE2390005B059A4201DD2E +:1095C00001204042EFF7ECF9206001E00023036046 +:1095D000201C10BD4B688A6870B543605343041C5F +:1095E0000D1C8260002B12DDFE229E005205301CF5 +:1095F000934201DD01204042EFF7D2F900232060C1 +:109600002A68D158C1500433B342FAD101E0002393 +:109610000360201C70BD4068704700290DDB002AE4 +:109620000BDB4368994208DA83689A4205DA4B43B8 +:109630009A1803689200D05800E00020704710B5D7 +:1096400000290CDB002A0ADB4468A14207DA84689F +:10965000A24204DA4C430168A2189200535010BD94 +:1096600010B5041C0068002801D0EFF7BDF9201CDC +:1096700010BDF0B58A684B6893B001900C1C9A42FB +:1096800001D000F0A1FD042A01D000F09DFD111CC5 +:109690000FA8FFF789FF24680F9FA36A66690293EA +:1096A000E36AE56B0393A36B02990493636A301C2E +:1096B0000593A3690693E3690793636B0893F0F737 +:1096C000E9FF291CF0F7E6FF03990990301CF0F739 +:1096D000E1FF0499F0F7DEFF011C0998F1F70CF99E +:1096E0000699061C0598F0F7D5FF291CF0F7D2FF64 +:1096F000011C301CF1F700F90799051C0598F0F7DB +:10970000C9FF0499F0F7C6FF011C281CF0F754FCB0 +:109710000699051C0898F0F7BDFF0399F0F7BAFF0A +:10972000011C281CF0F748FC0799051C0898F0F765 +:10973000B1FF0299F0F7AEFF011C281CF1F7DCF82D +:109740003860A36A66680293E36AE56B0393A36BD0 +:1097500002990493636A09900593A3680693E368EA +:109760000793636B089380231B06F018F0F792FFB2 +:10977000291CF0F78FFF03990A90301CF0F78AFF3D +:109780000499F0F787FF011C0A98F0F715FC069979 +:10979000061C0598F0F77EFF291CF0F77BFF011CE3 +:1097A000301CF0F709FC051C05980799F0F772FFCB +:1097B0000499F0F76FFF011C281CF1F79DF806993A +:1097C000051C0898F0F766FF0399F0F763FF011C8A +:1097D000281CF1F791F80799051C0898F0F75AFF33 +:1097E0000299F0F757FF011C281CF0F7E5FB7860A1 +:1097F000A36966680293E369E56B0393A36B301C6E +:10980000049363690593A3680693E3680793636B06 +:1098100002990893F0F73EFF291CF0F73BFF0399EC +:109820000A90301CF0F736FF0499F0F733FF011C63 +:109830000A98F1F761F80699061C0598F0F72AFFD7 +:10984000291CF0F727FF011C301CF1F755F8079988 +:10985000051C0598F0F71EFF0499F0F71BFF011C8B +:10986000281CF0F7A9FB0699051C0898F0F712FFD1 +:109870000399F0F70FFF011C281CF0F79DFB0799D7 +:10988000051C0898F0F706FF0299F0F703FF011C8A +:10989000281CF1F731F8B860A36966680293E369A0 +:1098A000E56A0393A36A0299049363690593A36825 +:1098B0000693E3680793636A089380231B06F018F6 +:1098C000F0F7E8FE291CF0F7E5FE03990A90301C3A +:1098D000F0F7E0FE0499F0F7DDFE011C0A98F0F7BE +:1098E0006BFB0699061C0598F0F7D4FE291CF0F7CF +:1098F000D1FE011C301CF0F75FFB0799051C059891 +:10990000F0F7C8FE0499F0F7C5FE011C281CF0F71B +:10991000F3FF0699051C0898F0F7BCFE0399F0F7D1 +:10992000B9FE011C281CF0F7E7FF0799051C0898F1 +:10993000F0F7B0FE0299F0F7ADFE011C281CF0F71D +:109940003BFBF860A36A26690293E36AE56B039325 +:10995000A36B02990493236A0593A3690693E369B1 +:109960000793236B089380231B06F018F0F792FEF1 +:10997000291CF0F78FFE03990A90301CF0F78AFE3D +:109980000499F0F787FE011C0A98F0F715FB069979 +:10999000061C0598F0F77EFE291CF0F77BFE011CE3 +:1099A000301CF0F709FB0799051C0598F0F772FECB +:1099B0000499F0F76FFE011C281CF0F79DFF069933 +:1099C000051C0898F0F766FE0399F0F763FE011C8A +:1099D000281CF0F791FF0799051C0898F0F75AFE2C +:1099E0000299F0F757FE011C281CF0F7E5FA3861E0 +:1099F000A36A26680293E36AE56B0393A36B0A905C +:109A00000493236A301C0593A3680693E3680793C5 +:109A1000236B08930299F0F73DFE291CF0F73AFEFC +:109A200003990B90301CF0F735FE0499F0F732FEE5 +:109A3000011C0B98F0F760FF0699061C0598F0F7DB +:109A400029FE291CF0F726FE011C301CF0F754FFFC +:109A50000799051C0598F0F71DFE0499F0F71AFE0A +:109A6000011C281CF0F7A8FA0699051C0898F0F7C5 +:109A700011FE0399F0F70EFE011C281CF0F79CFA6A +:109A80000799051C0898F0F705FE0299F0F702FE09 +:109A9000011C281CF0F730FF78612668A369E56B8C +:109AA0000293E36902990393A36B049323690593DB +:109AB000A3680693E3680793236B089380231B0630 +:109AC000F018F0F7E7FD291CF0F7E4FD03990B907F +:109AD000301CF0F7DFFD0499F0F7DCFD011C0B985A +:109AE000F0F76AFA0699061C0598F0F7D3FD291CD1 +:109AF000F0F7D0FD011C301CF0F75EFA0799051C49 +:109B00000598F0F7C7FD0499F0F7C4FD011C281C67 +:109B1000F0F7F2FE0699051C0898F0F7BBFD0399D3 +:109B2000F0F7B8FD011C281CF0F7E6FE0799051CAC +:109B30000898F0F7AFFD0299F0F7ACFD011C281C66 +:109B4000F0F73AFAB861A36926680293E369E56A17 +:109B50000393A36A029904932369301C0593A368B5 +:109B60000693E3680793236A0893F0F793FD291C93 +:109B7000F0F790FD03990B90301CF0F78BFD0499E2 +:109B8000F0F788FD011C0B98F0F7B6FE0699061C4D +:109B90000598F0F77FFD291CF0F77CFD011C301CB7 +:109BA000F0F7AAFE0799051C0598F0F773FD0499D4 +:109BB000F0F770FD011C281CF0F7FEF90699051C52 +:109BC0000898F0F767FD0399F0F764FD011C281C65 +:109BD000F0F7F2F90799051C0898F0F75BFD029978 +:109BE000F0F758FD011C281CF0F786FEF861636A47 +:109BF00026690293E36AE56B0393636B301C04935D +:109C0000236A059363690693E3690793236B0893BB +:109C10000299F0F73FFD291CF0F73CFD03990B90EA +:109C2000301CF0F737FD0499F0F734FD011C0B9858 +:109C3000F0F762FE0699061C0598F0F72BFD291C2B +:109C4000F0F728FD011C301CF0F756FE0799051CA3 +:109C50000598F0F71FFD0499F0F71CFD011C281C66 +:109C6000F0F7AAF90699051C0898F0F713FD039977 +:109C7000F0F710FD011C281CF0F79EF90799051C50 +:109C80000898F0F707FD0299F0F704FD011C281C65 +:109C9000F0F732FE0B903862636A26680293E36A3B +:109CA000E56B0393636B02990493236A05936368DE +:109CB0000693E3680793236B089380231B06F01831 +:109CC000F0F7E8FC291CF0F7E5FC03990C90301C38 +:109CD000F0F7E0FC0499F0F7DDFC011C0C98F0F7BC +:109CE0006BF90699061C0598F0F7D4FC291CF0F7CF +:109CF000D1FC011C301CF0F75FF90799051C059891 +:109D0000F0F7C8FC0499F0F7C5FC011C281CF0F71B +:109D1000F3FD0699051C0898F0F7BCFC0399F0F7D1 +:109D2000B9FC011C281CF0F7E7FD0799051C0898F1 +:109D3000F0F7B0FC0299F0F7ADFC011C281CF0F71D +:109D40003BF97862636926680293E369E56B0393E4 +:109D5000636B029904932369301C0593636806932F +:109D6000E3680793236B0893F0F794FC291CF0F742 +:109D700091FC03990C90301CF0F78CFC0499F0F7DF +:109D800089FC011C0C98F0F7B7FD0699061C059894 +:109D9000F0F780FC291CF0F77DFC011C301CF0F76B +:109DA000ABFD0799051C0598F0F774FC0499F0F7D2 +:109DB00071FC011C281CF0F7FFF80699051C089897 +:109DC000F0F768FC0399F0F765FC011C281CF0F71C +:109DD000F3F80799051C0898F0F75CFC0299F0F776 +:109DE00059FC011C281CF0F787FDB86263692668DE +:109DF0000293E369E56A0393636A04932369059315 +:109E000063680693E3680793236A089380231B061D +:109E1000F0180299F0F73EFC291CF0F73BFC03997F +:109E20000C90301CF0F736FC0499F0F733FC011C61 +:109E30000C98F0F7C1F80699061C0598F0F72AFC73 +:109E4000291CF0F727FC011C301CF0F7B5F8079926 +:109E5000051C0598F0F71EFC0499F0F71BFC011C8B +:109E6000281CF0F749FD0699051C0898F0F712FC2C +:109E70000399F0F70FFC011C281CF0F73DFD079932 +:109E8000051C0898F0F706FC0299F0F703FC011C8A +:109E9000281CF0F791F8F8622669636AA56B0293B3 +:109EA000A36A02990393636B0493236A059363691E +:109EB0000693A3690793236B089380231B06F0186E +:109EC000F0F7E8FB291CF0F7E5FB03990C90301C38 +:109ED000F0F7E0FB0499F0F7DDFB011C0C98F0F7BC +:109EE0006BF80699061C0598F0F7D4FB291CF0F7CF +:109EF000D1FB011C301CF0F75FF80799051C059891 +:109F0000F0F7C8FB0499F0F7C5FB011C281CF0F71B +:109F1000F3FC0699051C0898F0F7BCFB0399F0F7D1 +:109F2000B9FB011C281CF0F7E7FC0799051C0898F1 +:109F3000F0F7B0FB0299F0F7ADFB011C281CF0F71D +:109F40003BF83863636A26680293A36AA56B0393A0 +:109F5000636B02990493236A0C9005936368301C29 +:109F60000693A3680793236B0893F0F793FB291CD0 +:109F7000F0F790FB03990D90301CF0F78BFB0499E0 +:109F8000F0F788FB011C0D98F0F7B6FC0699061C4B +:109F90000598F0F77FFB291CF0F77CFB011C301CB7 +:109FA000F0F7AAFC0799051C0598F0F773FB0499D4 +:109FB000F0F770FB011C281CEFF7FEFF0699051C4B +:109FC0000898F0F767FB0399F0F764FB011C281C65 +:109FD000EFF7F2FF0799051C0898F0F75BFB029971 +:109FE000F0F758FB011C281CF0F786FC78636369C6 +:109FF00026680293A369A56B0393636B049323699B +:10A00000059363680693A3680793236B08938023E3 +:10A010001B06F0180299F0F73DFB291CF0F73AFBFC +:10A0200003990D90301CF0F735FB0499F0F732FBE3 +:10A03000011C0D98EFF7C0FF0699061C0598F0F774 +:10A0400029FB291CF0F726FB011C301CEFF7B4FF9D +:10A050000799051C0598F0F71DFB0499F0F71AFB0A +:10A06000011C281CF0F748FC0699051C0898F0F71D +:10A0700011FB0399F0F70EFB011C281CF0F73CFCC8 +:10A080000799051C0898F0F705FB0299F0F702FB09 +:10A09000011C281CEFF790FFB86326686369A56A66 +:10A0A0000293A36902990393636A301C04932369A2 +:10A0B000059363680693A3680793236A0893F0F7F0 +:10A0C000E9FA291CF0F7E6FA03990D90301CF0F735 +:10A0D000E1FA0499F0F7DEFA011C0D98F0F70CFC98 +:10A0E0000699061C0598F0F7D5FA291CF0F7D2FA64 +:10A0F000011C301CF0F700FC0799051C0598F0F7CF +:10A10000C9FA0499F0F7C6FA011C281CEFF754FFAE +:10A110000699051C0898F0F7BDFA0399F0F7BAFA0A +:10A12000011C281CEFF748FF0799051C0898F0F759 +:10A13000B1FA0299F0F7AEFA011C281CF0F7DCFB2B +:10A14000F86321680998F0F7A5FA6168051C0A9878 +:10A15000F0F7A0FA011C281CEFF72EFFA168051CE0 +:10A160000B98F0F797FA011C281CEFF725FFE16820 +:10A17000051C0C98F0F78EFA011C281CEFF71CFF49 +:10A180000021041CEFF734FE002805D000210198BF +:10A190000A1CFFF709FA13E0FE20211C8005F0F7E6 +:10A1A00087F83E1C3C1C051C40362068291CF0F733 +:10A1B00071FA01C4B442F8D101980FA9FFF70AFA65 +:10A1C0000FA8FFF74DFA04E0002101980A1CFFF7E1 +:10A1D000EBF9019813B0F0BDF0B58BB00593161CE8 +:10A1E000059A0D1C4B6803908968002A01D00293E0 +:10A1F00001E00291191C029B7268934205D0002174 +:10A2000003980A1CFFF7D0F942E007A8B268FFF7ED +:10A21000CBF90027089B00939F4232DA002300937A +:10A22000009B099A93422ADA002300240193029B9F +:10A230009C421BDA059B281C002B02D0211C3A1CD7 +:10A2400001E0391C221CFFF7E8F9211C009A049058 +:10A25000301CFFF7E2F9011C0498F0F71BFA011C0F +:10A260000198EFF7A9FE01340190E0E7019B07A8F0 +:10A27000391C009AFFF7E3F9009B0133CFE7013760 +:10A28000C8E7039807A9FFF7A5F907A8FFF7E8F9BA +:10A2900003980BB0F0BD10B5041CEDF735FB201C86 +:10A2A000EEF7A2FB201C10BD836A80691B68184072 +:10A2B0004342584170470E23C25E1023C15E1223F1 +:10A2C000C35E494352435B438818C018704713B5B7 +:10A2D000041CEDF7FDFB211C231C36310A783433B6 +:10A2E000824204D11A78092A04D8013201E00022FE +:10A2F00008701A7035340A782178914209D01B7899 +:10A30000092B06D92270684692B21B210123EDF772 +:10A3100091F813BD08B5836A82691B681A4201D19E +:10A32000EDF79CFC08BD012904D0022906D11023B9 +:10A33000C05E05E00E23C05E404201E00E23C05E19 +:10A340007047012904D0022906D10E23C05E01E026 +:10A350001023C05E404201E01023C05E704712220D +:10A36000835E5842022900D0181C7047F7B5041CC0 +:10A370001023C05EF0F75EFC0E23E55E1222A35EA2 +:10A380006D425B420190281C0093F2F793FA061C81 +:10A3900000980F1CF2F78EFA021C0B1C301C391CA3 +:10A3A000F3F7F0F8F2F716FB2063061CF3F784F8D6 +:10A3B000071C301CF2F7D4FE802212069446019B43 +:10A3C000061C6344281C0193F0F734FC391CF0F799 +:10A3D00061F9051C0098F0F72DFC311CF0F75AF9D3 +:10A3E000011C281CEFF7E8FD011C0198EFF760FF46 +:10A3F000F2F74EFD0122A379E0621343A371F7BD8A +:10A4000010B58379041CDB0701D4FFF7AFFFE06AC6 +:10A4100010BD10B58379041CDB0701D4FFF7A6FF3C +:10A42000206B10BD35300078704752DF70477047A1 +:10A4300010B5041CEEF7D8FA201C10BD70B5041C32 +:10A44000161C1D1C03220723EEF72EF9201C311CBD +:10A45000022207231030EEF727F9201C291C0122C5 +:10A4600007232030EEF720F9201C0499042203234F +:10A470003030EEF719F9201C0599052203234030EE +:10A48000EEF712F9201C0699112201235030EEF745 +:10A490000BF9201C07990C2201236030EEF704F918 +:10A4A000201C08990B2201237030EEF7FDF8201CC8 +:10A4B0000999122201238030EEF7F6F8201C0A9940 +:10A4C0000A2201239030EEF7EFF8201C0B990622A8 +:10A4D0000323A030EEF7E8F8201C0C991A22012380 +:10A4E000B030EEF7E1F8201C0D9914220123C030A2 +:10A4F000EEF7DAF8201C0E9917220123D030EEF780 +:10A50000D3F8201C0F9916220123E030EEF7CCF887 +:10A51000201C109915220123F030EEF7C5F8601CBD +:10A52000119910220123FF30EEF7BEF8201C1130E4 +:10A53000129900220123FF30EEF7B6F8201C2130DB +:10A5400013991E220123FF30EEF7AEF8201C70BDD8 +:10A5500010B5041C006800F0B5FA201C10BD08B549 +:10A560000A1C002100F065FE08BD10B5041C086837 +:10A57000206000F09DFA201C10BD08B50368998882 +:10A58000981D5B885943FFF7EAFF08BD10B5041C0E +:10A590000023EDF751FC201C10BDF0B5071C89B05D +:10A5A0000EA800780591079038680490468800202E +:10A5B000B24200DB82E0049CA488A34200DB7DE081 +:10A5C0000D6803956D88AC46151C65440195854260 +:10A5D00074DD039DAD885919069181426EDD002A14 +:10A5E00005DA01990291B14207DD029605E0B11A40 +:10A5F0000291614501DD61460291002B05DA069961 +:10A600000191A14206DD019404E0E11A0191A94201 +:10A6100000DD01955542D01728400025039C0634E3 +:10A62000AB4202DA61464D425D4328182118D443FB +:10A63000E41722400024049803910630A34201DD70 +:10A64000341C5C43079BA2188418002B02D1059D83 +:10A650001E1C1BE00022101C019B9A422EDA0023D4 +:10A6600002998B4207DA0399CD5C002D01D0E554A5 +:10A6700001300133F4E7059B03991B6801325B88C5 +:10A68000CB1803933B685B88E418E5E7019B9E4287 +:10A690000EDA201C029A039900F0AEFD2B68039A93 +:10A6A0005B880136D31803933B685B88E418EDE7B9 +:10A6B000D843C0171840029B4343181C09B0F0BD93 +:10A6C00010B518C96210E10701D58158CB58801820 +:10A6D000984710BD10B5041CEDF748FD201CEEF79F +:10A6E00083F9201C10BD70B5051C041C74350121B4 +:10A6F000281CEDF767FC221C5A3213780133DBB2B9 +:10A700001370E17901318B4225D10023261C13708F +:10A71000626D58360221525E33882021934205DA59 +:10A72000201C19B25430FEF732FF011CE2790023DD +:10A73000281CEDF7F9FB626D33880221525E9342CB +:10A7400007DD231C00224C331A70201CEDF70CFE91 +:10A7500001E00133338070BD70B5051C061CC26D6D +:10A7600060350221525E2B88041C743620219342EE +:10A7700004DA19B25C30FEF70AFF011C0022301C1B +:10A78000131CEDF7D1FBE26D2B880221525E934240 +:10A7900007DD231C00224C331A70201CEDF7E4FD6A +:10A7A00001E001332B8070BD73B5041C061C251C11 +:10A7B0007436301C6835FFF7E0FE0023EA5E211C8A +:10A7C000002364310093301CFFF7E7FE002804D11A +:10A7D000231C70331B78002B04D1231C6A331B7895 +:10A7E000002B07D1231C00224C331A70201CEDF7DC +:10A7F000BBFD06E02A885BB29B182B8001237034D6 +:10A80000237073BDF0B5071C0021051C041C6A37BA +:10A81000406E7956408868350023EA5E4B1D1B1A4E +:10A82000201C261C85B07030039074369A4202DCDE +:10A830000378002B22D1002A04DD494209B2301CE2 +:10A84000EDF7C0FB0023EA5E211C0023301C0093BF +:10A850006431FFF7A2FE0023FB56002B05D1221C1A +:10A860004C321370201CEDF77FFD0123039A137007 +:10A8700000222B88BA56D3182B8009E0231C002213 +:10A880004C33301C1A70FFF778FE201CEDF76CFD7E +:10A8900005B0F0BD38B5051C4C35297800292BD002 +:10A8A000021C041C503213884E3406339BB21380B2 +:10A8B00024889C4220D80023041C1380022901D143 +:10A8C000FFF711FF2B78032B02D1201CFFF744FF69 +:10A8D0002B78042B02D1201CFFF766FF2B78052B69 +:10A8E00002D1201CFFF78EFF2B78062B04D100230A +:10A8F000201C2B70EDF738FD38BD13B5827A041C8F +:10A90000042A09D1818801236846ECF793FD0023CE +:10A91000A3722033E3720AE0EDF7A6FC201CFFF7D8 +:10A92000B9FFE37A5B00E372A37A0133A37213BD2C +:10A9300008B57430FFF721FE08BD031C10B5443183 +:10A9400014C914C310BD10B58379041C1B0706D5A8 +:10A95000806800F061FA0D23E35683420CD0201C7E +:10A96000EDF7AEFE0D2001212056EEF7A9FA0822E0 +:10A97000A379A0601343A371002010BD80210CC8EF +:10A980009B1A09069B080B4313607047031C70B5A4 +:10A990008208980702D1181E01D137E00132541CF9 +:10A9A00072B621C9A84219D20368002B13DA5B00E2 +:10A9B0005B08990041180E68002E01DAA94202D303 +:10A9C000A34208D30DE08021760076089B19090682 +:10A9D00019430160EDE79B00C018E3E762B6002071 +:10A9E00014E00232934203D992008218954204D8AF +:10A9F00003685B005B08036006E080211B1B0906FF +:10AA0000043A0B431360046062B6043070BDF7B5BE +:10AA10001D1C08AB1B88041C1030161C0F1C019356 +:10AA2000ECF7EAFC6A460023928827806680A560DE +:10AA3000201CE360A280E361A361FEBD10B58388A2 +:10AA4000041C9B0702D58068EDF7CEFF201C10BDCB +:10AA50007FB584690192051C6B4600910122002C90 +:10AA60000DD102AC221C03CB03C20C20EDF798FFE2 +:10AA7000061C02996268FEF7EAFCAE6114E0A16868 +:10AA8000002902D001320C1CF9E7092A0CDC02ADC6 +:10AA90002A1C03CB03C20C20EDF782FF061C02998F +:10AAA0006A68FEF7D4FCA6607FBD0323038070476D +:10AAB00010B5041CEDF7B4FF002802D1238802333F +:10AAC000238010BD10B5041CEDF7AAFF002808D1A3 +:10AAD0002388023B9BB22380012B02D1201CEDF77F +:10AAE00083FF10BD37B50D1C131C011D44692A1CC2 +:10AAF0000068A04737BD026808B594460A6800237D +:10AB0000944507D104300431102200F066FB434223 +:10AB10004341DBB2181C08BD704780235B05F7B5C5 +:10AB20001A695B690F1C133B1C1C5443211C061C37 +:10AB3000EDF78CFF231C251C483301933B1BEA587F +:10AB4000291C301CEDF7C4FF019B04359D42F5D153 +:10AB50000020FEBD10B5041CEDF7D6FF201CEDF75C +:10AB600043FF201C10BD704710B5041CEDF73CFFDF +:10AB7000201C10BD031CC068002804D0426ADA60A3 +:10AB80001A7A013A1A72704737B5041CE568002D2D +:10AB90001ED0EA78012A06D0022A09D1201C1830DA +:10ABA000EEF736F80AE0201C1430EEF70FF805E057 +:10ABB00092B268461E210123ECF73CFCE3689D42FB +:10ABC000E4D1201CFFF7D6FF281CEDF70DFFDDE7D1 +:10ABD00037BD0023036070470023037070471FB523 +:10ABE000041C009202A80822019300F005FB039ABE +:10ABF000029B5010D20701D52258D3582018009933 +:10AC0000019A98471FBD0289031C8A4202D18079AC +:10AC1000012305E0428900208A4202D1987902236B +:10AC2000184070470289031C8A4202D180790423AC +:10AC300005E0428900208A4202D198790823184011 +:10AC400070470289031C8A4202D18079102305E0F3 +:10AC5000428900208A4202D1987920231840704707 +:10AC6000038910B58B4207D183790124002A01D0D2 +:10AC7000234300E0A343837143898B4207D1837947 +:10AC80000221002A01D00B4300E08B43837110BDE9 +:10AC9000038910B58B4207D183790424002A01D09F +:10ACA000234300E0A343837143898B4207D1837917 +:10ACB0000821002A01D00B4300E08B43837110BDB3 +:10ACC000038910B58B4207D183791024002A01D063 +:10ACD000234300E0A343837143898B4207D18379E7 +:10ACE0002021002A01D00B4300E08B43837110BD6B +:10ACF000F0B587B0009107898DB2041CBD4200D128 +:10AD000047896B465E88022E25D0052E11D0012E74 +:10AD100073D1201C291C321CFFF7A2FF201C391CF8 +:10AD2000FFF771FF002868D0A18804A8321C331CEB +:10AD30000EE0201C291C0122FFF7AAFF201C391C51 +:10AD4000FFF770FF002858D0321C0123A18804A807 +:10AD5000ECF770FB51E0201C391CFFF754FF002872 +:10AD600016D0321CA188012302A8ECF763FB201C3B +:10AD7000291CFFF757FFA68800282ED0201C391C5D +:10AD8000FFF750FF002828D004A8311C042227E038 +:10AD9000201C291CFFF755FF00280ED1267B012E11 +:10ADA0000BD1201C291CFFF73DFF002821D0291CB6 +:10ADB000042204A8331CECF73DFB201C291C0022B4 +:10ADC000FFF74EFF201C291C0022FFF761FF201C0B +:10ADD000291C0022FFF774FF0FE0311C032204A896 +:10ADE0000123ECF727FB201C391C0122FFF768FF29 +:10ADF000E3E704A8291C0322DCE707B0F0BD0173D8 +:10AE0000704738B50D1C0121041C41560278281CDE +:10AE1000EEF72AF8657038BD407840B2704710B53B +:10AE2000041C0068FFF74EFE201C10BDF8B5D4438B +:10AE3000E4171440071CA01D1E1C0D1CEDF7B0FDEF +:10AE40003860FFF732FE3B681C7138684680002D81 +:10AE500004D00530291C221C00F0CEF9F8BD0A1CD4 +:10AE6000002110B5041C0B1CFFF7E0FF201C10BDD7 +:10AE700051DF704761DF7047F8B5061C0F1C041CDA +:10AE80001518AC4206D0BB1B195D201CEEF7A4F9C7 +:10AE90000134F6E7F8BD08B5FDF784FE08BD08B536 +:10AEA000FDF785FE08BD08B5C36A011C002B04D15F +:10AEB0008369002B06D0984704E08069002801D000 +:10AEC0001C31984708BD10B5041CEEF7F5F9201C9D +:10AED00000F07DF8201C10BD10B5041CEEF7FAF947 +:10AEE000201C00F074F8201C10BD08B50430FEF7DB +:10AEF00049F808BD08B50A1C031C02211C30002AB1 +:10AF000004D09A6300220221DA640132EEF724FDB4 +:10AF100008BD836980681B681840431E98417047CC +:10AF200008B54369011C002B04D10368002B06D02F +:10AF3000984704E00068002801D00431984708BD14 +:10AF400008B5012903D0022904D1383000E02030AF +:10AF5000FFF7E6FF08BDF0B585B01C1C0AAB061C68 +:10AF60000F1C03921D78EEF7FDF901235D4000955B +:10AF7000231C301C391C039AFDF796FF201A441E2F +:10AF8000A04105B0F0BDF0B585B01C1C0AAB061C95 +:10AF90000F1C03921D78EEF7E5F901235D40009543 +:10AFA000231C301C391C039AFDF73AFF201A441E5B +:10AFB000A04105B0F0BD0023CB565A1C05D08342FA +:10AFC00001D1486802E00C31F5E7181C704708B55C +:10AFD000F6F7B2F808BD08B5031C081C191CF5F7F4 +:10AFE0005BFD08BD011C002008B5021C031CFDF719 +:10AFF0000CFD08BD08B500210A22F7F72DF808BDA1 +:10B00000F7B58A89051C0C1C13075ED44B68002B0E +:10B0100002DC0B6C002B1ADDE76A002F17D000232F +:10B020002E682B6080235B011A4001D0626D15E011 +:10B03000281C216A0123B847021C431C0ED12B682F +:10B04000002B0BD01D2B01D0162B02D12E6000201F +:10B050005EE04021A3890B43A38159E0A3895B07EC +:10B0600006D56368D21A636B002B01D0236CD21A09 +:10B070000023281C216AE76AB847A389421C06D12D +:10B080002A68002A03D01D2A01D0162A19D10022CD +:10B09000626022692260DB0405D5431C02D12B6863 +:10B0A000002B00D16065616B2E600029CFD0231C7E +:10B0B0004433994202D0281CF6F748F80020606318 +:10B0C00026E040221343A38122E00F69002FBED067 +:10B0D0000B680F60DB1B01930023920700D14B69C3 +:10B0E000A360019B002BB2DD281C216A3A1C019B46 +:10B0F000A66AB047002806DC40220120A38940420E +:10B100001343A38104E0019B3F181B1A0193E8E756 +:10B11000FEBD70B568254B1E5D430E1C291C7431A5 +:10B12000F6F75AF8041E08D000212A1C0160466078 +:10B130000C30A060683200F07CF8201C70BD7047B5 +:10B14000704708B5F5F7D8FE08BDF7B54830041CC0 +:10B1500000260191002C12D0A5686768013F0CD42D +:10B16000AB89012B07D90E22AB5E013303D0281C1B +:10B17000019B984706436835F0E72468EAE7301CEE +:10B18000FEBDF7B5041C071C002601914834002CB5 +:10B1900016D06368A5680093009B013B00930DD413 +:10B1A000AB89012B08D90E22AB5E013304D0381CC9 +:10B1B000291C019B984706436835EDE72468E6E7BC +:10B1C000301CFEBDC9B28218904204D003788B4275 +:10B1D00002D00130F8E70020704730B500249442D7 +:10B1E00008D0035D651C0C5DA34201D0181B02E072 +:10B1F0002C1CF4E7002030BD002310B5934203D08F +:10B20000CC5CC4540133F9E710BD10B5814208D2BB +:10B210008B18984205D29B1A013A09D3995C815444 +:10B22000FAE70023934203D0CC5CC4540133F9E71E +:10B2300010BD031C8218934202D019700133FAE743 +:10B240007047936810B5013B9360002B05DA946951 +:10B25000A34208DBCBB20A2B05D01368581C106040 +:10B260001970C8B201E0F6F7C5FF10BDF8B5061CAD +:10B270000F1C141CD518AC4208D02178301C3A1C85 +:10B28000FFF7DFFF0134431CF5D100E00020F8BDDB +:10B29000F7B5171C01930A698B6800900C1C934248 +:10B2A00000DA131C221C3B6043321278002A01D0C2 +:10B2B00001333B6023689B0602D53B6802333B6049 +:10B2C000062523681D401ED0231C43331B785A1EBD +:10B2D0009341226892061CD53020E1184031C87095 +:10B2E000211C5A1C45310978A21840320233D17012 +:10B2F0000FE0221C0123009801991932089EB047E3 +:10B30000431C0ED00135E3683A689B1A9D42F0DB7E +:10B31000DAE7221C009801994332089DA847431C94 +:10B3200002D10120404220E006232068E1683A680B +:10B3300003400025042B03D18D1AEB43DB171D407E +:10B34000A3682269934201DD9B1AED180027AF42E2 +:10B350000ADA221C0123009801991A32089EB0478C +:10B36000431CDED00137F2E70020FEBD092208B5FC +:10B370008189031C0A400020092A02D1181CF5F714 +:10B3800043FC08BDF0B50A785E2A02D04B1C0024AD +:10B3900002E001244A788B1C011C451CFF350C700F +:10B3A0000131A942FBD1002A01D1581E1CE0012124 +:10B3B0000C1BE7B2875419785E1C2D2906D05D2935 +:10B3C0000FD000290FD00A1C331CF2E75D785D2DE9 +:10B3D000F9D09542F7DB023301328754AA42FBDBF6 +:10B3E000E9E7301C00E0181CF0BD08B54A424A41AC +:10B3F00080235200DB00F6F789FC08BD002070476F +:10B4000008B50E23C95EF6F7D5FF08BD021CC9B208 +:10B410001378002B03D08B4204D00132F8E7181CBC +:10B42000002900D1101C704702780B78002A03D045 +:10B43000013001319A42F7D0D01A70470023C25C24 +:10B440000133002AFBD1581E7047002330B59A42C1 +:10B450000DD0013AC45CCD5CAC4202D1934202D122 +:10B46000251C631B03E00133002CF3D1F8E7181C03 +:10B4700030BD0B7830B5722B0ED0772B07D0612BF7 +:10B480000ED182258420AD00012340001BE0C025A1 +:10B490000123ED00082016E0002504202B1C12E0FB +:10B4A0001623036000201BE0622C11D0782C12D0F0 +:10B4B0002B2C08D10F3CA0430C3C20430D3CA34354 +:10B4C0001C1C0223234301310C78002CECD105E035 +:10B4D00080246402F6E780242401F3E72B43136001 +:10B4E00030BDF8B5061C0C1C151C002904D1111C1C +:10B4F000F5F772FE041C18E0002A03D1F5F726FECA +:10B500002C1C12E000F06FF8A8420ED2301C291C4F +:10B51000F5F762FE071E07D0211C2A1CFFF76CFE00 +:10B52000301C211CF5F712FE3C1C201CF8BD38B560 +:10B53000141C4B1C02D10120404234E0938920228C +:10B540009343626BA381CDB26368002A0FD0A26BD4 +:10B55000934206DA2368013B23601D706368013360 +:10B560001FE0211CF6F708FE0028F3D0E3E721696D +:10B570002268002909D08A4207D9511E0878A842BA +:10B5800003D10133216063600DE02364231C443345 +:10B5900063630323A363231C4633E2631D702360AC +:10B5A0000123281C636038BD10B50C1C496B0029B1 +:10B5B0000ED0231C4433994201D0F5F7C7FD00207B +:10B5C000236C60636360834202D0E36B236009E015 +:10B5D000236920222360002301206360A389404265 +:10B5E0001343A38110BD0B1F1A68101F002A04DA31 +:10B5F000891804390B68D01804387047F8B5C0466C +:10B60000F8BC08BC9E467047F8B5C046F8BC08BCFC +:10B610009E4670470000000000000000000000008F +:10B6200071500100498A02000D8A020000000000EA +:10B6300000000000000000007B8A0200778A020000 +:10B64000A18A0200CB8A0200C78A0200CF8A0200C8 +:10B65000D38A02000000000000000000138C0200EA +:10B66000138C0200FCFFFFFF000000000000000040 +:10B6700000000000000000000000000000000000CA +:10B680000000000000000000138C02000000000019 +:10B690000000000000000000258B0200558B020016 +:10B6A0000000000000000000138C0200138C020058 +:10B6B000138C0200138C0200138C0200138C020006 +:10B6C000BD8B020000000000000000000000000030 +:10B6D0000000000000000000138C0200138C020028 +:10B6E000138C0200138C0200138C0200138C0200D6 +:10B6F000BD8B02000000000000000000FCFFFFFF07 +:10B700000000000000000000000000000000000039 +:10B710000000000000000000196001006D900200B0 +:10B72000000000000000000075610100B961010027 +:10B7300097AE02009FAE0200C0FFFFFF00000000B6 +:10B740007B8A0200778A0200A18A0200CB8A02006B +:10B75000C78A0200CF8A0200D38A020099610100E1 +:10B76000CB6101007992010069920100BCFFFFFFEB +:10B7700000000000A9610100DD610100000000007F +:10B780000000000000000000716C010085900200C4 +:10B7900087900200356D0100AF91020000000000AB +:10B7A000000000000000000083900200E992020007 +:10B7B000CF910200B96D0100D79102000000000096 +:10B7C000000000000000000083900200359302009A +:10B7D0002793020041700100159302000000000051 +:10B7E00000000000000000008390020015A302008A +:10B7F000A9A202000979010097A20200000000003E +:10B800000000000000000000839002008D7D010018 +:10B81000C17C01002FA4020031A40200000000003E +:10B8200000000000000000008983010085900200F4 +:10B83000879002006D810100D5A602000000000083 +:10B8400000000000000000008390020085900200CC +:10B85000879002008D9002008F900200000000008F +:10B86000000000000000000083900200298B01000E +:10B8700087900200098B010055AB02000000000018 +:10B8800000000000000000008390020089AB02006D +:10B890008790020067AB020069AB02000000000065 +:10B8A000000000000000000083900200859002006C +:10B8B000879002008B9002009B9002000000000025 +:10B8C00000000000000000002D610100ED6101009A +:10B8D00097AE02009FAE0200C0FFFFFF0000000015 +:10B8E0007B8A0200778A0200A18A0200CB8A0200CA +:10B8F000C78A0200CF8A0200D38A02005561010084 +:10B90000FF6101007992010069920100BCFFFFFF15 +:10B9100000000000656101001162010000000000EC +:10B920000000000000000000B9920100C7AE020054 +:10B93000A7AE0200000000000000000000000000B0 +:10B94000D5920100D9AE0200E2652F227F2B7A3C0E +:10B95000075C143326A6813CBDCBF07A8807703C87 +:10B96000075C143326A6913C4FBB610567ACDD3FF5 +:10B97000182D4454FB21E93F9BF681D20B73EF3F16 +:10B98000182D4454FB21F93F000000000000304313 +:10B9900000000000000030C30000000000000000B4 +:10B9A0000A000000D10200006C2403006F24030091 +:10B9B000792403007D2403008124030093240300E1 +:10B9C0009F240300A9240300B6240300C12403001C +:10B9D000CB240300D8240300E3240300F024030055 +:10B9E000FB24030006250300112503001C2503008A +:10B9F0002B250300362503004725030052250300AD +:10BA0000612503006D2503007825030082250300CE +:10BA10008D2503009B250300A9250300B7250300FE +:10BA2000C1250300CB250300D6250300E025030034 +:10BA3000EE250300F8250300032603000C2603006F +:10BA4000152603001E2603002726030030260300C8 +:10BA50003F2603004D2603005826030060260300FE +:10BA60006C260300742603007C2603008326030053 +:10BA70008A26030090260300962603009D260300D5 +:10BA8000A3260300A9260300AF260300B526030062 +:10BA9000BB260300C1260300C7260300CE260300F1 +:10BAA000D5260300DB260300E2260300E926030077 +:10BAB000ED260300F2260300F7260300FE2603000E +:10BAC000042703000C270300142703001A27030090 +:10BAD00020270300272703002E2703003527030014 +:10BAE0003D270300432703004A2703005127030093 +:10BAF00059270300612703006C2703007727030001 +:10BB00008727030097270300A9270300BA2703000C +:10BB1000CB270300D9270300E4270300F027030005 +:10BB200002280300162803002B2803003B280300EB +:10BB3000492803005C280300692803007D280300CE +:10BB40008828030096280300A4280300B0280300D7 +:10BB5000C6280300D0280300E0280300EF280300D4 +:10BB6000FD2803000A290300162903002A290300DF +:10BB7000372903004B2903005A29030061290300D8 +:10BB8000692903007029030079290300842903002F +:10BB900092290300982903009E290300A429030089 +:10BBA000AB290300B3290300B9290300C12903000D +:10BBB000C8290300D4290300DC290300E729030076 +:10BBC000ED290300FB2903000A2A0300112A0300C0 +:10BBD000172A0300202A03002C2A0300332A03001B +:10BBE0003A2A0300432A03004B2A0300582A030081 +:10BBF000622A03006C2A0300762A0300802A0300CD +:10BC0000872A03008D2A0300932A0300982A030041 +:10BC10009E2A0300AB2A0300B82A0300BF2A0300B0 +:10BC2000C52A0300CC2A0300D52A0300DB2A03001F +:10BC3000E12A0300E72A0300F12A0300FE2A030099 +:10BC4000052B03000B2B0300112B0300182B030003 +:10BC50001E2B0300252B03002B2B0300332B03008B +:10BC60003B2B0300422B0300492B0300542B030002 +:10BC70005C2B0300652B0300742B03007A2B03005D +:10BC8000822B0300882B0300932B03009B2B0300C4 +:10BC9000A22B0300AA2B0300B22B0300B82B030036 +:10BCA000BE2B0300C42B0300CB2B0300D22B0300BD +:10BCB000DA2B0300E12B0300EC2B0300F22B030033 +:10BCC000FA2B0300012C03000B2C0300182C03009B +:10BCD000212C03002A2C0300332C03003B2C0300EF +:10BCE000422C03004A2C0300522C03005B2C03005F +:10BCF000632C03006C2C0300752C03007C2C0300C8 +:10BD0000832C03008B2C0300942C03009D2C030038 +:10BD1000A62C0300AC2C0300B62C0300BD2C0300A2 +:10BD2000C52C0300CE2C0300D62C0300DF2C03000F +:10BD3000EC2C0300F72C0300012D03000D2D030054 +:10BD40001A2D0300222D03002A2D0300342D030099 +:10BD50003E2D0300482D0300522D03005C2D0300EF +:10BD6000672D03006F2D03007E2D0300882D030037 +:10BD7000942D03009F2D0300AB2D0300B62D03006F +:10BD8000BF2D0300C72D0300D12D0300DE2D0300BE +:10BD9000F22D0300012E0300172E0300242E0300B2 +:10BDA0002F2E03003C2E0300422E0300592E0300C9 +:10BDB000772E03007F2E03008B2E0300922E0300AC +:10BDC000962E03009B2E0300A22E0300A82E030034 +:10BDD000AE2E0300B42E0300BA2E0300C02E0300C3 +:10BDE000C72E0300CE2E0300D52E0300DD2E030048 +:10BDF000E42E0300EF2E0300F62E0300FD2E0300B9 +:10BE0000052F0300102F0300182F0300202F03001D +:10BE1000282F03002F2F0300372F03003F2F03008D +:10BE2000492F0300532F03005E2F03006A2F0300E6 +:10BE3000762F0300822F0300902F0300B32F0300FF +:10BE4000BE2F0300C92F0300D62F0300E32F0300EA +:10BE5000EF2F0300FB2F0300063003001030030018 +:10BE60001730030023300300293003003030030073 +:10BE700039300300443003004C30030055300300D8 +:10BE80005E30030068300300773003007E3003002B +:10BE90008F300300A1300300AA300300B430030048 +:10BEA000BB300300C7300300D0300300DE30030096 +:10BEB000E9300300EE300300F830030002310300E4 +:10BEC0000B31030017310300223103002E31030030 +:10BED000353103003D3103004B310300563103007F +:10BEE0005E31030066310300753103007D310300CC +:10BEF0008B310300923103009C310300AA3103000F +:10BF0000B1310300BC310300D1310300EC31030037 +:10BF1000FF3103000E3203001E3203002C320300F7 +:10BF20003B3203004F3203007032030091320300B2 +:10BF30009E320300AB320300B2320300B932030079 +:10BF4000C0320300C7320300CE320300D5320300F3 +:10BF5000DC320300E3320300EA320300F132030073 +:10BF6000F9320300013303000933030011330300E6 +:10BF70001933030021330300293303003133030055 +:10BF800039330300493303005133030059330300AD +:10BF9000613303006A330300733303007F3303000C +:10BFA0008B33030098330300A6330300B13303003F +:10BFB000BE330300CA330300D2330300E03303006F +:10BFC000E8330300EE330300F633030001340300CB +:10BFD00009340300123403001E3403002634030026 +:10BFE00031340300373403003D340300423403008E +:10BFF0004C340300553403005E34030067340300FF +:10C000007034030079340300823403008B3403005E +:10C01000943403009D340300A7340300B1340300BB +:10C02000BB340300C6340300D0340300DB34030008 +:10C03000E5340300F0340300FA340300053503004F +:10C0400010350300203503002D350300373503007C +:10C0500047350300503503005F35030068350300A2 +:10C060006E3503007F3503008E3503009E350300D7 +:10C07000AA350300B1350300BA350300C335030008 +:10C08000CC350300DA350300E1350300E935030060 +:10C09000F4350300003603000E36030016360300A5 +:10C0A0001E36030028360300303603003B360300FB +:10C0B00043360300503603005D3603006F3603003D +:10C0C00080360300933603009D360300A436030038 +:10C0D000AD360300B5360300BE360300C536030097 +:10C0E000CC360300D3360300DA360300E83603000B +:10C0F000FA360300FF360300053703000D3703004F +:10C100001637030027370300323703003D3703009B +:10C110004A37030058370300663703007E370300B1 +:10C120008E370300963703009E370300A6370300BF +:10C13000B3370300C5370300D2370300E0370300ED +:10C14000EF370300F4370300FB3703000238030026 +:10C150000A38030014380300203803002B3803008A +:10C1600030380300353803003A3803004238030002 +:10C17000543803005E380300683803007838030041 +:10C180008438030098380300AD380300BB3803003F +:10C19000C1380300C8380300CC380300D23803008C +:10C1A000DB380300E3380300EF380300FA380300FC +:10C1B00002390300083903000F3903001B3903005B +:10C1C000273903002D390300353903003D390300B9 +:10C1D00047390300523903005A390300623903001A +:10C1E0006E3903007C390300863903008D39030062 +:10C1F00099390300A3390300AA390300B0390300B9 +:10C20000BD390300C8390300D2390300DE39030009 +:10C21000E7390300F2390300FE390300083A03004E +:10C220000C3A0300113A0300183A03001F3A0300C6 +:10C23000243A0300293A0300303A0300373A030056 +:10C240003D3A0300433A0300493A03004F3A0300E2 +:10C25000563A03005B3A0300603A0300673A030072 +:10C260006E3A0300733A03007A3A0300803A0300FF +:10C27000863A03008A3A03008F3A0300953A030096 +:10C280009D3A0300A53A0300AC3A0300B33A030019 +:10C29000BA3A0300BF3A0300C63A0300CD3A03009E +:10C2A000D23A0300D93A0300E03A0300E73A030028 +:10C2B000EC3A0300F33A0300FA3A0300013B0300AF +:10C2C000083B03000E3B0300143B03001A3B030032 +:10C2D000203B0300263B03002A3B03002F3B0300C7 +:10C2E000373B03003E3B0300453B03004A3B030052 +:10C2F0004F3B0300563B03005B3B0300623B0300E4 +:10C30000693B03006F3B0300753B03007B3B03006D +:10C31000813B0300873B03008D3B0300933B0300FD +:10C320009A3B03009F3B0300A63B0300AB3B03008B +:10C33000B23B0300B83B0300BE3B0300C43B030019 +:10C34000CA3B0300D03B0300D63B0300DC3B0300A9 +:10C35000E33B0300E73B0300EC3B0300F23B03003D +:10C36000FA3B0300013C0300083C03000F3C0300C0 +:10C37000143C03001A3C0300203C0300263C03004D +:10C380002C3C0300323C0300363C03003B3C0300E2 +:10C39000423C0300493C0300503C0300553C030071 +:10C3A0005C3C0300633C0300683C03006F3C0300FB +:10C3B000753C03007B3C0300813C0300873C030089 +:10C3C0008B3C0300923C0300983C03009E3C03001E +:10C3D000A43C0300B33C0300BA3C0300C13C03008F +:10C3E000CC3C0300D33C0300DC3C0300E33C0300F3 +:10C3F000E83C0300ED3C0300F73C0300023D030072 +:10C400000D3D0300133D03001A3D0300283D0300CA +:10C410002E3D0300353D03003C3D0300433D03003A +:10C420004A3D03005B3D0300663D0300713D030090 +:10C430007A3D0300883D03008F3D03009B3D0300D0 +:10C44000A53D0300AE3D0300B83D0300C03D030021 +:10C45000CD3D0300DA3D0300E33D0300EE3D030064 +:10C46000F33D0300FB3D0300053E0300103E0300C7 +:10C470001A3E0300243E03002D3E0300383E030015 +:10C48000423E03004C3E0300533E0300603E030067 +:10C49000693E03006F3E03007B3E0300823E0300C3 +:10C4A0008B3E0300933E03009B3E0300A33E03002C +:10C4B000AF3E0300B73E0300C03E0300CD3E030085 +:10C4C000DD3E0300E73E0300F03E0300F83E0300BC +:10C4D000023F03000A3F0300163F0300203F030012 +:10C4E000283F0300373F0300443F030084D8020085 +:10C4F00002000200D105000080CA02000000000016 +:10C50000080000004D3103003CFF02000200000063 +:10C51000560100001CC502009CC50200BCDC0200E4 +:10C5200003000000030000000F00000001000000F5 +:10C530006E000000B6050000B60900007CC50200D0 +:10C54000BE09000068C50200CE09000008C502004F +:10C5500096090000F8C40200760900008E09000068 +:10C56000D6090000ECC40200BCDC0200030000009D +:10C5700007000000090000000100000080CA02005E +:10C580000000000005000000513F030064CE0200DF +:10C590003F0000000700000030C502003801000025 +:10C5A0003601000028D90200B60000008CC5020048 +:10C5B00064CE020017000000020000008CC60200DA +:10C5C00084D8020004000200A907000084D80200F9 +:10C5D000040002003D0700006CEB0200F4000000C4 +:10C5E000000000000000000000000000000000004B +:10C5F000000000000000000000000000D533020031 +:10C600003B2D0200000000000000000000000000C0 +:10C61000000000006CEB02007E0000002D0800000E +:10C620005D2D020000000000150700001109000048 +:10C63000000000000D0B00001508000000000000C5 +:10C64000192D02000000000000000000B0C502002B +:10C650006CEB0200820000002D080000B10B00000E +:10C660000000000015070000110900000000000094 +:10C670000D0B00001508000000000000192D02003D +:10C680000000000000000000B0C502005E060000CF +:10C69000C0C5020086060000CCC502006CEB02009B +:10C6A0009E0000003D0E0000CF2E020000000000A2 +:10C6B000150C0000510F0000000000002D100000BC +:10C6C000F90E000000000000000000000000000063 +:10C6D000000000006CC70200DA0000000302000046 +:10C6E00074E00200DB000000010200000000000016 +:10C6F0005E06000088C702000E06000048C7020060 +:10C7000016060000A0C702007E060000B8C702009F +:10C71000860600007CC702008E060000C4C7020027 +:10C720009E06000094C702002E02000054C70200BB +:10C730009606000060C70200DE060000D0C70200B7 +:10C74000A6060000ACC7020084D802000200010067 +:10C75000150D000084D80200020002009D0D0000AB +:10C7600084D80200040002001D0E000064CE020006 +:10C770005F0000000B000000F0C6020084D8020039 +:10C7800004000200850E000084D8020004000200AC +:10C79000750C000084D8020006000300C10C0000E4 +:10C7A00084D8020002000100212F020084D8020078 +:10C7B0000300FFFF3D0D000084D8020004000200CA +:10C7C000A92E020084D8020004000400752E020085 +:10C7D00084D80200020001003D0C00001E2303006B +:10C7E000C6200300482003002C230300EE1F030093 +:10C7F000AC210300B62103000C220300CE1F03006E +:10C80000881F0300462203009621030060220300D4 +:10C81000B4220300E0200300FA220300741F030087 +:10C82000D8230300482103007E220300821F030057 +:10C8300058220300982203002C200300B02103009B +:10C8400072230300E0220300D41F03004C200300E6 +:10C85000B423030088230300C81F03001C21030026 +:10C8600020240300F6220300CA2003003E23030015 +:10C870000E210300A422030010220300AC200300B9 +:10C880000822030052200300B01F0300AA22030065 +:10C890004220030080210300F82103006C230300E1 +:10C8A0008E2003007C1F0300D4220300D02003004D +:10C8B000C02103006C220300B22003008620030085 +:10C8C00076210300062303003A220300D22303004B +:10C8D000CC23030018200300122003005E20030075 +:10C8E00006200300B41F0300E82003004A230300CE +:10C8F000AE2203000C2303009E1F0300A8210300A7 +:10C90000322003000C240300F62003006A200300F9 +:10C91000DA20030080230300CC210300BA200300A7 +:10C920005A21030018240300EA2303002A220300EB +:10C93000E01F030038230300DA1F03003223030043 +:10C94000662103006823030092220300BA23030038 +:10C95000D6210300F22103005223030074200300B8 +:10C9600000230300942003008422030044230300D7 +:10C97000EC210300F823030078220300A221030026 +:10C98000FE21030002220300F0220300C222030062 +:10C99000282103009E220300BC220300E0210300A3 +:10C9A000DA2203003C210300941F0300402203000D +:10C9B0004E2103007E2003008A220300AC1F0300E7 +:10C9C000262303009A23030072220300E61F0300BC +:10C9D0009A2003002E210300BA1F03000C2003003D +:10C9E0007021030036210300C0230300C623030087 +:10C9F000EE200300142103005E2103003C2003000D +:10CA00008E1F030084210300C8220300CE220300EE +:10CA1000F41F0300FA1F030000200300E6210300B7 +:10CA2000342203007A21030066220300542103000C +:10CA3000422103005C23030022210300C21F0300E4 +:10CA4000E42203008A21030078230300F223030079 +:10CA500006210300C0200300642003009C21030082 +:10CA6000DE230300E4230300C6210300A02003000B +:10CA70001E2003002620030062230300EA22030095 +:10CA80006CEB02003E000000F9170000C5BE00007C +:10CA900000000000C117000079CD00000000000078 +:10CAA000BD1900009D170000000000006F58020033 +:10CAB00000000000000000007CCB0200E606000041 +:10CAC000D0EE0200EE06000064ED02008E060000CB +:10CAD000C8ED0200F6060000E8EE0200AE06000017 +:10CAE000ECED0200FE0600000CEF0200060700005D +:10CAF00080ED02000E070000E0ED020016070000C6 +:10CB0000C4EE0200B60600003CEF0200BE060000C4 +:10CB100098ED0200C60600008CED0200CE06000073 +:10CB200018EF02001E070000BCED02007E060000A8 +:10CB3000A4ED02002607000030EF02002E070000DF +:10CB400024EF020036070000F4EE02003E0700006A +:10CB5000B0ED020046070000DCEE02004E070000C8 +:10CB6000F8ED02005607000000EF02005E0700002B +:10CB700084EF020066070000D4ED020064CE0200DC +:10CB8000C700000018000000BCCA02006CEB0200E5 +:10CB90008E00000000000000A5330200000000002D +:10CBA0000000000000000000000000000000000085 +:10CBB000D53302008D1A00000000000000000000C4 +:10CBC000000000000000000084D802000200010004 +:10CBD000D5330200BCDC020001000000BCDC020016 +:10CBE00084D8020004000200312100008D340200CC +:10CBF000C3340200992C00005D340200533402005B +:10CC0000493402009128000084D80200020001008B +:10CC1000A1440000B94500005D460000000000008E +:10CC20000000000064CE02004F0000000900000078 +:10CC3000DCCC020084D80200020001007D2D00003F +:10CC40006CEB0200B20200000000000000000000D7 +:10CC500000000000000000000000000000000000D4 +:10CC600000000000000000000000000000000000C4 +:10CC700014CC02000000000024CC020084D8020082 +:10CC800002000200B12D00006CEB0200B3020000B4 +:10CC90000000000000000000000000000000000094 +:10CCA0000000000000000000000000000000000084 +:10CCB000000000000000000024CD02000000000081 +:10CCC00024CC020084D8020008000400A12D00003A +:10CCD00084D8020002000100912D000066060000C9 +:10CCE000D0CC0200C609000008CC0200B60000004B +:10CCF000C8CB0200BE000000C4CC0200A615000094 +:10CD000034CC020076050000C0EF0200AE14000033 +:10CD100090EF0200A6140000B4EF0200DE05000050 +:10CD20009CEF0200B94500005D46000000000000D5 +:10CD3000010000003CCD0200010000006CEB02008D +:10CD40008100000091380000AD38000000000000B4 +:10CD5000A7360200D33602000000000000000000E9 +:10CD600000000000000000000000000000000000C3 +:10CD700000000000000000003CCD020000000000A8 +:10CD80006CEB0200EF00000000000000000000005B +:10CD9000E336020000000000000000000000000078 +:10CDA0000000000000000000000000000000000083 +:10CDB0000000000000000000000000006CEB02001A +:10CDC000F40000000000000000000000000000006F +:10CDD0000000000000000000000000000000000053 +:10CDE000D53302004F3702000000000000000000B1 +:10CDF000000000000000000084D8020004000300CE +:10CE0000F5370200F9490300044A03000E4A030003 +:10CE1000BCDC02000100000064CE020084D80200E5 +:10CE200002000100793802006CEB0200790000007A +:10CE30009D3D00002941000000000000313E00003F +:10CE4000F13E00000000000079410000053D0000B7 +:10CE500000000000000000000000000010CE0200F2 +:10CE600034CF02006CEB0200880000009D3D000002 +:10CE70002941000000000000313E0000F13E0000AA +:10CE80000000000079410000053D000000000000A6 +:10CE900000000000000000000000000034CF02008D +:10CEA00084D80200020001009140000084D80200F2 +:10CEB00002000100A93E00000E060000A0CF020003 +:10CEC000160600001CCE02001E0600008CCF0200D9 +:10CED0002606000000D002002E06000028CF020027 +:10CEE00036060000A0CE02002E020000E8CF0200AD +:10CEF0003E060000ACCE020046060000F8CD02005F +:10CF00004E060000F4CF02005606000094CF020047 +:10CF1000D600000094DD0200DE000000A0DD02006B +:10CF2000E6000000ACDD020084D80200020001002F +:10CF30007540000064CE0200770000000E00000083 +:10CF4000B8CE02006CEB0200F4000000000000000C +:10CF500000000000000000000000000000000000D1 +:10CF60000000000000000000D5330200BB370200C3 +:10CF700000000000000000000000000000000000B1 +:10CF800084D8020004000300E54000006CEC0200BD +:10CF900080CF020084D8020002000100C93C0000DA +:10CFA00084D8020002000100293D00006CEB020061 +:10CFB000F1000000393D000000000000000000000A +:10CFC00000000000493802000000000000000000DE +:10CFD000E53C000000000000000000000000000030 +:10CFE000000000000000000084D8020004000300DC +:10CFF0001138020084D802000300FFFF893F0000BF +:10D0000084D80200040003002D3802006CEB0200FB +:10D010008F0000003148000091480000000000002F +:10D02000E54700009F3A02000000000000000000F9 +:10D0300000000000000000000000000000000000F0 +:10D0400000000000000000000000000007000000D9 +:10D05000130000002B00000059000000B300000086 +:10D060005B01000087020000CD040000F908000009 +:10D0700093100000951E00000B380000A165000011 +:10D080002DB80000D34B01007B530200652B040038 +:10D09000CF73070027460D00A59B170021E3290049 +:10D0A000A72E4A0084D80200000001006D4D000048 +:10D0B00028D90200AD020000D0D00200AF0200006B +:10D0C000B0020000B102000036010000B60200000C +:10D0D00064CE02002F0000000500000010D1020005 +:10D0E00080CA02000000000017000000D24A0300BE +:10D0F0003CFF0200050000008CD102007CD1020040 +:10D1000054D1020044D10200E0D00200BCD00200A1 +:10D110006E0000006E1500009606000070D102003F +:10D12000AE15000038D10200BE1500009CD10200EF +:10D130007615000064D1020084D8020000000000CF +:10D140002D47000080CA0200000000001D00000002 +:10D15000EA4A030080CA0200000000000300000049 +:10D16000084B030084D80200000000007553000043 +:10D1700084D80200020001008545000080CA020038 +:10D1800000000000080000004D31030080CA0200CA +:10D1900000000000080000004D31030084D80200A8 +:10D1A0000200010075470000AEC59D74CA1B0E5AEF +:10D1B00020BCBE4C00401C460000C842000020417C +:10D1C0001FB14F0A9595E62477CC2B3217B7D1388B +:10D1D0000AD7233CCDCCCC3D6CEB0200F300000021 +:10D1E0000000000000000000A55900000000000041 +:10D1F000000000000000000000000000000000002F +:10D20000000000000000000000000000000000001E +:10D210000000000084D8020004000200755B0000DA +:10D220006CEB0200F3000000015A00000000000057 +:10D2300000000000000000000000000000000000EE +:10D2400000000000D5330200915B000000000000E8 +:10D25000000000000000000068D2020084D8020034 +:10D2600002000100A15B000064CE02001F0000006C +:10D270000300000084D2020084D8020004000400ED +:10D28000415B0000660600005CD202006E060000F2 +:10D2900014D202007606000078D202006CEB020085 +:10D2A000F40000000000000000000000000000008A +:10D2B000000000000000000000000000000000006E +:10D2C000D53302006D5F0000000000000000000088 +:10D2D00000000000000000006CEB0200A000000055 +:10D2E00000000000E15F00000000000000000000FE +:10D2F000000000000000000000000000D533020024 +:10D30000E93E0200000000000000000000000000F4 +:10D310000000000084D80200040004003560000012 +:10D3200064CE0200170000000200000080D302005B +:10D330006CEB020099000000753F02008560000060 +:10D3400000000000D54D0000154F00000000000057 +:10D3500000000000000000000000000000000000CD +:10D36000000000000000000020D3020084D802006A +:10D37000040003002D3F02006CEC02006CD302009D +:10D380008604000078D30200BE05000014D302001A +:10D3900084D8020002000500AD6300006CEB0200BF +:10D3A000010000000000000000000000000000007C +:10D3B000000000000000000000000000000000006D +:10D3C000000000000000000000000000000000005D +:10D3D000000000000000000020080300735203005A +:10D3E00048080300A452030008080300095303007F +:10D3F00064090300875303002C080300CC53030087 +:10D4000018040300005403006C0303005754030086 +:10D41000600303008F5403002C040300C75403006F +:10D42000240000205555030030000020A1550300C2 +:10D430002C030300ED550300F80203002F560300F0 +:10D4400038030300AA560300240F03000E570300FD +:10D45000480F030046570300F40F0300E957030089 +:10D460000C0F0300755803003C0F03000A5903001A +:10D47000300F03006D590300CC0F0300195A03004D +:10D48000E80F0300C55A0300180F0300715B030087 +:10D4900050000020A65B0300E0150300C45B0300FE +:10D4A000EC140300715C0300581503000A5D0300CF +:10D4B00010150300355D030004150300C65D03006D +:10D4C000281603004F5E0300F8140300715E03008A +:10D4D000D0140300955E030008050300E35E03001B +:10D4E000AC060300125F0300A0040300415F0300C9 +:10D4F00070050300705F0300200603009F5F0300B8 +:10D50000A4060300CE5F03000C070300FD5F0300C9 +:10D51000680503002C600300180603005B6003002D +:10D520009C0603008A60030080050300B9600300C5 +:10D5300038060300E9600300BC060300196103001C +:10D54000A804030049610300780503007961030022 +:10D5500030060300A96103007C060300D9610300C3 +:10D560002806030009620300B406030039620300C1 +:10D570002005030069620300D0050300C7620300B1 +:10D58000880503001163030090060300676303002E +:10D590005C050300DB630300C80D0300396403006E +:10D5A000BC0D0300D7640300040E030022650300D2 +:10D5B000140A030078650300380D03006C6603004D +:10D5C0008C0D0300966603002C0D0300C16603005A +:10D5D000E809030050670300F4090300DB67030058 +:10D5E000200D03002C680300500A03007F6803002D +:10D5F000CC0C0300C5680300440D03000F69030051 +:10D60000D80C030042690300080A0300F76903000D +:10D6100020000020826A030004020300C76A03009E +:10D62000E80103005C6B0300C0EF0200C46B030061 +:10D63000A8EF0200156C0300B4EF0200466C030073 +:10D6400090EF0200896C03009CEF0200096D03005B +:10D650003C000020556D030094100300B66D0300DC +:10D66000B0100300696E0300F8100300B16E0300F0 +:10D6700004110300D96E030070140300A66F0300A9 +:10D6800088140300F56F03007C140300647003002A +:10D690001C1403000471030094140300957103002B +:10D6A00028140300EE710300341403001872030001 +:10D6B00068040300587203004010030073720300F3 +:10D6C00034100300F77203003011030043730300AA +:10D6D000701103007C73030084D802000000010075 +:10D6E000C566000028D9020087000000F0D60200BD +:10D6F00064CE02001F0000000300000000D70200FB +:10D700006E0000003E04000026050000E0CB020091 +:10D71000CE03000028CE02007D410200C14002007D +:10D72000DB400200F5400200534102007940020054 +:10D7300091400200A94002000F410200194102007D +:10D74000234102003B410200A2000000A7000000AC +:10D75000A70000007F00000080000000E200000041 +:10D760003C0000003C000000000000000000000041 +:10D77000E10000003C0000003B0000000000000051 +:10D7800000000000C80000000000000000000000D1 +:10D790003600000037000000C70000000000000055 +:10D7A00000000000360000003600000084D80200AF +:10D7B00002000300E948020084D8020002000300CE +:10D7C000F34802006CEB0200B00000000000000013 +:10D7D0001D490200000000000000000000000000E1 +:10D7E0000000000000000000D5330200FD480200E8 +:10D7F0000000000000000000000000000000000029 +:10D800006CEB0200F20000000000000000000000CD +:10D81000B97F0000000000000000000000000000D0 +:10D8200000000000000000000000000000000000F8 +:10D8300000000000000000000000000028D90200E5 +:10D840000B000000BC2E00206CEB0200F200000078 +:10D850000000000000000000C94A02002534020058 +:10D8600000000000000000000000000000000000B8 +:10D8700000000000000000000000000000000000A8 +:10D88000000000006CEB0200F2000000000000004D +:10D8900000000000474A020025340200000000009A +:10D8A0000000000000000000000000000000000078 +:10D8B0000000000000000000000000000000000068 +:10D8C0006CEB0200F200000000000000000000000D +:10D8D000498D000025340200000000000000000017 +:10D8E0000000000000000000000000000000000038 +:10D8F00000000000000000000000000028D9020025 +:10D900007E00000008D9020064CE0200170000006B +:10D910000200000018D902006E000000F6030000AB +:10D92000F603000014C602006CEB0200F5000000D4 +:10D93000B58F0000000000000000000000000000A3 +:10D9400000000000C98F000000000000000000007F +:10D9500000000000000000000000000000000000C7 +:10D9600000000000B70000001600000070D902009F +:10D970005E0000003CD802009E02000078F3020026 +:10D9800056010000C0FE0200F6030000FCD80200B1 +:10D990003E040000E4D60200E609000014F3020091 +:10D9A0002608000094DE0200B6050000A4C50200AF +:10D9B000160A0000A4DA0200660A0000200803002C +:10D9C000F60F000070140300960A000040100300D8 +:10D9D000A60A000068040300AE0A0000301103002C +:10D9E000FE140000C81103000E150000E80E03002D +:10D9F0006E150000B0D0020016160000F8120300E9 +:10DA00004615000030070300CE15000088E1020033 +:10DA10005E0A0000E4D60200DE09000014F30200F2 +:10DA200064CE02003F0000000700000060DA020040 +:10DA300084D8020000000000FD92000084D802009B +:10DA400000000000D74B020084D802000000000054 +:10DA50001593000084D80200000000002D93000000 +:10DA60006E000000160A00001E0A0000B0DA020074 +:10DA7000260A000030DA02002E0A000048DA02000E +:10DA8000360A000054DA02003E0A000098DA02006A +:10DA9000460A00003CDA020084D8020000000000C0 +:10DAA000C34B020028D902004201000020DA020024 +:10DAB00084D80200000000004D93000084D80200CA +:10DAC0000200FFFF8193000084D8020002000100E1 +:10DAD0000D4C020084D802000200FFFFBF4C020080 +:10DAE00064CE0200970000001200000068DB020014 +:10DAF00084D8020004000200D594000084D80200FB +:10DB000002000100B995000084D802000400020060 +:10DB10008195000084D802000200FFFFD19500002B +:10DB200084D8020004000200519500006CEB020052 +:10DB300003010000F9930000134D020000000000F3 +:10DB4000399600000D980000000000000000000061 +:10DB5000A59300000000000000000000000000008D +:10DB600000000000E0DA0200B601000008DB02005D +:10DB70000E060000FCDA020016060000C8DA0200F9 +:10DB8000BE070000F8DB0200C6070000D4DA02007E +:10DB9000CE07000014DB0200D60700001CDC0200E8 +:10DBA000DE07000004DC0200E6070000F0DA0200F5 +:10DBB000EE07000040DC0200F60700004CDC02002B +:10DBC0002E02000058DC02009606000010DC020065 +:10DBD0000608000034DC02000E08000020DB020012 +:10DBE0001608000028DC02004E060000BCDA020025 +:10DBF000AE000000B8DD020084D80200040002007C +:10DC00009D95000084D8020004000200F34C02003D +:10DC100084D8020004000200E195000084D80200CC +:10DC200004000200FD4C020084D80200040002003F +:10DC3000214C020084D80200040002003D4C020086 +:10DC400084D8020004000200754D020084D802004E +:10DC500004000200654D020084D8020002000100A9 +:10DC6000119600006CEB0200FF000000F993000029 +:10DC7000134D020000000000399600000D980000CE +:10DC80000000000000000000A5930000000000005C +:10DC9000000000000000000000000000E0DA0200C8 +:10DCA00084D8020004000400554F020064CE020034 +:10DCB000170000000200000000DD02006CEB020013 +:10DCC000B8000000ED9B0000759E00000000000001 +:10DCD000459C0000099D000000000000019E00001E +:10DCE000A19C0000000000000000000000000000F7 +:10DCF00000000000ACDC0200BCDC02000000000000 +:10DD00007E06000010DD02008E060000A0DC02008E +:10DD100084D8020004000200694F02006CEB02008C +:10DD2000AD000000459F0000DD4F02000000000034 +:10DD3000F59E00000000000037500200799F0000AF +:10DD4000259F00000000000000000000000000000F +:10DD500000000000000000006CEB0200F400000076 +:10DD600000000000000000000000000000000000B3 +:10DD7000000000000000000000000000D533020099 +:10DD80008B4F0200000000000000000000000000B7 +:10DD90000000000084D80200040002005F5002006E +:10DDA00084D80200060003007550020084D80200E7 +:10DDB000040002008D50020084D80200040002001A +:10DDC000A350020084D8020002000100A9A00000B4 +:10DDD00084D802000200010029A2000084D80200B9 +:10DDE00002000100F59F000084D802000400020038 +:10DDF000E1A1000084D802000200010031A000006F +:10DE000084D80200020001007DA3000084D8020033 +:10DE10000400020051A3000084D8020002000100A7 +:10DE20001552020084D80200020001000DA2000079 +:10DE300064CE0200E70000001C00000000DF0200CA +:10DE400084D802000200010061A2000084D8020010 +:10DE5000020001007DA2000084D80200020001003F +:10DE6000C9A0000084D8020002000100055202008F +:10DE700084D802000400020089A1000084D80200B6 +:10DE80000200010045A2000084D802000200010047 +:10DE90002952020028D902000401000030DE0200ED +:10DEA00084D8020002000100E9A0000084D802002A +:10DEB00002000200CDA2000084D80200020001008E +:10DEC00035A3000084D802000200010089A00000F0 +:10DED00084D802000200010051A1000084D8020091 +:10DEE000020001006DA0000084D8020004000200BE +:10DEF000B5A1000084D802000400020021A10000A6 +:10DF00006E000000260800002E08000056F8ADC084 +:10DF100036080000DA0FC9C03E08000000DE02002B +:10DF20005E0500000CDE020046080000B8DE0200BC +:10DF30004E080000ACDE020056080000E0DF0200E0 +:10DF40005E0800004CDE02006608000040DE0200B1 +:10DF50006E0800007CDE020076080000D0DD0200C2 +:10DF60007E08000024DE020086080000E8DD0200D2 +:10DF70008E08000088DE020096080000E8DE02003D +:10DF80009E080000DCDE0200AE08000018DE020081 +:10DF9000A608000070DE0200DE080000D0DE0200ED +:10DFA000E6080000F4DE0200D6080000A0DE020051 +:10DFB000B608000058DE0200BE080000C4DD020002 +:10DFC000C6080000C4DE0200CE08000064DE0200C5 +:10DFD000F6080000F4DD0200EE080000DCDD0200BF +:10DFE00084D802000200010099A200006329030006 +:10DFF0005C2903006B290300368603003A86030080 +:10E000003D86030044860300B28803004A8603006D +:10E0100056B0030053860300578603005C86030056 +:10E02000618603006886030070860300D930030010 +:10E030003CA30300598603009B4D0300FC31030001 +:10E040008F31030074860300FDA203007B8603006A +:10E05000718603004F38030029A503007F86030063 +:10E06000868603008A860300F22C03009086030054 +:10E070009686030078E002006CEB02007800000056 +:10E080004DAA0000000000000000000031AA0000BE +:10E090000000000000000000000000000000000080 +:10E0A0000000000000000000000000000000000070 +:10E0B0000000000084D802000300FFFFC7530200E5 +:10E0C000010200000202000040000000BF02000048 +:10E0D0000202000048000000BE0200000202000030 +:10E0E00080000000BD02000002020000800000006D +:10E0F000C002000001020000000000006CEB020002 +:10E10000F40000000000000000000000000000001B +:10E1100000000000000000000000000000000000FF +:10E12000D533020005AC0000000000000000000034 +:10E1300000000000000000006E000000CE1500008E +:10E14000D615000094E10200E6150000B4E00200DC +:10E15000DE15000060E102000E1600007CE1020006 +:10E1600084D802000300FFFFB153020064CE020016 +:10E170002F0000000500000038E1020084D80200F2 +:10E18000020001005DAA000028D90200B9020000C7 +:10E190006CE1020084D802000300FFFF93530200E9 +:10E1A000BCDC020008000000B400030014010300FE +:10E1B000740003003C00030034010300CC000300A2 +:10E1C000DC000300C4FF0200BCDC02000C00000005 +:10E1D000F40003007C010300F4FF02002C010300A3 +:10E1E000EC00030074010300E4FF02007C00030064 +:10E1F000D40003006C010300940003008C000300B2 +:10E200006CEB0200F600000069AF000000000000A7 +:10E2100000000000000000000000000000000000FE +:10E2200000000000000000000000000000000000EE +:10E230000000000000000000000000006CEB020085 +:10E24000F4000000000000000000000000000000DA +:10E2500000000000000000000000000000000000BE +:10E26000D53302000F54020000000000000000003F +:10E27000000000000000000000000100000002009B +:10E2800000000400BCDC020012000000CE110000FF +:10E290009611000066120000361200009E13000066 +:10E2A000361200009E1300005E130000BE13000033 +:10E2B0009611000096110000BE13000036120000F7 +:10E2C0007E130000361200007E130000561300007B +:10E2D00066120000BCDC020019000000FE11000004 +:10E2E00036120000CE1200004E120000561300003D +:10E2F000461300004612000036120000CE12000045 +:10E300004E120000BE130000B613000046120000BB +:10E31000361200002E1200001611000056130000E5 +:10E320002E0800005E12000006110000FE10000022 +:10E330003E11000056130000BE130000B61300008B +:10E34000BCDC02001E000000F61200002E080000D7 +:10E3500056130000BE130000BE1300005613000049 +:10E360002E0800005E1200009611000096110000B9 +:10E370005E1200002E0800003E130000BE120000D6 +:10E38000E61200002E1300002E08000056130000B5 +:10E39000BE130000BE130000561300002E0800003C +:10E3A0005E12000096110000961100005E1200003F +:10E3B0002E080000DE1200003E120000561200007F +:10E3C000BCDC02001200000006120000A6130000D0 +:10E3D00096130000B61300004E1200001E14000039 +:10E3E00016130000B61300004E120000A613000022 +:10E3F0002E1100002E1200002611000096130000BE +:10E40000AE1300002613000096130000261400002F +:10E41000BCDC02004F000000A61200005E110000EC +:10E420002E1400000E0200000E020000F610000084 +:10E430000E020000FE1300002E1400005E12000009 +:10E440005E1200002E1400005E1100000E1200008B +:10E450002E14000096110000961100002E140000EA +:10E460005E12000036130000361200001611000084 +:10E470002E140000EE100000EE100000C613000085 +:10E48000EE100000661300002E1400002E0800009D +:10E490002E0800002E140000961100005E110000EE +:10E4A0002E1400000E0200000E0200002E140000C8 +:10E4B0000E120000D6120000B61200005E1100001D +:10E4C0002E1400000E0200000E020000F6100000E4 +:10E4D0000E020000761100002E140000BE13000092 +:10E4E000BE1300002E1400005E1200009E110000FA +:10E4F0002E140000EE100000EE1000002E1400009C +:10E50000EE100000461100000E1400007E13000003 +:10E510002E110000EE100000C6130000EE100000E7 +:10E520001E1300002E110000EE100000C6130000A4 +:10E53000EE1000005E1200002E1400009E1100007C +:10E540005E1200002E1400009E110000BE1200009A +:10E550004E140000BCDC0200020000007E1100002E +:10E560000E130000BCDC02000A000000361400009C +:10E57000BE130000BE130000BE1300004E130000C7 +:10E5800046140000561300005613000056130000F6 +:10E59000E6120000BCDC02006A0000006E130000FE +:10E5A000C6130000BE1100007612000066110000C4 +:10E5B000A61200009E1100006E1100000E02000065 +:10E5C000A61100005E120000B61200009E110000AD +:10E5D00066110000AE110000661200005E1300001C +:10E5E000C6130000661200005E1300009E110000BA +:10E5F0005E1200005E110000A61100005E11000016 +:10E600006E1200005E130000CE13000066120000C0 +:10E610005E1300009E110000661200005E110000F3 +:10E620009E120000661200005E1200009E110000A3 +:10E630005E110000A6110000BE120000661100006D +:10E64000A6110000661200005E1300009E1100007B +:10E650005E1200009E1100005E110000B611000065 +:10E660005E110000A61100005E110000761300008C +:10E67000C61300008E11000076130000C6130000C0 +:10E680000E020000A6110000661200005E110000DC +:10E6900006130000661200002E0800005E13000042 +:10E6A0006E1100000E02000076130000C613000079 +:10E6B0000E0200005E130000061300006612000048 +:10E6C0009E1100005E1100005E1300006612000043 +:10E6D0002E0800005E1300008E110000761300006B +:10E6E000C61300008E11000076130000C613000050 +:10E6F0000E0200000E020000A611000066120000CB +:10E700005E1100005E130000C61300005E130000DF +:10E710008E11000086110000F61000000E020000AD +:10E720005E130000C61300000E0200000613000076 +:10E73000661200002E0800005E1300006E1100003B +:10E74000A6110000BCDC0200060000000614000058 +:10E750006612000096110000F613000086110000FA +:10E7600026120000BCDC020030000000CE110000C8 +:10E770002E080000BE130000EE100000F61000008E +:10E78000EE100000BE1300002E080000CE110000A5 +:10E790002E080000BE130000EE100000F61000006E +:10E7A000EE100000BE1300002E08000056130000FB +:10E7B000EE100000D61100005E120000661200008C +:10E7C0005E120000961100000E110000CE11000034 +:10E7D0002E080000BE130000EE100000F61000002E +:10E7E000EE100000BE1300002E080000BE13000053 +:10E7F0000E02000086120000561300008E13000067 +:10E80000EE100000D611000066120000CE110000CC +:10E810002E080000BE1300002E080000BE130000EA +:10E82000561300002E0800005E120000BCDC02003F +:10E830000500000006140000561300002E0800001A +:10E840005E12000096110000BCDC02000B0000000C +:10E85000E611000046120000361200004E120000C1 +:10E860007E120000B6120000C61200003612000030 +:10E87000461200004E110000E6110000BCDC020050 +:10E88000280000001E1100000E0200000E12000001 +:10E890005E110000361100002E1400002E11000041 +:10E8A0000E0200000E1200005E1100003611000082 +:10E8B0002E1400003611000006130000661200003E +:10E8C0002E080000561300002E08000066120000FB +:10E8D0002E080000661100000E1200005E120000FB +:10E8E000961100006E1100002E1400008611000029 +:10E8F0000E1200005E120000961100006E11000062 +:10E900002E1400008E110000061300006612000095 +:10E910002E080000561300002E08000066120000AA +:10E920002E080000BCDC020006000000EE13000010 +:10E930000E1200002E08000016140000161300002E +:10E940001E140000BCDC0200120000009612000041 +:10E95000661200002E0800001E120000FE120000C9 +:10E960001E120000FE1200002612000036120000E7 +:10E970005E120000661200002E08000096110000D2 +:10E980005E1200001E13000066110000AE120000AF +:10E990004E120000BCDC020008000000DE11000086 +:10E9A0002E140000BE120000661200002E1400009B +:10E9B000961100002E14000086130000BCDC02003B +:10E9C00009000000FE110000DE1300005E130000CD +:10E9D000BE130000D6130000BE1300002E1400006A +:10E9E0000E020000EE110000BCDC0200400000003E +:10E9F000F61100002E080000BE1300000E120000E9 +:10EA00002E080000E61300000E1200002E08000081 +:10EA1000EE1100002E080000BE1300000E120000D0 +:10EA20002E080000E61300000E1200002E08000061 +:10EA3000EE1100005E120000BE1300009E120000E6 +:10EA400056130000E61300009E120000561300004B +:10EA5000EE1100005E120000BE1300009E120000C6 +:10EA600056130000E61300009E120000561300002B +:10EA7000561100008E120000BE1300009E1200000E +:10EA800056130000E61300009E120000561300000B +:10EA9000561100008E120000BE1300009E120000EE +:10EAA00056130000E61300009E12000056130000EB +:10EAB000EE1100002E080000BE1300000E12000030 +:10EAC0002E080000E61300000E1200002E080000C1 +:10EAD000EE1100002E080000BE1300000E12000010 +:10EAE0002E080000E61300000E1200002E080000A1 +:10EAF000BCDC02000D000000F61100005E120000F8 +:10EB00001E130000BE130000B61200002E08000005 +:10EB10009E130000EE1000001613000056130000B4 +:10EB2000161400000E0200002E120000BCDC0200D1 +:10EB300005000000161200005E1200002E08000002 +:10EB400056130000BE130000BCDC020007000000EA +:10EB5000EE1200003E1400007E1200003E14000081 +:10EB6000CE1200003E140000C61100006CEB020043 +:10EB7000B90000001DB500008DBA0000D5B8000036 +:10EB80002534020000000000FF55020000000000D4 +:10EB90000000000000000000000000000000000075 +:10EBA0000000000000000000000000000000000065 +:10EBB0000000000000000000000000001D00000038 +:10EBC0001E00000000000000000000000000000027 +:10EBD0000000000000000000000000000000000035 +:10EBE0000000000000000000000000000000000025 +:10EBF0000000000000000000000000000000000015 +:10EC000000000000000000000000000024000000E0 +:10EC1000250000002600000027000000280000005A +:10EC200000000000150000000000000001000000CE +:10EC30006CEB0200B5000000EDB60000F7560200D4 +:10EC4000000000000000000000000000C9B4000047 +:10EC500000000000000000000000000000000000B4 +:10EC60000000000000000000000000006CEB02004B +:10EC70008600000000000000DB55020000000000DC +:10EC80000000000000000000000000000000000084 +:10EC90000000000000000000000000000000000074 +:10ECA00000000000000000006CEB0200B300000058 +:10ECB00000000000DB550200000000000000000022 +:10ECC0000000000000000000000000000000000044 +:10ECD0000000000000000000000000000000000034 +:10ECE0000000000084D8020004000200DDBB000028 +:10ECF00014000000180000000F00000000000000D9 +:10ED000000000000000000000100000084D80200A4 +:10ED100004000200135702006CEB0200F000000038 +:10ED200000000000000000003D570200000000004D +:10ED300000000000000000000000000000000000D3 +:10ED400000000000000000000000000000000000C3 +:10ED50000000000048EF020000000000000000007A +:10ED60000000000084D8020004000400A55802003E +:10ED700064CE0200C70000001800000004EE02008C +:10ED800084D802000200030001D4000084D80200ED +:10ED900002000200ED58020084D8020002000200C6 +:10EDA000DD58020084D8020004000400E1C2000023 +:10EDB00084D80200020001006DC4000084D8020063 +:10EDC00006000400FD58020084D80200040004007C +:10EDD000B358020084D802000200010035C50000CB +:10EDE00084D802000400030035C1000084D802006A +:10EDF0000400020039C0000084D8020002000100B3 +:10EE000005C50000E6060000D0EE0200EE06000098 +:10EE100064ED02008E060000C8ED0200F606000058 +:10EE2000E8EE0200AE060000ECED0200FE06000077 +:10EE30000CEF02000607000080ED02000E07000044 +:10EE4000E0ED020016070000C4EE0200B606000066 +:10EE50003CEF0200BE06000098ED0200C60600006E +:10EE60008CED0200CE06000018EF02001E07000025 +:10EE7000BCED02007E060000A4ED020026070000A3 +:10EE800030EF02002E07000024EF020036070000DA +:10EE9000F4EE02003E070000B0ED0200460700005D +:10EEA000DCEE02004E070000F8ED020056070000FD +:10EEB00000EF02005E07000084EF0200660700001A +:10EEC000D4ED020084D802000400030099C10000C0 +:10EED00084D80200040004009958020084D802007B +:10EEE00002000100F5C4000084D802000400040000 +:10EEF000BF58020084D80200020001005DC4000077 +:10EF000084D802000200010015C5000084D8020068 +:10EF100002000300BDD2000084D802000300FFFFFE +:10EF200081D2000084D8020004000200555A020079 +:10EF300084D80200040002004B5A020084D8020068 +:10EF400002000200CD5802006CEB020083000000BA +:10EF5000B9C60000B9C500000000000000000000B4 +:10EF600079CD00000000000045C50000C1BC0000D4 +:10EF7000000000006F5802000000000000000000C8 +:10EF800070ED020084D802000200010025C50000D7 +:10EF900084D802000400030085D7000084D8020052 +:10EFA00004000200C95A020084D8020002000100D5 +:10EFB00065D5000084D8020002000200EDD70000F1 +:10EFC00084D802000200020015D60000D4EF02002F +:10EFD000540000006CEB02000100000055D9000055 +:10EFE0000000000000000000000000000000000021 +:10EFF0000000000000000000000000000000000011 +:10F000000000000000000000000000000000000000 +:10F01000000000000F6A020000000000FF6D020007 +:10F02000FF6D020000000000000000000000000072 +:10F0300000000000000000000DF7000000000000CC +:10F04000856D0200000000000000000000000000CC +:10F0500000000000000000000000000000000000B0 +:10F0600000000000000000000000000000000000A0 +:10F070000000000000000000000000000000000090 +:10F08000000000000000000000000000FF6D020012 +:10F09000000000005DF4000000000000000000001F +:10F0A0000000000000000000000000004D6F0200A2 +:10F0B000000000000000000059EA0000FF6D02009F +:10F0C00000000000E1FB0000BDFB000009FE0000A5 +:10F0D000EF6D0200857502000000000000000000D6 +:10F0E0000000000049EA0000DB7B02000000000095 +:10F0F0000000000000000000000000000000000010 +:10F1000000000000000000000000000000000000FF +:10F1100000000000000000000000000051FB0000A3 +:10F12000ADFA000000000000857902000000000038 +:10F13000000000007F7A02000000000000000000D4 +:10F14000D5790200BDF10000CD730200000000007F +:10F1500000000000000000000000000000000000AF +:10F160000000000000000000277202000000000004 +:10F17000000000000000000000000000000000008F +:10F18000FF6D0200000000002B790200000000006B +:10F1900000000000056D0200056D02008D70020088 +:10F1A00083700200000000003970020097700200B6 +:10F1B000000000000000000000000000000000004F +:10F1C000A1ED00002F700200257002001B700200EC +:10F1D000C56F020000000000976F020000000000F1 +:10F1E0005D6F020000000000000000006375020077 +:10F1F00000000000A57B0200D572020000000000A4 +:10F200000000000000000000057502000000000082 +:10F2100071740200BDFE000000000000000000004C +:10F2200000000000000000000000000000000000DE +:10F23000C3720200DF6D02001B6C02004D6F020002 +:10F2400000000000056F0200E96E020000000000EF +:10F2500000000000000000000000000000000000AE +:10F26000000000004D6F020000000000C16D0200B0 +:10F27000000000000000000000000000000000008E +:10F28000AD7202000000000000000000000000005D +:10F29000000000000000000000000000000000006E +:10F2A000000000000000000000000000000000005E +:10F2B0004DFE000000000000000000000000000003 +:10F2C0006E000000E60900000E0A000020F30200B4 +:10F2D000EE09000008F30200F6090000F0F2020057 +:10F2E000FE090000FCF20200060A0000FCF2020027 +:10F2F00084D802000600FFFF0507010084D8020041 +:10F3000004000300DD04010084D802000200FFFFB6 +:10F31000BD06010028D902003C0100002CF30200C8 +:10F3200084D80200020001005F7D020064CE02006A +:10F330003700000006000000C0F202006CEB020083 +:10F34000BC000000000000005D070100000000009C +:10F3500000000000000000000000000000000000AD +:10F36000D5330200D37D0200000000000000000041 +:10F37000000000000000000028D902005300000037 +:10F3800058F7020084D8020002000100811F00002B +:10F3900084D80200020001005B7E020084D80200D3 +:10F3A00004000300650D010084D80200040003007E +:10F3B0007B7E020084D80200040002003D0D0100A3 +:10F3C00084D80200040002001F7E020084D80200DC +:10F3D00002000100AD08010084D802000200010013 +:10F3E000CD09010084D8020002000100D908010003 +:10F3F00084D802000300FFFF717E020084D802005F +:10F400000300FFFFE10D010084D8020000000000AE +:10F41000A507010084D80200020002002F7E02002E +:10F4200084D80200020001000D09010084D8020006 +:10F43000020001008108010084D8020002000100DE +:10F44000150C010084D8020002000100610C0100CB +:10F4500084D8020002000100E533020084D80200D3 +:10F4600002000100F108010084D802000000010040 +:10F47000250E010084D8020002000100B909010034 +:10F4800084D802000400FFFFBD0701002600000031 +:10F4900080F402003E00000090D302009E000000B5 +:10F4A00038F402000E0400003CCD02001E040000EF +:10F4B00048EF02001604000050C602004604000097 +:10F4C00064CE02005E04000078FE020076040000B4 +:10F4D0008CCB02007E0400000CD002001E0800004D +:10F4E0002CDB0200CE04000030D30200F604000042 +:10F4F0009CC6020006050000D8D20200BE03000030 +:10F5000078FF02006E0500001CDD02008605000089 +:10F51000C4D70200FE07000064DC0200F601000010 +:10F5200080CA0200AE05000030EC0200C6050000F3 +:10F53000BCDC0200CE0500006CEB0200E60500001A +:10F540003CF30200360400006CEC02009E05000053 +:10F55000A8EC0200A6020000CCEF0200D6030000D7 +:10F56000B0F70200DE0300002CF40200E603000006 +:10F57000CCF30200FE030000E4F3020026040000C6 +:10F580005CF402002E04000020F402004E0400008F +:10F5900068F4020056040000C0F302006604000094 +:10F5A000ACD702006E040000B8D702008E04000041 +:10F5B0009CF302009604000080F702009E04000005 +:10F5C00008F40200A6040000B4F30200AE04000038 +:10F5D00090F30200B604000074F40200C6040000B8 +:10F5E00050F40200D60400000CED0200DE0400001E +:10F5F000E4EC0200E604000098F70200EE040000CC +:10F6000084F30200FE040000A4F702000E050000CF +:10F6100074F7020016050000F0F302002E0500004A +:10F620004CF7020036050000D8F302004E0500003A +:10F6300068F702005E050000A8F3020066050000FE +:10F64000BCF702007E05000044F402008E050000B5 +:10F650008CF7020096050000FCF30200A6050000EE +:10F6600014F40200B60200007CFB0200BE0200009F +:10F6700038FA0200C6020000F4FB0200CE020000CD +:10F6800034FB0200DE02000030FC0200E602000053 +:10F690003CFE020006030000B4FD02000E03000061 +:10F6A000B8FB020016030000F8FA02001E03000077 +:10F6B0006CF9020026030000C8F702002E030000C8 +:10F6C000F0FD02003603000080FA02003E03000055 +:10F6D00090F8020046030000FCF902004E0300000F +:10F6E000A8FC020056030000C0F902005E030000FF +:10F6F0003CFD0200660300004CF80200AE02000070 +:10F70000BCFA02006E03000078FD020076030000E0 +:10F7100030F902007E03000000FD02009E0300009D +:10F72000E8F802008E03000010F8020096030000C3 +:10F730006CFC02004E0A0000D8D60200560A0000F7 +:10F74000A4D00200460500007CCC020084D8020050 +:10F7500002000100C50D010064CE0200C7020000D6 +:10F76000580000008CF4020084D80200020001005E +:10F77000CD0A010084D802000300FFFF677E02006B +:10F7800084D8020006000300A50D010084D8020001 +:10F79000020002008D0C010084D80200020001006A +:10F7A000177E020084D8020000000000B1070100AB +:10F7B00084D80200020001003108010084D8020050 +:10F7C0000100FFFF610B01006CEB02006400000010 +:10F7D000D5120100711201000000000000000000BD +:10F7E000000000005D1301000000000000000000A8 +:10F7F000000000000000000000000000B4F902005A +:10F8000000000000BCDC0200010000004CF8020017 +:10F810006CEB020071000000D512010071120100B2 +:10F820000000000000000000000000005D13010067 +:10F8300000000000000000000000000000000000C8 +:10F840000000000024F90200000000006CEB020040 +:10F850006C000000D51201007112010000000000D0 +:10F8600000000000000000005D1301000000000027 +:10F870000000000000000000000000000000000088 +:10F8800024F90200000000004600000074FA0200A3 +:10F890006CEB020067000000D5120100711201003C +:10F8A0000000000000000000000000005D130100E7 +:10F8B0000000000000000000000000000000000048 +:10F8C0000000000024F9020000000000B4FD020066 +:10F8D0000000000000000000F8DC0200BCDC0200B8 +:10F8E0000100000080FA02006CEB020073000000CF +:10F8F000D51201007112010000000000000000009C +:10F90000000000005D130100000000000000000086 +:10F91000000000000000000000000000E4FC020005 +:10F9200000000000BCDC0200010000003CFE020000 +:10F930006CEB02006E000000D51201007112010094 +:10F940000000000000000000000000005D13010046 +:10F9500000000000000000000000000000000000A7 +:10F9600000000000B4F90200000000006CEB02008F +:10F9700063000000D51201007112010000000000B8 +:10F9800000000000000000005D1301000000000006 +:10F990000000000000000000000000000000000067 +:10F9A000DCF8020000000000BCDC020001000000E6 +:10F9B00038FA0200BCDC0200010000007CFB0200FF +:10F9C0006CEB02006A000000D51201007112010008 +:10F9D0000000000000000000000000005D130100B6 +:10F9E0000000000000000000000000000000000017 +:10F9F0000000000024F90200000000006CEB02008F +:10FA000068000000D5120100711201000000000022 +:10FA100000000000000000005D1301000000000075 +:10FA200000000000000000000000000000000000D6 +:10FA300024F90200000000006CEB020057000000F7 +:10FA4000D51201007112010000000000000000004A +:10FA5000000000005D130100000000000000000035 +:10FA600000000000000000000000000024F9020077 +:10FA70000000000084D802000200FFFFC112010054 +:10FA80006CEB020066000000D5120100711201004B +:10FA90000000000000000000000000005D130100F5 +:10FAA0000000000000000000000000000000000056 +:10FAB0000000000024F90200000000006CEB0200CE +:10FAC00055000000D5120100711201000000000075 +:10FAD00000000000000000005D13010000000000B5 +:10FAE0000000000000000000000000000000000016 +:10FAF00024F90200000000006CEB0200620000002C +:10FB0000D512010071120100000000000000000089 +:10FB1000000000005D130100000000000000000074 +:10FB200000000000000000000000000070FB020068 +:10FB3000000000006CEB020059000000D51201002B +:10FB40007112010000000000000000000000000031 +:10FB50005D13010000000000000000000000000034 +:10FB6000000000000000000024F902000000000076 +:10FB7000BCDC02000100000078FD02006CEB02001A +:10FB800056000000D51201007112010000000000B3 +:10FB900000000000000000005D13010000000000F4 +:10FBA0000000000000000000000000000000000055 +:10FBB00000000000F0FC02006CEB0200610000009D +:10FBC000D5120100711201000000000000000000C9 +:10FBD000000000005D1301000000000000000000B4 +:10FBE00000000000000000000000000024F90200F6 +:10FBF000000000006CEB020058000000D51201006C +:10FC00007112010000000000000000000000000070 +:10FC10005D13010000000000000000000000000073 +:10FC2000000000000000000024F9020000000000B5 +:10FC30006CEB02005B000000D512010071120100A4 +:10FC40000000000000000000000000005D13010043 +:10FC500000000000000000000000000000000000A4 +:10FC60000000000024F90200000000006CEB02001C +:10FC700072000000D51201007112010000000000A6 +:10FC800000000000000000005D1301000000000003 +:10FC90000000000000000000000000000000000064 +:10FCA000A8F90200000000006CEB020069000000EF +:10FCB000D5120100711201000000000000000000D8 +:10FCC000000000005D1301000000000000000000C3 +:10FCD00000000000000000000000000004F8020026 +:10FCE00000000000BCDC02000100000010F802006F +:10FCF00064CE02000F0000000100000088F802003E +:10FD00006CEB02006F000000D512010071120100BF +:10FD10000000000000000000000000005D13010072 +:10FD200000000000000000000000000000000000D3 +:10FD30000000000024F90200000000006CEB02004B +:10FD40006B000000D51201007112010000000000DC +:10FD500000000000000000005D1301000000000032 +:10FD60000000000000000000000000000000000093 +:10FD7000A8F90200000000006CEB02006D0000001A +:10FD8000D512010071120100000000000000000007 +:10FD9000000000005D1301000000000000000000F2 +:10FDA00000000000000000000000000024F9020034 +:10FDB000000000006CEB020060000000D5120100A2 +:10FDC00071120100000000000000000000000000AF +:10FDD0005D130100000000000000000000000000B2 +:10FDE0000000000000000000B4F902000000000064 +:10FDF0006CEB020065000000D512010071120100D9 +:10FE00000000000000000000000000005D13010081 +:10FE100000000000000000000000000000000000E2 +:10FE200000000000DCF802000000000090F8020072 +:10FE30000000000000000000F8DC02006CEB020093 +:10FE40005C000000D51201007112010000000000EA +:10FE500000000000000000005D1301000000000031 +:10FE60000000000000000000000000000000000092 +:10FE7000B4F90200000000006CEB02008B000000EF +:10FE8000000000005B7F0200000000000000000096 +:10FE9000000000000000000000000000D533020058 +:10FEA000337F02000000000000000000000000009E +:10FEB0000000000084D8020000000000252201009C +:10FEC00028D902002A000000CCFE020064CE020005 +:10FED0003700000006000000E8FE020084D802009F +:10FEE00000000100DD2101006E000000560100004D +:10FEF000FE080000DCFE02000609000030FF0200E0 +:10FF00000E09000018FF020016090000B4FE0200EE +:10FF10001E09000024FF020084D802000000000037 +:10FF2000877F020084D80200000000001522010033 +:10FF300084D8020000000100352201006CEB0200B1 +:10FF4000B8000000C17F02000000000000000000B7 +:10FF5000459C0000099D0000957F0200019E000065 +:10FF6000A19C000000000000000000000000000054 +:10FF700000000000000000006CEB020077000000B1 +:10FF800000000000D37F020000000000000000001D +:10FF90000000000000000000000000000000000061 +:10FFA0000000000000000000000000000000000051 +:10FFB00000000000140A030009117CCA140A03009F +:10FFC000014308A7140A030009671404140A030074 +:10FFD0000951815F140A030009400155140A030006 +:10FFE00001600307140A030001001042140A030011 +:10FFF000010080E8140A030001001300140A030042 +:020000040003F7 +:1000000001EA7F47140A0300097E9DE7140A0300F2 +:1000100001849073140A030001AAAAAA140A030017 +:1000200001AE7EE7140A0300095ECABD140A03008C +:1000300009400117140A030001444545140A03004E +:10004000094150CC140A0300093FC6F8140A030002 +:1000500001403902140A03000184D173140A030019 +:1000600009E41315140A030001EE9362140A030055 +:1000700001841047140A030001047D44140A03009C +:1000800001001021140A030001A5BCF5140A0300A5 +:1000900001421000140A030001601000140A03005A +:1000A00001317E47140A0300096194F4140A030025 +:1000B00001C02907140A030001C45542140A0300B1 +:1000C00001E67807140A030001C46D47140A03000F +:1000D00001109571140A030001009001140A030035 +:1000E00001447C41140A03000100A222140A030007 +:1000F0000100100C140A030001841000140A03000C +:10010000010A2022140A03000180A80F140A030028 +:1001100001FB3BE7140A0300011C5311140A0300FE +:1001200009FB93BF140A030009511115140A0300B7 +:1001300001007000140A030001845447140A0300EC +:1001400001C47DA7140A0300014081E8140A0300DA +:100150000118FFAF140A030009BFFE5F140A030071 +:10016000017F03E5140A030001632B07140A03004F +:1001700001001C00140A030001001084140A03008B +:1001800001081100140A030001B57E42140A03009D +:1001900009C411F7140A030001C07D05140A030005 +:1001A00001802802140A0300010A10456CEB0200CA +:1001B0008A020000000000000000000000000000B3 +:1001C000000000000000000000000000000000002F +:1001D000000000000000000000000000F401030027 +:1001E000000000001002030084D802000200010099 +:1001F00061230100FF7F0200EF7F0200000000008A +:100200000000000084D802000300FFFFD12201009B +:1002100064CE02004F0000000900000074020300D9 +:100220008D02000002000000802500008E02000008 +:1002300002000000080000008F0200000300000020 +:1002400074E00200C0000000020000000100000095 +:10025000900200000302000074E00200910200001E +:100260000302000074E0020092020000030200009A +:1002700074E002006614000004020300E6030000BC +:10028000E801030076050000C0EF02009E140000A4 +:10029000A8EF0200A6140000B4EF0200AE140000A4 +:1002A00090EF0200DE0500009CEF0200B614000093 +:1002B00003000000BE140000050000006CEB02000B +:1002C000D601000000000000000000000000000057 +:1002D000000000000000000000000000000000001E +:1002E000000000000000000000000000000000000E +:1002F000000000000403030084D802000200010093 +:100300007D23010064CE02001F00000003000000F6 +:1003100014030300CE0E00002C030300D60E0000D1 +:10032000F8020300DE0E00003803030084D8020048 +:10033000020001009923010084D80200020001009C +:100340003D80020084D8020002000100A1240100C7 +:1003500064CE02004700000008000000B403030060 +:1003600084D80200020001006B80020084D80200E1 +:1003700002000100538002006CEB0200DC0100006F +:10038000000000000000000000000000000000006D +:10039000000000000000000000000000000000005D +:1003A000000000000000000000000000000000004D +:1003B00050030300F60E00006C030300FE0E000065 +:1003C00060030300060F00002C0403000E0F000062 +:1003D0000C040300160F0000440303001E0F00006E +:1003E00020040300260F0000F40303002E0F00007A +:1003F0000004030084D802000400020089250100E3 +:1004000084D8020002000100C524010084D8020043 +:10041000020001009B80020078030300A42A002050 +:1004200084D80200040002005D25010084D8020087 +:10043000020001008380020000000000E6010000CD +:10044000E7010000E8010000E9010000EA01000006 +:10045000EB010000EC010000ED010000EE010000E6 +:10046000EF010000F001000028D902005401000053 +:10047000840403006E000000A60A0000460000008D +:100480009404030064CE0200170000000200000084 +:100490007404030084D80200000000009D260100BF +:1004A00040060300502B0020DC050300002C002038 +:1004B00064CE02003700000006000000DC060300E6 +:1004C000DE0A000020050300D60A0000D005030064 +:1004D000EE0A000088050300E60A0000900603000B +:1004E000F60A0000C4060300FE0A0000D00603005E +:1004F0000E0B00005C05030064CE02003F0000000C +:1005000007000000C004030040060300302B002059 +:1005100064CE020037000000060000002C05030036 +:1005200084D8020004000200C9260100DE0A00008F +:1005300020050300D60A0000D0050300EE0A0000E3 +:1005400088050300F60A0000C4060300FE0A000046 +:10055000D0060300060B00008406030084D80200C6 +:1005600002000100AD260100DC050300A02B0020E5 +:1005700094050300602B0020DC050300102C0020F4 +:1005800094050300D02B002084D802000400020050 +:10059000FD2601006CEB0200580100000000000085 +:1005A000000000000000000000000000000000004B +:1005B000000000000000000000000000000000003B +:1005C000000000000000000000000000B004030074 +:1005D00084D8020002000100DD8002006CEB020002 +:1005E00057010000000000000000000000000000B3 +:1005F00000000000000000000000000000000000FB +:1006000000000000000000000000000000000000EA +:100610000000000010050300DC050300B02B0020E3 +:1006200094050300702B0020DC050300402C002003 +:10063000DC050300202C0020DC050300E02B00205B +:100640006CEB0200590100000000000000000000F7 +:10065000000000000000000000000000000000009A +:10066000000000000000000000000000000000008A +:100670000000000000000000F8040300DC05030097 +:10068000302C002084D8020002000100F980020012 +:1006900084D8020002000100EB800200DC050300A8 +:1006A000C02B0020DC050300802B00204006030047 +:1006B000402B0020DC050300502C0020DC0503004B +:1006C000F02B002084D802000400020069270100FA +:1006D00084D80200040002009D270100DE0A000009 +:1006E00020050300D60A0000D0050300EE0A000032 +:1006F00088050300E60A000090060300F60A0000E1 +:10070000C4060300FE0A0000D0060300DC05030057 +:10071000902B002008050300AC060300A004030092 +:1007200064CE02002F00000005000000E007030077 +:1007300028D90200A8020000200703006CEB020089 +:10074000A902000000000000B781020000000000C4 +:10075000118102004D2F0100000000009D290100C1 +:1007600000000000000000002181020000000000E5 +:10077000000000008407030084D80200000000008D +:10078000392D010066150000C8070300AB02000008 +:100790000301000000000000CC0100000100000087 +:1007A00001000000020200000300000074E00200EB +:1007B000AA0200000300000074E0020084D80200D6 +:1007C000000000004128010084D80200040002005B +:1007D0005929010084D802000100FFFFF52E010015 +:1007E0006E000000461500000606000078070300B2 +:1007F0001E100000D4070300C6150000BC0703004C +:100800004E1500003C07030084D8020002000100DE +:100810003930010084D802000000000025300100BA +:1008200028D902004C0100003808030084D80200D7 +:10083000000000008D30010064CE020017010000AE +:10084000220000005408030084D8020000000100C8 +:10085000A13001006E000000660A0000BE0B00001F +:10086000140A03003E0E000050000020BE0E0000DF +:1008700024000020C60E000030000020EE0E000014 +:1008800018040300960F0000480F0300CE0F00006D +:10089000C80D03005E14000020000020CE140000EC +:1008A0003C0000206E0A000014080300760A0000D5 +:1008B000080803007E0A000064090300860A00009D +:1008C000480803008E0A00002C0803001E0B0000DD +:1008D00008050300260B0000AC0603002E0B0000E9 +:1008E000A0040300360B0000700503003E0B00005F +:1008F00020060300460B0000A40603004E0B000078 +:100900000C070300560B0000680503005E0B000097 +:1009100018060300660B00009C0603006E0B000027 +:1009200080050300760B0000380603007E0B0000F4 +:10093000BC060300860B0000A80403008E0B000019 +:1009400078050300960B0000300603009E0B0000A4 +:100950007C060300A60B000028060300AE0B000077 +:10096000B406030084D802000000000079300100C2 +:100970006CEB0200F400000000000000000000002A +:100980000000000000000000000000000000000067 +:1009900000000000D5330200F784020000000000D0 +:1009A0000000000000000000000000006CEB0200EE +:1009B000F400000000000000000000000000000043 +:1009C0000000000000000000000000000000000027 +:1009D000D5330200A18702000000000000000000E3 +:1009E000000000000000000084D80200080004009D +:1009F000D531010084D80200040002004B860200B9 +:100A0000140A03000100000084D802000200010063 +:100A10008D8402006CEB020076010000653201005B +:100A20002D33010000000000000000006D360100C1 +:100A300000000000000000000000000000000000B6 +:100A4000000000000000000000000000BC0C0300DB +:100A500084D80200040002003F870200CE0B000091 +:100A6000380D0300D60B00008C0D0300EE0B0000C8 +:100A70002C0D0300E60B0000E8090300F60B000054 +:100A8000F4090300FE0B0000200D0300060C00001B +:100A9000500A03000E0C0000CC0C030016060000E8 +:100AA000440D0300760E0000D80C0300DE0B00009E +:100AB000080A03001E0C0000FCFF0200260C0000C8 +:100AC0004C0003002E0C0000440103003E0C00000B +:100AD000ECFF0200360C00002C000300460C000066 +:100AE000D4FF02004E0C0000CCFF0200560C0000A8 +:100AF000DCFF02005E0C0000A4010300660C000095 +:100B0000B4FF02006E0C00005C010300760C0000D4 +:100B1000FC0003007E0C0000E4000300860C0000D3 +:100B2000240103008E0C0000F4000300960C00006A +:100B30007C0103009E0C0000F4FF0200A60C0000E4 +:100B40002C010300AE0C0000EC000300B60C00000A +:100B500074010300BE0C0000E4FF0200C60C00009C +:100B60007C000300CE0C0000D4000300D60C000073 +:100B70006C010300DE0C000094000300E60C000092 +:100B80008C000300EE0C0000B4000300F60C000023 +:100B900014010300FE0C000074000300060D0000A9 +:100BA0003C0003000E0D000034010300160D000090 +:100BB000CC0003001E0D0000DC000300260D000029 +:100BC000C4FF02002E0D000004010300360D0000DA +:100BD000A40003003E0D000014000300460D0000B9 +:100BE000340003004E0D00009C010300560D000070 +:100BF000440003005E0D0000AC000300660D000021 +:100C0000840003006E0D00009C000300760D0000C0 +:100C10000C0003007E0D000054000300860D000050 +:100C2000240003008E0D000084010300960D0000D7 +:100C30008C0103009E0D000004000300A60D0000BF +:100C4000C40003001E0E0000C8E10200160E0000E2 +:100C5000A0E10200AE0D00000C010300B60D000083 +:100C60004C010300BE0D0000BC000300C60D0000D7 +:100C70003C010300CE0D000094010300D60D0000DE +:100C80001C010300DE0D00005C000300E60D000007 +:100C900054010300EE0D00006C000300F60D00008F +:100CA000BCFF0200FE0D00001C000300060E000049 +:100CB000640003000E0E00006401030064CE020015 +:100CC000670200004C0000005C0A030084D80200A8 +:100CD000040002005387020084D802000A000500C5 +:100CE0002B8302006CEB0200D10100000000000029 +:100CF00000000000000000000000000000000000F4 +:100D00000000000000000000313101000000000080 +:100D100000000000000000000000000000000000D3 +:100D200084D80200040002005F86020084D802001A +:100D3000060003007131010084D8020002000100A6 +:100D40000183020084D80200020001003584020001 +:100D50006CEB0200D5010000000000000000000064 +:100D600000000000ED810200000000000000000013 +:100D7000CB870200113101000000000000000000DC +:100D800000000000000000000000000084D8020005 +:100D9000020001001D830200FA01000002010000B0 +:100DA00000000000FB010000020100000000000044 +:100DB000FD010000010000000000000084D80200D6 +:100DC0000300FFFF29370100200E03000429002043 +:100DD000FA0100000201000000000000FC01000018 +:100DE0000301000000000000FD0100000100000000 +:100DF0000000000076050000BC0D0300DE050000C9 +:100E0000040E030084D802000300FFFF85370100B1 +:100E100064CE02001700000002000000F40D030081 +:100E20006CEB0200F8010000000000000000000070 +:100E300000000000000000000000000000000000B2 +:100E400000000000000000000000000000000000A2 +:100E50000000000000000000100E030084D8020013 +:100E6000020001008139010084D802000200010063 +:100E70001139010084D8020000000100E1380100AE +:100E80006E0000000E150000161500005C0E030039 +:100E90001E150000740E030026150000000F03004D +:100EA0002E150000CC0E030036150000680E03005E +:100EB0000E150000C00E03003E150000F40E0300E6 +:100EC00084D80200000000004138010084D80200EC +:100ED000040002004939010064CE0200470000000E +:100EE00008000000800E030028D90200A1020000C3 +:100EF000D80E030084D8020004000200013801006B +:100F000084D80200020003005938010084D802008E +:100F100002000100DD39010084D802000200010056 +:100F20006F88020084D80200020001008588020058 +:100F300084D80200020001002788020084D8020041 +:100F4000020001003D3A0100900F0300E02A00205A +:100F50009E0F0000240F0300A60F0000F40F0300F3 +:100F6000AE0F00000C0F0300B60F00003C0F030093 +:100F7000F60E0000300F0300FE0E0000CC0F030041 +:100F8000060F0000E80F0300BE0F0000180F03005B +:100F90006CEB0200F1010000000000000000000006 +:100FA0000000000000000000000000000000000041 +:100FB0000000000000000000000000000000000031 +:100FC0000000000000000000D80F030084D80200D9 +:100FD000020001003F88020064CE020047000000CA +:100FE00008000000500F030084D802000200010036 +:100FF0005788020084D8020002000100C1390100B4 +:101000006E000000960A0000460000002810030051 +:101010009E0A00003410030064CE02001F0000008E +:10102000030000000010030084D80200000000004C +:101030009D3A010084D80200000000007D3A0100C2 +:1010400028D9020052010000181003008D02000090 +:101050000200000040420F008E020000020000006B +:10106000080000009A0200000200000000000000DA +:101070009B0200000302000074E002009C020000DA +:101080000302000074E002009D0200000302000061 +:1010900074E0020084D802000300FFFFBD3A0100A3 +:1010A00064CE0200270000000400000010110300BD +:1010B00084D80200040002003D3B01006CEB0200FA +:1010C0009802000000000000000000000000000086 +:1010D0000000000000000000000000000000000010 +:1010E0000000000000000000000000000000000000 +:1010F00000000000A010030084D8020004000300D8 +:10110000B53B010084D8020006000300713B0100DA +:101110006614000094100300DE050000B010030008 +:1011200076050000F8100300F61400000411030017 +:1011300028D90200550100008811030000000000BA +:10114000398EE33D398E633E398EE33EABAA2A3FAA +:10115000721C473F0000803F6E000000AE0A000096 +:10116000460000007C110300B60A00007011030065 +:1011700084D8020000000000893C010084D80200ED +:1011800000000000893C010064CE02001F00000046 +:1011900003000000581103006E000000FE14000060 +:1011A00006150000D411030064CE020017000000F1 +:1011B000020000009811030064CE02001700000036 +:1011C000020000001C12030028D902009F02000048 +:1011D000A81103006CEB0200A00200000000000058 +:1011E000693D010000000000AB8802000000000023 +:1011F00000000000B93C01000000000000000000F9 +:10120000000000000000000000000000B811030012 +:1012100084D8020002000100A93C01000E06000073 +:1012200010120300460E00002C12030084D80200A6 +:1012300002000100993C010084D802000000000077 +:101240002140010084D8020002000100BD450100D8 +:101250006E0000001616000046000000D0120300C9 +:101260006E0A0000D01203001E16000010130300C7 +:10127000960E0000B81203009E0E00003812030004 +:1012800026160000041303002E160000EC120300C3 +:101290006E0600004412030036160000C41203005C +:1012A00076160000050000007E1600000100000018 +:1012B000861600000300000084D802000000000031 +:1012C0005141010084D8020000000000CD880200D6 +:1012D00084D8020000000000A13F010064CE02009B +:1012E0006F0000000D0000005012030084D80200BF +:1012F00000000000D788020028D90200C2020000C6 +:10130000DC12030084D8020002000100DD45010068 +:1013100084D802000100FFFF6141010064CE020099 +:10132000DF0000001B0000002C1303006E0A000009 +:101330003414030026100000881403002E1000004F +:10134000941403001E1000001C1403000E10000073 +:101350007C14030006060000281403006E10000031 +:1013600064E502007610000044E90200BE100000AF +:10137000E8E90200A610000040E302009E10000011 +:1013800094E50200D6100000F0EA0200861000008A +:1013900084E202005E10000064E7020056100000C4 +:1013A000D4E20200E6100000C0E302007E1000005C +:1013B00048E80200C6100000BCE90200CE100000A0 +:1013C00010E402004610000094E9020066100000DC +:1013D0007CE802004E10000054E50200DE10000020 +:1013E00048EB0200961000002CEB02008E1000006B +:1013F0002CE80200B610000024E90200AE10000044 +:1014000044E70200070200000202000000000000A2 +:1014100006020000020200000000000084D8020062 +:101420000100FFFF6947010084D8020000000100AD +:101430003D46010084D8020000000000FD45010087 +:10144000FE01000003010000000000000202000095 +:101450000300000008050300CC01000001000000AB +:1014600001000000CD0100000100000000000000AC +:1014700028D90200FE0100001C13030084D80200DA +:101480000100FFFFCD46010084D802000100FFFFEC +:101490006946010084D802000000000019460100DE +:1014A000FF01000002010000000000000002000037 +:1014B00002000000FFFFFFFF020200000300000027 +:1014C00008050300CC01000001000000010000003D +:1014D00084D8020002000100C14A010064CE02006B +:1014E0004700000008000000A015030084D8020097 +:1014F0000300FFFF914E010084D8020002000100AA +:10150000A54A010084D8020008000400614F0100D0 +:1015100084D8020006000300CB8902007801000095 +:101520000301000000000000CA01000002000000EA +:1015300090010000C1000000010200000000000056 +:10154000CC0100000102000001000000CD010000FC +:10155000010200000000000084D802000200010027 +:101560000D4F01006CEB0200C40100000000000000 +:10157000000000000000000000000000000000006B +:10158000000000000000000000000000000000005B +:10159000000000000000000000000000DC14030058 +:1015A000EE0B000010150300E60B0000041503000D +:1015B000460E0000E01503004E0E0000EC14030080 +:1015C0000E06000058150300960E000028160300B2 +:1015D0009E0E0000F8140300A60E0000D0140300B5 +:1015E00084D802000300FFFFC14D0100CF010000BD +:1015F0000301000000000000CA010000020000001A +:1016000096000000CC010000010200000100000073 +:10161000820100000102000000000000CD01000076 +:10162000010200000000000084D802000200010056 +:10163000994A0100455B0100A15B0100895C010042 +:10164000B15C0100CD5B010034160300A828002026 +:10165000B004000000F004006009000000D00900A0 +:10166000C012000000B013008025000000502700C9 +:101670004038000000003B00004B000000A04E007E +:101680008070000000F07500127A000000008000F9 +:101690000096000000509D0000E1000000F0EB000B +:1016A000002C010000903A0100C2010000E0D701C7 +:1016B0000084030000B0AF0390D0030000000004DA +:1016C0000008070000705F0700100E00A4DFBE0EC8 +:1016D00040420F0000000010D43000000000000065 +:1016E000A86100002000000050C30000400000007E +:1016F000A086010060000000400D03008000000093 +:10170000801A06008800000000350C0090000000E0 +:10171000006A1800B000000000D43000D0000000C3 +:1017200000A86100F00000000050C300F8000000B5 +:10173000FFFF000000000000E204000000000000C5 +:10174000C409000008000000881300001000000019 +:101750001027000018000000204E000020000000AC +:1017600080380100280000000071020030000000F5 +:1017700000C4090038000000FFFF01000100000064 +:10178000010000001700000046000000A300000058 +:101790005F010000D6020000C4050000A00B00009D +:1017A0000100000000700040040000000200000082 +:1017B00000700040080000000300000000700040BE +:1017C0001000000004000000007000402000000035 +:1017D000050000000070004040000000060000000E +:1017E0000070004080000000FF000000FFFFFFFFCE +:1017F00000000000000000000000000001000000E8 +:1018000001000000000000000100000002000000D4 +:1018100000000000010000000300000000000000C4 +:1018200001000000040000000000000001000000B2 +:10183000050000000000000001000000060000009C +:101840000000000001000000070000000000000090 +:10185000010000000800000000000000010000007E +:101860000900000000000000010000000A00000064 +:1018700000000000010000000B000000000000005C +:10188000010000000C00000000000000010000004A +:101890000D00000000000000010000000E0000002C +:1018A00000000000010000000F0000000000000028 +:1018B0000100000010000000000000000100000016 +:1018C00011000000000000000100000012000000F4 +:1018D00000000000010000001300000000000000F4 +:1018E00001000000140000000000000001000000E2 +:1018F00015000000000000000100000016000000BC +:1019000000000000010000001700000000000000BF +:1019100001000000180000000000000001000000AD +:101920001900000000000000010000001C00000081 +:1019300000000000010000001D0000000000000089 +:10194000010000001E000000000000000100000077 +:10195000FF000000FFFFFFFF0000000006A40100E1 +:10196000CEA30100EAA30100C2A30100EAA3010083 +:101970002EA30100EAA30100C2A30100CEA301002F +:10198000CEA301002EA30100C2A301006CA401009C +:101990006CA401006CA40100F0A30100CEA301001F +:1019A000CEA30100B6A40100C0A30100B6A40100AB +:1019B0002EA30100B6A40100C0A30100CEA3010024 +:1019C000CEA301002EA30100C0A301006CA401005E +:1019D0006CA401006CA401009AA40100CEA7010030 +:1019E000C6A70100C6A70100BEA7010010A70100FD +:1019F00010A70100B4A70100BEA7010010A70100B5 +:101A0000B4A7010010A70100BEA7010012A70100A2 +:101A100012A7010012A7010058A8010078B5010023 +:101A200066B401004CB5010052B401004CB5010090 +:101A300056B501004CB5010052B4010066B4010076 +:101A400066B4010056B5010052B401005CB4010057 +:101A50005CB401005CB40100BEB701000CBE010023 +:101A6000EABD0100EABD0100DEBD0100D2BC0100FB +:101A7000D2BC0100D2BD0100DEBD0100D2BC01001C +:101A8000D2BD0100D2BC0100DEBD0100D6BC010008 +:101A9000D6BC0100D6BC0100ECBF01006937AC31F7 +:101AA00068212233B40F14336821A2333863ED3E2A +:101AB000DA0F493F5E987B3FDA0FC93F737172744A +:101AC0000000000061636F73660000006173696E5F +:101AD000660000006578706600000000666D6F6447 +:101AE000660000006C6F676600000000706F77662C +:101AF0000000000073717274660000000000003F77 +:101B0000000000BFD1F71737D1F717B78071313F09 +:101B1000807131BF00000000000000800000000064 +:101B200000C0153F00000000DCCFD1350000803F31 +:101B30000000C03F000FC93F000F494000CB964056 +:101B4000000FC9400053FB4000CB164100ED2F4170 +:101B5000000F49410031624100537B41003A8A4104 +:101B600000CB9641005CA34100EDAF41007EBC413B +:101B7000000FC94100A0D5410031E24100C2EE4151 +:101B80000053FB4100F20342003A0A420083104234 +:101B900000CB164200141D42005C234200A52942DE +:101BA00000ED2F4200363642007E3C4200C74242E2 +:101BB000000F4942A2000000F9000000830000006D +:101BC0006E0000004E000000440000001500000000 +:101BD00029000000FC000000270000005700000062 +:101BE000D1000000F500000034000000DD0000001E +:101BF000C0000000DB000000620000009500000053 +:101C0000990000003C00000043000000900000002C +:101C100041000000FE0000005100000063000000D1 +:101C2000AB000000DE000000BB000000C5000000AB +:101C300061000000B7000000240000006E000000FA +:101C40003A000000420000004D000000D2000000F9 +:101C5000E000000006000000490000002E00000027 +:101C6000EA00000009000000D1000000920000001E +:101C70001C000000FE0000001D000000EB00000042 +:101C80001C000000B100000029000000A7000000B7 +:101C90003E000000E8000000820000003500000067 +:101CA000F50000002E000000BB0000004400000012 +:101CB00084000000E90000009C00000070000000AB +:101CC00026000000B40000005F0000007E0000005D +:101CD000410000003900000091000000D600000023 +:101CE00039000000830000005300000039000000AC +:101CF000F40000009C000000840000005F00000071 +:101D00008B000000BD000000F9000000280000006A +:101D10003B0000001F000000F800000097000000DA +:101D2000FF000000DE000000050000009800000039 +:101D30000F000000EF0000002F0000001100000065 +:101D40008B0000005A0000000A0000006D00000037 +:101D50001F0000006D000000360000007E00000043 +:101D6000CF00000027000000CB00000009000000A9 +:101D7000B70000004F000000460000003F000000D8 +:101D8000660000009E0000005F000000EA00000006 +:101D90002D0000007500000027000000BA000000C0 +:101DA000C7000000EB000000E5000000F1000000AB +:101DB0007B0000003D00000007000000390000002B +:101DC000F70000008A0000005200000092000000AE +:101DD000EA0000006B000000FB0000005F00000054 +:101DE000B10000001F0000008D0000005D00000039 +:101DF0000800000056000000030000003000000052 +:101E000046000000FC0000007B0000006B000000AA +:101E1000AB000000F0000000CF000000BC0000009C +:101E2000200000009A000000F400000036000000CE +:101E30001D000000A9000000E30000009100000068 +:101E4000610000005E000000E60000001B000000D2 +:101E500008000000650000009900000085000000F7 +:101E60005F00000014000000A000000068000000F7 +:101E7000400000008D000000FF000000D8000000BE +:101E8000800000004D0000007300000027000000EB +:101E900031000000060000000600000015000000F0 +:101EA00056000000CA00000073000000A8000000F7 +:101EB000C900000060000000E20000007B0000009C +:101EC000C00000008C0000006B0000000400000057 +:101ED00007000000090000000000C93F0000F039C1 +:101EE0000000DA370000A2330000842E0000502BDF +:101EF0000000C2270000D0220000C41F0000C61B43 +:101F00000000441700000000000000000000000076 +:101F100000000000000000000000000000000000C1 +:101F200000000000000000000000000000000000B1 +:101F300000000000000000000000000000000000A1 +:101F40000000000000000000000000000000000091 +:101F50000000000000000000000000000000000081 +:101F600000000000900000206CB003006FB0030080 +:101F700072B00300102332100810113032123320D7 +:101F8000342014331520481009129A200A2089336E +:101F90008A2048107314311033103510341047263E +:101FA00020105B204910582048305330783285206B +:101FB0002B2114104222251043207F2346109430F9 +:101FC00047109822481099301F22252020300822DF +:101FD000072009201B1246201C20576212106B207C +:101FE0005531562048107C2342107D304310042286 +:101FF000932005308D128E208F208E2249105B3069 +:102000008F225B20903041221F10432080228120AC +:1020100082303F313C2048103E333B204810A523FE +:1020200020105E20A330A6222E10A73017223110D8 +:102030001A30492419105B204910582088224A1070 +:1020400008102D222A109330023203201C221D205A +:1020500005102A152B202C202D202F202E2040313A +:1020600008104A109F2232105B204C242B1049107C +:1020700058204D2060A42410143049105E2076139F +:102080002F1030103D10386342103E204310316253 +:102090001E105B206231632011107D12A62080206B +:1020A000A4A51D10912022106120A3302822181011 +:1020B00091203713311038203E2050225B203D30D4 +:1020C0009E2231105B200121023023624D1024201A +:1020D00034241E103520211037204D124E2052205E +:1020E0000E63081011301230433108104810851368 +:1020F0008620872088204B271D10912022109320B6 +:102100004910582053309D139E209F20A020253336 +:1021100026204810862342109C3043102012212094 +:1021200022209712A42098206D316E203A107E2331 +:102130004410803045108212A42083207231742014 +:10214000732095225B20963012624D105B20752221 +:102150007620742094229520973051324F20872387 +:102160004410892045105924051006105A200710E4 +:1021700081126A205B2039323A2092126A206B2049 +:102180002E21A6208A128C208B209AA515100810CB +:102190009B30491058200B625A105B20A0225B2014 +:1021A000A1306822231069304832492005210510EA +:1021B00018223210081006244C10402086300510DA +:1021C000351240203620A312A420A5204F241B1036 +:1021D0005030491058205D24201061201A105B20D7 +:1021E000703172207120906249105B3065316B2034 +:1021F00066205E12602061202F2229103030692174 +:1022000026106A2231106B2029212810073206205F +:10221000271C4E104F1050105110531054105510D1 +:102220005610581057105910521054242D10552084 +:10223000491058209133922048103B2208103D301D +:102240007412752077200AA81710081042100C305D +:1022500043100B3049105820151316201720182052 +:102260000C330D20481093335B2048103622392060 +:1022700040307B120B100C10672226102210132204 +:102280000810113063126420652077237A2078309B +:1022900079305B125F205C201662081019306E31B5 +:1022A00070206F2026126A205B202C2116104562B8 +:1022B00048105B200D130E200F2010206F123710D6 +:1022C00039106C316D203C108B225B208C308C22BD +:1022D00049108D30332221103F2071122F10301001 +:1022E0001A610810993395204810A8221E105B200F +:1022F0006B316C203B10223223200F22311013301F +:102300006131622027103A124A100D1046184720FA +:102310004A204B204C2054200A209A2008200013E9 +:1023200005101C204620796232107420031205101B +:102330001B20581259201C2056225B205730241293 +:10234000A6202520642226106320442313105B203E +:1023500045305FA42410143049105B209662491068 +:102360005B20A712A82093205A321B2030225B202A +:10237000313019624D105B209B6342109C3043103A +:102380004E235120533052301E18282029202A2055 +:1023900032204120422044201F207A1C08100910BE +:1023A0000A100B100C100D100F1010100E107C20C6 +:1023B0007E207F201D331E204B105C2261205D306B +:1023C0008362481084308433812048103D621210AB +:1023D00008103C2240203D30116249105B20A112C0 +:1023E000A420A220A2624D105B2053631A10491052 +:1023F00058209C339D204810661936103810401024 +:102400003E103F1041102210672068204A252C10F2 +:102410005B2049105820533052631C10491058203B +:1024200021222720242000683B0000783C000088FF +:102430003D0000603E0000703F0000804000E10869 +:10244000E907EE0E4D0DDA0B2F0BF70961080000BE +:10245000180E8E0C00008F0A6809000002000200AE +:10246000040007000D0019003100610000000005A4 +:10247000000051282573290A008F012A00FA015F04 +:1024800000420F5F5F6275696C645F636C617373B8 +:102490005F5F002B095F5F636C6173735F5F002D8B +:1024A000075F5F646F635F5F00380A5F5F696D702D +:1024B0006F72745F5F005F085F5F696E69745F5F72 +:1024C0000079075F5F6E65775F5F007B0A5F5F6C17 +:1024D0006F63616C735F5F008E085F5F6D61696E33 +:1024E0005F5F00FF0A5F5F6D6F64756C655F5F0023 +:1024F000E2085F5F6E616D655F5F007F085F5F642C +:102500006963745F5F00F7085F5F686173685F5FAE +:102510000002085F5F6E6578745F5F006B0C5F5F41 +:102520007175616C6E616D655F5F00C8085F5F709B +:102530006174685F5F00010E5F5F7265706C5F7051 +:1025400072696E745F5F002B085F5F626F6F6C5F14 +:102550005F00C60C5F5F636F6E7461696E735F5F6F +:10256000006D095F5F656E7465725F5F0045085FAF +:102570005F657869745F5F00E2075F5F6C656E5F3F +:102580005F00CF085F5F697465725F5F00260B5F55 +:102590005F6765746974656D5F5F00320B5F5F73C1 +:1025A00065746974656D5F5F00FD0B5F5F64656CEA +:1025B0006974656D5F5F00C4075F5F6164645F5F3E +:1025C0000021075F5F7375625F5F0010085F5F72D5 +:1025D0006570725F5F00D0075F5F7374725F5F004A +:1025E000400B5F5F676574617474725F5F006807BA +:1025F0005F5F64656C5F5F00A7085F5F63616C6C21 +:102600005F5F005D065F5F6C745F5F00B6065F5FD3 +:1026100067745F5F0071065F5F65715F5F00CC0686 +:102620005F5F6C655F5F00A7065F5F67655F5F0068 +:10263000610C5F5F72657665727365645F5F000B46 +:102640000B6D6963726F707974686F6E0022086237 +:10265000797465636F646500C005636F6E737400A1 +:10266000430961736D5F7468756D620043056C6149 +:1026700062656C00A805616C69676E001504646191 +:10268000746100E30475696E7400B4036E6F7000CA +:10269000F1036D6F76009104616E645F003B03632C +:1026A0006D7000440361646400210373756200B6B9 +:1026B000036C736C00A8036C737200650361737222 +:1026C000005F036C6472005D046C64726200570406 +:1026D0006C64726800500373747200320473747215 +:1026E000620038047374726800C7016200CB026232 +:1026F0006C00DF02627800BB0470757368002A0307 +:10270000706F7000E805637073696400E9056370B9 +:10271000736965009D03776669005003636C7A00F6 +:10272000E804726269740066046D6F767700650470 +:102730006D6F76740052056D6F7677740089036D46 +:10274000727300CD0473646976008B0475646976D6 +:1027500000E2056C6472657800AD0573747265788B +:1027600000F7086275696C74696E7300F008456C57 +:102770006C697073697300EA0D53746F7049746506 +:10278000726174696F6E00070D426173654578630D +:10279000657074696F6E002D0F41726974686D65A4 +:1027A0007469634572726F7200970E41737365723C +:1027B00074696F6E4572726F7200210E417474728B +:1027C00069627574654572726F72001D0B427566A1 +:1027D0006665724572726F72009108454F46457288 +:1027E000726F7200F209457863657074696F6E00EC +:1027F0005B0F46696C654578697374734572726FD7 +:102800007200781146696C654E6F74466F756E6420 +:102810004572726F72000112466C6F6174696E6767 +:10282000506F696E744572726F7200160D47656E57 +:10283000657261746F724578697400200B496D7020 +:102840006F72744572726F72005C10496E64656ECF +:10285000746174696F6E4572726F7200830A496E9B +:102860006465784572726F7200AF114B6579626F63 +:10287000617264496E7465727275707400EA084B17 +:1028800065794572726F7200FF0B4C6F6F6B7570DC +:102890004572726F7200DC0B4D656D6F7279457217 +:1028A000726F7200BA094E616D654572726F720087 +:1028B000C6134E6F74496D706C656D656E7465649A +:1028C0004572726F7200A1074F534572726F7200AA +:1028D000810D4F766572666C6F774572726F72000C +:1028E000610C52756E74696D654572726F720094F9 +:1028F0000B53796E7461784572726F7200200A53BF +:10290000797374656D45786974002509547970652B +:102910004572726F72009911556E626F756E644CDC +:102920006F63616C4572726F7200960A56616C75C6 +:10293000654572726F7200B6115A65726F4469769E +:102940006973696F6E4572726F7200220C556E6901 +:10295000636F64654572726F72006F044E6F6E65CF +:1029600000380546616C7365001304547275650088 +:1029700090066F626A6563740017084E6F6E655447 +:1029800079706500F00B4F72646572656444696329 +:1029900074009503616273004403616C6C0013035F +:1029A000616E7900C20461726773007C05617272A6 +:1029B000617900E00362696E0058057B3A23627D0D +:1029C00000EB04626F6F6C00760962797465617266 +:1029D000726179005C056279746573000D0863614A +:1029E0006C6C61626C6500DC0363687200B40B633D +:1029F0006C6173736D6574686F64003F0C5F636F27 +:102A00006C6C656374696F6E73003F046469637412 +:102A100000FA0364697200B8066469766D6F640039 +:102A20007109656E756D6572617465009B046576EC +:102A3000616C001E046578656300250666696C7428 +:102A40006572003505666C6F617400350A66726FD9 +:102A50006D5F627974657300C00767657461747433 +:102A60007200D40773657461747472009D07676C9B +:102A70006F62616C73008C076861736174747200BB +:102A8000B70468617368007003686578007B03258C +:102A900023780028026964001603696E7400B60A80 +:102AA0006973696E7374616E636500B50A697373E7 +:102AB0007562636C617373008F0469746572006280 +:102AC000036C656E0027046C697374003B066C6FC1 +:102AD00063616C7300B9036D617000B1036D61785F +:102AE00000AF036D696E00CE0764656661756C7436 +:102AF000001E0A6E616D65647475706C6500420439 +:102B00006E65787400FD036F6374006C0325236F9A +:102B100000D1046F70656E001C036F72640088043E +:102B200070617468002D03706F77005405707269CE +:102B30006E74001A0572616E676500B70472656194 +:102B40006400D0047265707200A1087265766572C7 +:102B500073656400E705726F756E64005E06736FDF +:102B60007274656400620C7374617469636D65747A +:102B7000686F64002E0373756D00C405737570650E +:102B80007200BC0373797300D808746F5F62797444 +:102B9000657300FD057475706C65009D0474797033 +:102BA00065004E0576616C756500980577726974ED +:102BB0006500E6037A6970002303736570000A03F9 +:102BC000656E6400570473746570009D0473746FC0 +:102BD00070007C05636C65617200E004636F70795E +:102BE00000370866726F6D6B657973003303676534 +:102BF0007400E3056974656D730001046B65797396 +:102C000000BF07706F706974656D006C0A7365743E +:102C100064656661756C7400B40675706461746592 +:102C2000007D0676616C756573006B06617070657A +:102C30006E64003305636C6F736500B90473656E71 +:102C40006400B3057468726F7700A605636F756ED4 +:102C500074006306657874656E64007B05696E6454 +:102C6000657800630672656D6F7665001206696EA1 +:102C70007365727400BF04736F727400A7046A6F87 +:102C8000696E002905737472697000E5066C7374CF +:102C9000726970003B067273747269700026066672 +:102CA0006F726D61740032036B6579002507726580 +:102CB000766572736500010466696E6400D2057200 +:102CC00066696E6400E90672696E64657800B7052E +:102CD00073706C697400A5067273706C697400740B +:102CE0000A73746172747377697468001B08656E87 +:102CF0006473776974680049077265706C61636515 +:102D0000008709706172746974696F6E00150A72C8 +:102D1000706172746974696F6E00C6056C6F776557 +:102D2000720027057570706572005B0769737370B8 +:102D300061636500EB076973616C70686100A807E7 +:102D40006973646967697400DD076973757070651C +:102D50007200FC0769736C6F7765720025086974EF +:102D6000657261626C6500850573746172740097A9 +:102D70000C626F756E645F6D6574686F64007407D4 +:102D8000636C6F73757265002D09646963745F7697 +:102D900069657700270866756E6374696F6E0096C3 +:102DA0000967656E657261746F72004708697465C2 +:102DB0007261746F7200BF066D6F64756C6500B5EB +:102DC00005736C696365000F0764697363617264FE +:102DD00000720A646966666572656E6365009C11BF +:102DE000646966666572656E63655F75706461745B +:102DF0006500280C696E74657273656374696F6E23 +:102E0000000613696E74657273656374696F6E5F33 +:102E100075706461746500F70A69736469736A6F39 +:102E2000696E7400B908697373756273657400FC28 +:102E30000A6973737570657273657400270373652F +:102E40007400CE1473796D6D65747269635F646923 +:102E500066666572656E636500601B73796D6D658E +:102E6000747269635F646966666572656E63655FE7 +:102E700075706461746500F605756E696F6E00EDBE +:102E80000966726F7A656E7365740035046D6174DE +:102E90006800C00165001C02706900210473717232 +:102EA0007400C8036578700021036C6F67007A03B3 +:102EB000636F7300B10373696E00FE0374616E008B +:102EC0001B0461636F730050046173696E001F041B +:102ED0006174616E00CD056174616E320006046339 +:102EE00065696C003308636F70797369676E00936E +:102EF000046661627300E504666D6F64007D0566BB +:102F00006C6F6F7200A608697366696E69746500FC +:102F10003E056973696E66009E0569736E616E0099 +:102F20005B057472756E630025046D6F6466001C2A +:102F30000566726578700040056C64657870000203 +:102F4000076465677265657300870772616469610C +:102F50006E7300D1086D656D5F696E666F00B009B4 +:102F6000717374725F696E666F0097097374616341 +:102F70006B5F75736500AD09686561705F6C6F6349 +:102F80006B00560B686561705F756E6C6F636B00EC +:102F900073206D6178696D756D20726563757273EC +:102FA000696F6E2064657074682065786365656418 +:102FB000656400BD083C6D6F64756C653E008008FB +:102FC0003C6C616D6264613E00D40A3C6C69737450 +:102FD000636F6D703E00CC0A3C64696374636F6D0F +:102FE000703E0054093C736574636F6D703E00342D +:102FF000093C67656E657870723E0052083C7374D8 +:1030000072696E673E00E3073C737464696E3E004C +:10301000C70461726776006109627974656F7264D2 +:10302000657200E903626967008504657869740068 +:1030300089066C6974746C65003A08706C6174661A +:103040006F726D002105737464696E0008067374F5 +:10305000646F757400A30673746465727200BF07B1 +:1030600076657273696F6E006E0C76657273696F48 +:103070006E5F696E666F00A2046E616D6500170E6B +:10308000696D706C656D656E746174696F6E001C3E +:103090000F7072696E745F657863657074696F6EC6 +:1030A0000012067374727563740047077573747247 +:1030B00075637400BC047061636B001F0970616309 +:1030C0006B5F696E746F000706756E7061636B00ED +:1030D0000E0B756E7061636B5F66726F6D004D08ED +:1030E00063616C6373697A650061026763009B07C3 +:1030F000636F6C6C65637400910764697361626CE3 +:1031000065000406656E61626C65009A0969736505 +:103110006E61626C656400CB086D656D5F6672659B +:10312000650052096D656D5F616C6C6F630094049E +:1031300068656C70007305696E70757400E00B63F0 +:103140006F6C6C656374696F6E7300C0086D696342 +:10315000726F626974001005726573657400EA0528 +:10316000736C65657000C80C72756E6E696E675F12 +:1031700074696D6500D00570616E696300E90B7458 +:10318000656D706572617475726500A30474686919 +:1031900073006307617574686F727300F10B616E81 +:1031A0007469677261766974790055046C6F76652D +:1031B000002C0862616461626F6F6D00CD124D6911 +:1031C00063726F4269744469676974616C50696EB7 +:1031D0000007184D6963726F426974416E616C6FCC +:1031E000674469676974616C50696E0052104D697B +:1031F00063726F426974546F75636850696E0092B0 +:103200000C726561645F6469676974616C00FD0DCF +:1032100077726974655F6469676974616C00620BD9 +:10322000726561645F616E616C6F67002D0C77720F +:103230006974655F616E616C6F6700081173657416 +:103240005F616E616C6F675F706572696F6400EEDD +:103250001E7365745F616E616C6F675F7065726924 +:103260006F645F6D6963726F7365636F6E64730023 +:103270007A1E6765745F616E616C6F675F706572FF +:10328000696F645F6D6963726F7365636F6E64739A +:1032900000040A69735F746F756368656400E60A09 +:1032A0004D6963726F426974494F00020470696E20 +:1032B0003000030470696E3100010470696E3200E1 +:1032C000010470696E3300060470696E34000704EF +:1032D00070696E3500040470696E3600050470690B +:1032E0006E37000A0470696E38000B0470696E391D +:1032F00000530570696E313000520570696E3131CE +:1033000000510570696E313200500570696E3133BD +:1033100000570570696E313400560570696E31359D +:1033200000550570696E3136005A0570696E313985 +:1033300000300570696E323000870D4D6963726F21 +:10334000426974496D616765006205496D61676531 +:10335000004205696D6167650023057769647468DB +:1033600000FA0668656967687400B706696E766575 +:10337000727400B0097365745F706978656C00A43D +:10338000096765745F706978656C00A10A73686984 +:1033900066745F6C65667400BA0B73686966745F07 +:1033A000726967687400DF0873686966745F7570B6 +:1033B00000480A73686966745F646F776E00E2099B +:1033C0006D6F6E6F7370616365000F054845415204 +:1033D0005400CF0B48454152545F534D414C4C0073 +:1033E00015054841505059009303534144009B0533 +:1033F000534D494C4500A608434F4E46555345444E +:10340000002605414E475259000B0641534C454595 +:103410005000880953555250524953454400C6053F +:1034200053494C4C59003008464142554C4F555376 +:103430000005034D4548000A035945530004024E58 +:103440004F006E07434C4F434B313200DC06434C78 +:103450004F434B3100DF06434C4F434B3200DE06F7 +:10346000434C4F434B3300D906434C4F434B34003E +:10347000D806434C4F434B3500DB06434C4F434B80 +:103480003600DA06434C4F434B3700D506434C4FCA +:10349000434B3800D406434C4F434B39006C074331 +:1034A0004C4F434B3130006D07434C4F434B313150 +:1034B00000ED074152524F575F4E00C8084152522B +:1034C0004F575F4E4500E6074152524F575F450048 +:1034D000B5084152524F575F534500F007415252D1 +:1034E0004F575F5300A7084152524F575F53570041 +:1034F000F4074152524F575F5700DA084152524F7A +:10350000575F4E5700EB08545249414E474C450017 +:103510008F0D545249414E474C455F4C454654002F +:10352000510A4348455353424F41524400A1074476 +:1035300049414D4F4E4400610D4449414D4F4E4469 +:103540005F534D414C4C0084065351554152450048 +:10355000840C5351554152455F534D414C4C00EB47 +:1035600006524142424954005E03434F5700AB0E9E +:103570004D555349435F43524F5443484554005FB0 +:103580000C4D555349435F515541564552006C0D02 +:103590004D555349435F51554156455253003309E8 +:1035A0005049544348464F524B00E204584D415352 +:1035B0000055065041434D414E00B4065441524718 +:1035C000455400450654534849525400270B524F66 +:1035D0004C4C4552534B415445003C044455434BDD +:1035E00000A105484F55534500C808544F52544F49 +:1035F000495345005609425554544552464C5900CA +:10360000E90B535449434B46494755524500C205BF +:1036100047484F535400980553574F5244007D0775 +:1036200047495241464645004805534B554C4C00CE +:10363000C908554D4252454C4C41009705534E41E7 +:103640004B4500F10A414C4C5F4152524F575300D9 +:10365000C00A414C4C5F434C4F434B53005A0F4DF3 +:103660006963726F426974446973706C6179009127 +:103670000E7365745F6272696768746E6573730058 +:103680009E107365745F646973706C61795F6D6FB0 +:103690006465001F07646973706C61790086047348 +:1036A000686F770028067363726F6C6C0050056456 +:1036B000656C617900B806737472696465008E0484 +:1036C000776169740039046C6F6F70000B0463726A +:1036D0006F700098047465787400F60B536C69631E +:1036E0006564496D61676500BD0F5363726F6C6CF3 +:1036F000696E67537472696E670064026F6E008A48 +:10370000036F666600610569735F6F6E00C10646F0 +:10371000616361646500160E4D6963726F4269747E +:10372000427574746F6E00ED08627574746F6E5F2D +:103730006100EE08627574746F6E5F6200E60A697C +:10374000735F7072657373656400F90B7761735F03 +:103750007072657373656400FD0B6765745F7072EA +:103760006573736573005B154D6963726F426974AD +:10377000416363656C65726F6D65746572001E0DE3 +:10378000616363656C65726F6D65746572003405A5 +:103790006765745F780035056765745F7900360585 +:1037A0006765745F7A00F40A6765745F76616C75AB +:1037B000657300D40F63757272656E745F676573AD +:1037C0007475726500070A69735F67657374757253 +:1037D0006500D80B7761735F6765737475726500F8 +:1037E000180C6765745F676573747572657300A004 +:1037F000027570003704646F776E00DE046C6566D6 +:103800007400E50572696768740021076661636585 +:103810002075700036096661636520646F776E00FD +:10382000B6086672656566616C6C003102336700CC +:1038300094023667005A0238670031057368616B7D +:103840006500100F4D6963726F426974436F6D704C +:10385000617373005507636F6D70617373002D079B +:1038600068656164696E6700230D69735F63616CED +:103870006962726174656400020963616C696272F5 +:10388000617465004911636C6561725F63616C69A5 +:1038900062726174696F6E00F4126765745F6669C5 +:1038A000656C645F737472656E67746800B80B4D05 +:1038B0006963726F426974493243005D0369326320 +:1038C00000B6046164647200CB016E00740362751B +:1038D0006600F2067265706561740004056D7573AB +:1038E000696300A1096672657175656E6379007B15 +:1038F000086475726174696F6E0083057069746322 +:103900006800F20370696E002104706C6179009B9D +:10391000097365745F74656D706F008F09676574F6 +:103920005F74656D706F00DA0362706D004305743B +:1039300069636B73009F054241444459009D0742EF +:10394000415F44494E4700FC0842495254484441B3 +:103950005900C805424C5545530059054348415349 +:103960004500FC0944414441444144554D00480B45 +:10397000454E5445525441494E4552004207465522 +:103980004E4552414C00D30446554E4B00AA094ABD +:10399000554D505F444F574E00FD074A554D505FFF +:1039A0005550003D044E59414E006B034F444500B5 +:1039B000970A504F5745525F444F574E00010850E9 +:1039C0004F5745525F5550003A075052454C5544A9 +:1039D0004500EB0950554E43484C494E4500B10651 +:1039E000505954484F4E00C70852494E47544F4E05 +:1039F0004500640957415741574157414100170756 +:103A000057454444494E4700C401610067026123A1 +:103A1000002C0461233A31002E0461233A330076EE +:103A2000026132007002613400BB0461343A31003B +:103A3000B90461343A33000F03613A31000C036179 +:103A40003A32000A03613A34000B03613A3500DE72 +:103A50000462323A3100940262330093026234000D +:103A6000D80462343A3100DB0462343A3200920204 +:103A7000623500D90462353A31000C03623A3100F4 +:103A80000F03623A3200C6016300A502632300708F +:103A90000363233500BB056323353A3100B8056362 +:103AA00023353A32006E0463233A310067046323FE +:103AB0003A3800FC0463323A3200B5026333007CCA +:103AC0000463333A33007B0463333A3400B2026355 +:103AD0003400F90463343A3100FB0463343A3300B0 +:103AE000FC0463343A3400B3026335007804633570 +:103AF0003A31007B0463353A32007A0463353A3355 +:103B0000007D0463353A34000D03633A31000E033F +:103B1000633A32000F03633A33000803633A340018 +:103B20000403633A3800C1016400C202642300FF49 +:103B3000056423353A32000A0464233A32000B0448 +:103B400064233A3300D202643300D5026434001E89 +:103B50000464343A3100D4026435001F0464353AF9 +:103B600031001C0464353A32000A03643A3100091A +:103B700003643A32000803643A33000F03643A34B2 +:103B8000000E03643A35000D03643A360003036403 +:103B90003A3800BA0465333A3300F4026534003F22 +:103BA0000465343A3100F5026535003F0465363A64 +:103BB00033000B03653A31000803653A320009030C +:103BC000653A33000E03653A34000F03653A350059 +:103BD0000C03653A36000203653A3800E00465627A +:103BE0003A3800C3016600010266230035036623EC +:103BF0003500FD056623353A32004B0466233A3121 +:103C000000480466233A3200420466233A38001121 +:103C1000026632000803663A31000B03663A32004E +:103C20000A03663A33000D03663A34000103663A2C +:103C30003800C20167002102672300EA0467233AC3 +:103C40003100E80467233A3300FA0467333A31005D +:103C500036026734007D0467343A31007E046734ED +:103C60003A32003702673500FC0467353A31000903 +:103C700003673A31000A03673A32000B03673A33AD +:103C8000000103673A3800D7017200CB0472343A5E +:103C900032001C03723A31001F03723A32001E03D5 +:103CA000723A3300320C4D6963726F426974554148 +:103CB000525400770475617274001F04696E697450 +:103CC00000F5086261756472617465004904626997 +:103CD00074730042067061726974790041047069FE +:103CE0006E73008902747800CF02727800760772D2 +:103CF000656164616C6C00F908726561646C696E81 +:103D000065004B0872656164696E746F006A034FE9 +:103D1000444400DD044556454E004A0B4D6963722C +:103D20006F42697453504900CF03737069002604D1 +:103D30006D6F646500720473636C6B001D046D6FBE +:103D40007369009D046D69736F00890E77726974E1 +:103D5000655F72656164696E746F0069086E656F96 +:103D6000706978656C0069084E656F506978656C9C +:103D700000BE0672616E646F6D00660B67657472DB +:103D8000616E64626974730092047365656400A374 +:103D90000972616E6472616E676500AF0772616E71 +:103DA00064696E74002E0663686F696365000107BD +:103DB000756E69666F726D005305617564696F0099 +:103DC000AE0A417564696F4672616D6500270A72BB +:103DD000657475726E5F70696E00B806736F757288 +:103DE0006365005608636F707966726F6D007902C3 +:103DF0006F7300B705756E616D65009B077379730E +:103E00006E616D650062086E6F64656E616D650060 +:103E1000EC0772656C65617365001A074279746519 +:103E200073494F001E0654657874494F00F70877B0 +:103E300072697461626C650098076C697374646977 +:103E4000720060076D616368696E650020047369C4 +:103E50007A6500040A69735F706C6179696E670046 +:103E60006D0673706565636800AE037361790094D5 +:103E70000970726F6E6F756E636500B60473696E5C +:103E8000670031067468726F6174006E056D6F753E +:103E90007468006205737065656400D405646562CA +:103EA00075670043097472616E736C61746500D448 +:103EB00005726164696F004F06636F6E6669670023 +:103EC000BF0A73656E645F627974657300880D72F2 +:103ED0006563656976655F6279746573004E077224 +:103EE0006563656976650059066C656E6774680080 +:103EF000940571756575650026076368616E6E656A +:103F00006C00DA05706F77657200A80964617461EE +:103F10005F72617465007307616464726573730036 +:103F2000BA0567726F7570007B0C524154455F3261 +:103F300035304B42495400DB0A524154455F314D04 +:103F400042495400580A524154455F324D42495447 +:103F500000332E342E300066756E6374696F6E20E8 +:103F6000646F6573206E6F742074616B65206B6580 +:103F700079776F726420617267756D656E74730016 +:103F800066756E6374696F6E2074616B657320254E +:103F90006420706F736974696F6E616C2061726701 +:103FA000756D656E74732062757420256420776565 +:103FB000726520676976656E0066756E6374696FF9 +:103FC0006E206D697373696E672025642072657158 +:103FD000756972656420706F736974696F6E616C66 +:103FE00020617267756D656E74730066756E6374BB +:103FF000696F6E20657870656374656420617420F4 +:104000006D6F737420256420617267756D656E74C1 +:10401000732C20676F742025640027257127206189 +:104020007267756D656E742072657175697265640D +:1040300000657874726120706F736974696F6E6166 +:104040006C20617267756D656E7473206769766543 +:104050006E006578747261206B6579776F72642089 +:10406000617267756D656E747320676976656E0041 +:10407000627974656172726179286200617272613D +:10408000792827256327002C205B002C2000626103 +:10409000642074797065636F6465006F6E6C79205D +:1040A000736C6963657320776974682073746570D5 +:1040B0003D312028616B61204E6F6E652920617251 +:1040C0006520737570706F7274656400706F702016 +:1040D00066726F6D20656D707479206C6973740001 +:1040E0000300000000000000007061727365722020 +:1040F000636F756C64206E6F7420616C6C6F6361AC +:10410000746520656E6F756768206D656D6F727977 +:1041100000756E657870656374656420696E6465AA +:104120006E7400756E696E64656E7420646F65737D +:10413000206E6F74206D6174636820616E79206FEA +:104140007574657220696E64656E746174696F6EF2 +:10415000206C6576656C0063616E6E6F74206D69AE +:104160007820627974657320616E64206E6F6E6270 +:1041700079746573206C69746572616C7300696E23 +:1041800076616C69642073796E74617800252E2ADB +:1041900073005C2563005C5C005C6E005C72005C1C +:1041A00074005C7825303278005C752530347800F6 +:1041B0005C552530387800737472696E6720696EBB +:1041C0006469636573206D75737420626520696E20 +:1041D0007465676572732C206E6F7420257300738D +:1041E0007472696E6720696E646578206F757420DB +:1041F0006F662072616E6765003C25713E005472E7 +:104200006163656261636B20286D6F7374207265F2 +:1042100063656E742063616C6C206C617374293A01 +:104220000A00202046696C6520222571222C206C12 +:10423000696E65202564002C20696E2025710A00B6 +:1042400063616E277420636F6E76657274202573C8 +:1042500020746F20696E740063616E277420636F31 +:104260006E7665727420257320746F20666C6F61A2 +:1042700074006F626A656374202725732720697351 +:10428000206E6F742061207475706C65206F7220D1 +:104290006C69737400726571756573746564206C04 +:1042A000656E67746820256420627574206F626A89 +:1042B00065637420686173206C656E67746820257F +:1042C0006400257120696E6469636573206D757380 +:1042D0007420626520696E7465676572732C206E48 +:1042E0006F7420257300257120696E646578206FD6 +:1042F0007574206F662072616E6765006F626A6513 +:104300006374206F662074797065202725732720D9 +:10431000686173206E6F206C656E282900272573F5 +:1043200027206F626A65637420646F6573206E6F07 +:104330007420737570706F7274206974656D206479 +:10434000656C6574696F6E0027257327206F626A3C +:10435000656374206973206E6F7420737562736374 +:104360007269707461626C650027257327206F6223 +:104370006A65637420646F6573206E6F7420737553 +:1043800070706F7274206974656D206173736967F2 +:104390006E6D656E74006F626A6563742077697410 +:1043A00068206275666665722070726F746F636FE5 +:1043B0006C20726571756972656400756E657870E0 +:1043C0006563746564206B6579776F7264206172D0 +:1043D00067756D656E7420272571270066756E639D +:1043E00074696F6E20676F74206D756C7469706C82 +:1043F000652076616C75657320666F7220617267E7 +:10440000756D656E742027257127006C69737420A3 +:1044100072657175697265640063616E27742073DB +:104420006574206174747269627574650004656FE7 +:1044300072086C736C0C6C7372106173721461642B +:1044400063187362631C726F7220747374246E65D8 +:104450006728636D702C636D6E306F7272346D758A +:104460006C386269633C6D766E006571016E650241 +:104470006373036363046D6905706C067673077676 +:1044800063086869096C730A67650B6C740C677460 +:104490000D6C65272573272065787065637473201C +:1044A0006174206D6F737420722564002725732753 +:1044B0002065787065637473206120726567697325 +:1044C000746572002725732720657870656374739F +:1044D000207B72302C2072312C202E2E2E7D002736 +:1044E000257327206578706563747320616E206979 +:1044F0006E7465676572002725732720696E746581 +:10450000676572203078257820646F6573206E6F40 +:10451000742066697420696E206D61736B20307839 +:1045200025780027257327206578706563747320CC +:1045300061206C6162656C006C6162656C2027258E +:104540007127206E6F7420646566696E65640075FE +:104550006E737570706F72746564205468756D62E7 +:1045600020696E737472756374696F6E202725738A +:1045700027207769746820256420617267756D65EE +:104580006E747300272573272065787065637473D4 +:1045900020616E2061646472657373206F6620749D +:1045A000686520666F726D205B612C20625D006221 +:1045B00072616E6368206E6F7420696E2072616E26 +:1045C00067650063616E206F6E6C79206861766547 +:1045D00020757020746F203420706172616D657475 +:1045E00065727320746F205468756D6220617373F7 +:1045F000656D626C7900706172616D65746572736E +:10460000206D7573742062652072656769737465C7 +:10461000727320696E2073657175656E63652072B3 +:104620003020746F2072330000723000017231004C +:1046300002723200037233000472340005723500D6 +:1046400006723600077237000872380009723900A6 +:104650000A7231300B7231310C7231320D723133DA +:104660000E7231340F7231350A736C000B667000B4 +:104670000D7370000E6C72000F706300696C6C65D6 +:1046800067616C206D6F64650066696C65206E6F94 +:104690007420666F756E6400202E3F2C2D494945AD +:1046A0004141414155414945554F524C5759575247 +:1046B0004C57594D4E4E4451535346542F2F5A5A2E +:1046C0005644432A4A2A2A2A45414F414F55422AF5 +:1046D0002A442A2A472A2A472A2A502A2A542A2A96 +:1046E0004B2A2A4B2A2A5555552A2A2A2A2A59481A +:1046F000484541484F4858585258485858585848C3 +:104700002A2A2A2A2A2A58582A2A482A4848582A25 +:10471000482A48482A2A2A2A2A5959595757572A8B +:104720002A2A2A2A2A2A2A2A582A2A2A2A2A2A2ABB +:104730002A2A2A2A582A2A4C4D4E0000000000A49A +:10474000A4A4A4A4A48484A4A48484848484848449 +:1047500044444444444C4C4C484C4040404040400D +:104760004444444448404C440000B4B4B494949449 +:104770004E4E4E4E4E4E4E4E4E4E4E4E4B4B4B4B65 +:104780004B4B4B4B4B4B4B4B80C1C1001212120891 +:104790000B090B0E0F0B100C06060E0C0E0C0B0863 +:1047A000080B0A09080808080803050202020202A9 +:1047B00002060608060602090402010E0F0F0F0E7C +:1047C0000E080202070201070202070202080202A3 +:1047D000060202070204070104050580C1C1C1C128 +:1047E00000000000000000000000000000000000C9 +:1047F000000010101010080C080440242020240091 +:1048000000242020242020002000000000000000C0 +:10481000000000000404040000000000000000008C +:104820000404040000000000004F4B0050686F6E4D +:10483000656D657320746F6F206C6F6E6700496CD7 +:104840006C6567616C2070697463680050686F6E96 +:10485000656D65206E6F7420756E64657273746F1C +:104860006F6400496E7075742070686F6E656D6559 +:104870007300494E5445524E414C204552524F52BE +:104880003A20496C6C6567616C2070686F6E656D6D +:104890006520696E64657800496E736572742042A4 +:1048A0007265616474680D0050726F63657373653F +:1048B000642070686F6E656D6573000012121208D7 +:1048C000080808080B060C0A05050B0A0A0A09085D +:1048D0000709070608060707070205020202020287 +:1048E000020606070606020803011E0D0C0C0C0E3C +:1048F0000906010205010106010206010208020281 +:10490000040202060104060104C7FF2A31323334CF +:1049100035363738696E7428292061726720322055 +:104920006D757374206265203E3D203220616E6497 +:10493000203C3D20333600696E76616C69642073DB +:10494000796E74617820666F7220696E7465676530 +:104950007220776974682062617365202564006342 +:104960006F6D706C65782076616C756573206E6F05 +:104970007420737570706F7274656400696E76610F +:104980006C69642073796E74617820666F72206E32 +:10499000756D62657200285B005D29002571280035 +:1049A0007B003C76616C75653E00706F7069746564 +:1049B0006D28293A2064696374696F6E6172792089 +:1049C000697320656D7074790064696374696F6ED2 +:1049D00061727920757064617465207365717565A5 +:1049E0006E636520686173207468652077726F6EEE +:1049F00067206C656E67746800646963745F6974CE +:104A0000656D7300646963745F6B657973006469D5 +:104A100063745F76616C75657300492F4F206F700A +:104A200065726174696F6E206F6E20636C6F736561 +:104A3000642066696C65004E6F206D6F726520732F +:104A4000746F726167652073706163650064697675 +:104A50006973696F6E206279207A65726F00636195 +:104A60006E277420636F6E7665727420696E66209F +:104A7000746F20696E740063616E277420636F6EBB +:104A800076657274204E614E20746F20696E7400DA +:104A90006F766572666C6F7720636F6E7665727481 +:104AA000696E67206C6F6E6720696E7420746F206A +:104AB0006D616368696E6520776F7264006E65670B +:104AC000617469766520736869667420636F756EBA +:104AD00074006D6963726F3A6269742077697468F3 +:104AE000206E524635313832320076312E372D392C +:104AF0002D6762653032306562206F6E2032303152 +:104B0000362D30342D313800312E30003D3D3D3DC5 +:104B10003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DC5 +:104B20003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DB5 +:104B30003D3D3D3D3D3D3D0D0025733A0D0A0D0ABD +:104B400000206964782020202070686F6E656D6594 +:104B500020206C656E6774682020737472657373AF +:104B60000D00202533692020202020202563256387 +:104B700020202020202025336920202020202020D4 +:104B800025690D0A00202533692020202020203FA0 +:104B90003F20202020202025336920202020202095 +:104BA0002025690D0A0046696E616C20646174619C +:104BB00020666F7220737065656368206F7574700E +:104BC00075742E202569206672616D65733A0D0A31 +:104BD0000D0A0020666C61677320616D706C312076 +:104BE000667265713120616D706C3220667265711C +:104BF0003220616D706C332066726571332070698C +:104C00007463680D002D2D2D2D2D2D2D2D2D2D2D69 +:104C10002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DC4 +:104C20002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DB4 +:104C30002D2D2D2D2D0D002535692025356920259B +:104C400035692025356920253569202535692025D8 +:104C50003569202535690D0A003C67656E6572610E +:104C6000746F72206F626A65637420272571272034 +:104C700061742025703E0063616E27742073656E39 +:104C800064206E6F6E2D4E6F6E652076616C75655B +:104C900020746F2061206A7573742D73746172744F +:104CA00065642067656E657261746F720067656E1A +:104CB000657261746F722069676E6F7265642047F8 +:104CC000656E657261746F724578697400000000EA +:104CD00000000000000003030303030000000000C5 +:104CE00000000000000000000000000000030101BF +:104CF00001010101010101010101010101454545D8 +:104D00004545454545454501010101010101595907 +:104D10005959595919191919191919191919191903 +:104D200019191919191919190101010101016969E3 +:104D300069696969292929292929292929292929E3 +:104D40002929292929292929010101010000000116 +:104D50000102020202030303030303030304040426 +:104D600004040404040404040404040404056E6F2D +:104D7000206D6F64756C65206E616D6564202725FC +:104D800073270063616E6E6F7420706572666F7258 +:104D90006D2072656C617469766520696D706F72E3 +:104DA00074006E6F206D6F64756C65206E616D654B +:104DB000642027257127005F5F696E69745F5F2E2D +:104DC00070790057656C636F6D6520746F204D6955 +:104DD00063726F507974686F6E206F6E20746865AF +:104DE000206D6963726F3A626974210A0A5472799C +:104DF00020746865736520636F6D6D616E64733ACE +:104E00000A2020646973706C61792E7363726F6C11 +:104E10006C282748656C6C6F27290A202072756EF4 +:104E20006E696E675F74696D6528290A2020736C4E +:104E30006565702831303030290A2020627574741D +:104E40006F6E5F612E69735F70726573736564283E +:104E5000290A5768617420646F207468657365203F +:104E6000636F6D6D616E647320646F3F2043616E8C +:104E700020796F7520696D70726F76652074686532 +:104E80006D3F2048494E543A20757365207468651B +:104E900020757020616E6420646F776E0A61727293 +:104EA0006F77206B65797320746F20676574207944 +:104EB0006F757220636F6D6D616E642068697374C5 +:104EC0006F72792E20507265737320746865205458 +:104ED0004142206B657920746F206175746F2D637A +:104EE0006F6D706C6574650A756E66696E6973685E +:104EF000656420776F7264732028736F202764695C +:104F000027206265636F6D65732027646973706C19 +:104F100061792720616674657220796F75207072DF +:104F200065737320544142292E2054686573650AC5 +:104F3000747269636B7320736176652061206C6F96 +:104F400074206F6620747970696E6720616E6420CA +:104F50006C6F6F6B20636F6F6C210A0A4578706C01 +:104F60006F72653A0A54797065202768656C7028FD +:104F7000736F6D657468696E67292720746F20668A +:104F8000696E64206F75742061626F757420697436 +:104F90002E2054797065202764697228736F6D65BF +:104FA0007468696E67292720746F207365652077A0 +:104FB0006861740A69742063616E20646F2E2054E6 +:104FC000797065202764697228292720746F2073FF +:104FD00065652077686174207374756666206973EF +:104FE00020617661696C61626C652E20466F72206B +:104FF000676F6F646E6573732073616B652C0A64F1 +:105000006F6E277420747970652027696D706F72D8 +:10501000742074686973272E0A0A436F6E74726F66 +:105020006C20636F6D6D616E64733A0A2020435487 +:10503000524C2D4320202020202020202D2D207375 +:10504000746F7020612072756E6E696E6720707269 +:105050006F6772616D0A20204354524C2D4420200A +:105060002020202020202D2D206F6E206120626CBA +:10507000616E6B206C696E652C20646F20612073FB +:105080006F6674207265736574206F66207468653E +:10509000206D6963726F3A6269740A20204354522A +:1050A0004C2D4520202020202020202D2D20656EF5 +:1050B000746572207061737465206D6F64652C2057 +:1050C0007475726E696E67206F6666206175746FA5 +:1050D0002D696E64656E740A0A417661696C61625D +:1050E0006C65206D6F64756C65733A20616E7469D0 +:1050F000677261766974792C2061727261792C20F3 +:10510000636F6C6C656374696F6E732C2067632CBE +:10511000206C6F76652C206D6174682C0A6D696354 +:10512000726F707974686F6E2C206D757369632C63 +:10513000206E656F706978656C2C206F732C2072FF +:105140006164696F2C2072616E646F6D2C207370C6 +:10515000656563682C207374727563742C20737991 +:10516000732C20746869730A0A466F72206D6F721F +:105170006520696E666F726D6174696F6E20616221 +:105180006F757420507974686F6E2C20766973691E +:10519000743A20687474703A2F2F707974686F6E47 +:1051A0002E6F72672F0A546F2066696E64206F75C8 +:1051B000742061626F7574204D6963726F507974E9 +:1051C000686F6E2C2076697369743A206874747005 +:1051D0003A2F2F6D6963726F707974686F6E2E6FDE +:1051E00072672F0A507974686F6E2F6D6963726FE2 +:1051F0003A62697420646F63756D656E7461746979 +:105200006F6E20697320686572653A2068747470E7 +:10521000733A2F2F6D6963726F6269742D6D6963C4 +:10522000726F707974686F6E2E72656164746865F0 +:10523000646F63732E696F2F0A004D6963726F424A +:105240006974416363656C65726F6D657465722026 +:10525000747970650A006F626A6563742000206962 +:1052600073206F6620747970652025710A00202DE7 +:105270002D200055736566756C2073747566662005 +:10528000746F20636F6E74726F6C20746865206D2C +:105290006963726F3A6269742068617264776172DF +:1052A000652E0A00507574206D6963726F3A6269E9 +:1052B0007420696E2070616E69632829206D6F64A7 +:1052C0006520616E6420646973706C617920616E21 +:1052D00020756E686170707920666163652E0A5072 +:1052E0007265737320726573657420627574746F70 +:1052F0006E20746F20657869742070616E69632810 +:1053000029206D6F64652E0A00507574206D6963E5 +:10531000726F3A62697420746F20736C65657028CF +:1053200074696D652920666F7220736F6D65206DDD +:10533000696C6C697365636F6E64732028312073C8 +:1053400065636F6E64203D2031303030206D7329ED +:10535000206F662074696D652E0A736C6565702810 +:105360003230303029206769766573206D69637249 +:105370006F3A62697420612032207365636F6E64D6 +:10538000206E61702E0A0052657475726E207275FF +:105390006E6E696E675F74696D65282920696E207D +:1053A0006D696C6C697365636F6E64732073696E8D +:1053B0006365206D6963726F3A6269742773206C4C +:1053C0006173742072657365742E0A00526574757A +:1053D000726E206D6963726F3A626974277320740C +:1053E000656D706572617475726520696E206465A3 +:1053F00067726565732043656C636975732E0A0077 +:10540000446574656374206D6963726F3A62697490 +:105410002773206D6F76656D656E7420696E20331D +:10542000442E0A4974206D6561737572657320742A +:10543000696C7420285820616E6420592920616E9F +:10544000642075702D646F776E20285A29206D6F47 +:1054500074696F6E2E0A0052657475726E206D69E4 +:1054600063726F3A62697427732074696C742028C0 +:105470005820616363656C65726174696F6E292081 +:10548000696E206D696C6C692D6727732E0A005256 +:10549000657475726E206D6963726F3A6269742704 +:1054A000732074696C7420285920616363656C658E +:1054B000726174696F6E2920696E206D696C6C6908 +:1054C0002D6727732E0A0052657475726E206D6900 +:1054D00063726F3A62697427732075702D646F77F9 +:1054E0006E206D6F74696F6E20285A20616363654A +:1054F0006C65726174696F6E2920696E206D696CCC +:105500006C692D6727732E0A5A20697320612070F9 +:105510006F736974697665206E756D626572207748 +:1055200068656E206D6F76696E672075702E204DF0 +:105530006F76696E6720646F776E2C205A206973CE +:105540002061206E65676174697665206E756D6295 +:1055500065722E0A006D6963726F3A62697427730F +:105560002027412720627574746F6E2E205768655E +:105570006E20627574746F6E20697320707265732B +:1055800073656420646F776E2C2069735F70726539 +:1055900073736564282920697320547275652E0A17 +:1055A000006D6963726F3A6269742773202742271E +:1055B00020627574746F6E2E205768656E20627558 +:1055C00074746F6E206973207072657373656420E4 +:1055D000646F776E2C2069735F7072657373656496 +:1055E000282920697320547275652E0A00496620A7 +:1055F00074686520627574746F6E206973207072B0 +:10560000657373656420646F776E2C2069735F70B7 +:1056100072657373656428292069732054727565F7 +:105620002C20656C73652046616C73652E0A0055ED +:105630007365207761735F70726573736564282981 +:1056400020746F206C6561726E20696620746865D5 +:1056500020627574746F6E20776173207072657349 +:105660007365642073696E636520746865206C617E +:1056700073742074696D650A7761735F7072657306 +:105680007365642829207761732063616C6C65649D +:105690002E2052657475726E732054727565206F7A +:1056A000722046616C73652E0A005573652067652C +:1056B000745F70726573736573282920746F206737 +:1056C0006574207468652072756E6E696E672074EB +:1056D0006F74616C206F6620627574746F6E2070D9 +:1056E0007265737365732C20616E6420616C736FD7 +:1056F0000A7265736574207468697320636F756ED0 +:1057000074657220746F207A65726F2E0A00476983 +:10571000766573206120636F6D70617373206865B7 +:105720006164696E67206265747765656E20302DEF +:1057300033363020776974682030206173206E6FB3 +:105740007274682E0A00557365206D6963726F3A32 +:10575000626974277320636F6D7061737320746F57 +:10576000206465746563742074686520646972657B +:105770006374696F6E206974206973206865616461 +:10578000696E6720696E2E0A54686520636F6D70BC +:105790006173732063616E20646574656374206D4A +:1057A00061676E65746963206669656C64732E0A4F +:1057B000497420757365732074686520456172743F +:1057C000682773206D61676E65746963206669651B +:1057D0006C6420746F2064657465637420646972FE +:1057E000656374696F6E2E0A004966206D69637285 +:1057F0006F3A626974277320636F6D7061737320F1 +:1058000069735F63616C69627261746564282920E1 +:10581000616E642061646A757374656420666F727A +:105820002061636375726163792C2072657475728F +:105830006E20547275652E0A496620636F6D706123 +:105840007373206861736E2774206265656E2061D2 +:10585000646A757374656420666F72206163637532 +:10586000726163792C2072657475726E2046616C6A +:1058700073652E0A004966206D6963726F3A62692A +:105880007420697320636F6E66757365642C206382 +:10589000616C69627261746528292074686520638F +:1058A0006F6D7061737320746F2061646A757374B7 +:1058B0002074686520697473206163637572616325 +:1058C000792E0A49742077696C6C2061736B20799A +:1058D0006F7520746F20726F7461746520746865D1 +:1058E0002064657669636520746F20647261772037 +:1058F0006120636972636C65206F6E207468652037 +:10590000646973706C61792E0A0052657365742046 +:105910006D6963726F3A626974277320636F6D708B +:10592000617373207573696E6720636C6561725F64 +:1059300063616C6962726174696F6E282920636F9C +:105940006D6D616E642E0A52756E2063616C6962C2 +:1059500072617465282920746F20696D70726F768A +:10596000652061636375726163792E0A0052657404 +:1059700075726E206D61676E657469632066696516 +:105980006C6420646574656374656420616C6F6E1B +:1059900067206D6963726F3A6269742773205820BB +:1059A000617869732E0A557375616C6C792C20745B +:1059B000686520636F6D70617373207265747572B2 +:1059C0006E73207468652065617274682773206D3A +:1059D00061676E65746963206669656C6420696ED1 +:1059E000206D6963726F2D5465736C6120756E69EB +:1059F00074732E0A556E6C6573732E2E2E61207390 +:105A000074726F6E67206D61676E657420697320B4 +:105A10006E6561726279210A0052657475726E203A +:105A20006D61676E65746963206669656C64206486 +:105A30006574656374656420616C6F6E67206D6961 +:105A400063726F3A626974277320592061786973B1 +:105A50002E0A557375616C6C792C2074686520630F +:105A60006F6D706173732072657475726E732074DC +:105A700068652065617274682773206D61676E6563 +:105A8000746963206669656C6420696E206D696362 +:105A9000726F2D5465736C6120756E6974732E0A74 +:105AA000556E6C6573732E2E2E61207374726F6E3B +:105AB00067206D61676E6574206973206E65617221 +:105AC0006279210A0052657475726E206D61676E8D +:105AD00065746963206669656C64206465746563D8 +:105AE00074656420616C6F6E67206D6963726F3AD4 +:105AF0006269742773205A20617869732E0A55737E +:105B000075616C6C792C2074686520636F6D7061B1 +:105B100073732072657475726E7320746865206586 +:105B2000617274682773206D61676E6574696320A4 +:105B30006669656C6420696E206D6963726F2D54AF +:105B400065736C6120756E6974732E0A556E6C6591 +:105B500073732E2E2E61207374726F6E67206D61C9 +:105B6000676E6574206973206E6561726279210ABF +:105B70000052657475726E20737472656E67746816 +:105B8000206F66206D61676E657469632066696564 +:105B90006C642061726F756E64206D6963726F3A18 +:105BA0006269742E0A006D6963726F3A62697427C4 +:105BB0007320357835204C454420646973706C61DE +:105BC000792E0A005573652073686F77287829202D +:105BD000746F207072696E742074686520737472BB +:105BE000696E67206F7220696D6167657320277821 +:105BF0002720746F2074686520646973706C617904 +:105C00002E205472792073686F77282748692127DE +:105C1000292E0A5573652073686F7728732C2069C5 +:105C20002920746F2073686F7720737472696E67B0 +:105C3000202773272C206F6E652063686172616373 +:105C400074657220617420612074696D65207769C4 +:105C5000746820612064656C6179206F660A276929 +:105C600027206D696C6C697365636F6E64732E0AAF +:105C700000557365207363726F6C6C2873292074F0 +:105C80006F207363726F6C6C20746865207374721C +:105C9000696E6720277327206163726F73732074A6 +:105CA000686520646973706C61792E0A557365208C +:105CB0007363726F6C6C28732C20692920746F20B9 +:105CC0007363726F6C6C20737472696E67202773D4 +:105CD00027207769746820612064656C6179206F82 +:105CE0006620276927206D696C6C697365636F6E28 +:105CF00064732061667465720A6561636820636815 +:105D0000617261637465722E0A0055736520636C5D +:105D1000656172282920746F20636C656172206D43 +:105D20006963726F3A626974277320646973706C77 +:105D300061792E0A00557365206765745F70697814 +:105D4000656C28782C20792920746F207265747511 +:105D5000726E2074686520646973706C6179277352 +:105D6000206272696768746E657373206174204C79 +:105D7000454420706978656C2028782C79292E0A92 +:105D80004272696768746E6573732063616E206226 +:105D9000652066726F6D203020284C454420697361 +:105DA000206F66662920746F203920286D6178691C +:105DB0006D756D204C4544206272696768746E652C +:105DC0007373292E0A00557365207365745F7069BB +:105DD00078656C28782C20792C20622920746F201B +:105DE0007365742074686520646973706C617920D0 +:105DF0006174204C454420706978656C2028782CAB +:105E0000792920746F206272696768746E65737394 +:105E1000202762270A77686963682063616E2062C1 +:105E20006520736574206265747765656E20302027 +:105E3000286F66662920746F2039202866756C6C7F +:105E4000206272696768746E657373292E0A005543 +:105E50007365206F6E282920746F207475726E2010 +:105E60006F6E2074686520646973706C61792E0AA6 +:105E700000557365206F6666282920746F2074753D +:105E8000726E206F66662074686520646973706C3A +:105E900061792E0A005573652069735F6F6E28293A +:105EA00020746F2071756572792069662074686549 +:105EB000206D6963726F3A62697427732064697335 +:105EC000706C6179206973206F6E2028547275653B +:105ED00029206F72206F6666202846616C736529E1 +:105EE0002E0A006D6963726F3A62697427732070BD +:105EF000696E2030206F6E2074686520676F6C6457 +:105F0000206564676520636F6E6E6563746F722EC3 +:105F10000A006D6963726F3A626974277320706951 +:105F20006E2031206F6E2074686520676F6C64206E +:105F30006564676520636F6E6E6563746F722E0AA9 +:105F4000006D6963726F3A62697427732070696EBD +:105F50002032206F6E2074686520676F6C64206546 +:105F600064676520636F6E6E6563746F722E0A00DE +:105F70006D6963726F3A62697427732070696E206D +:105F800033206F6E2074686520676F6C64206564D1 +:105F9000676520636F6E6E6563746F722E0A006DA5 +:105FA0006963726F3A62697427732070696E203476 +:105FB000206F6E2074686520676F6C64206564676D +:105FC0006520636F6E6E6563746F722E0A006D6973 +:105FD00063726F3A62697427732070696E2035208E +:105FE0006F6E2074686520676F6C642065646765F8 +:105FF00020636F6E6E6563746F722E0A006D696345 +:10600000726F3A62697427732070696E2036206F50 +:106010006E2074686520676F6C6420656467652016 +:10602000636F6E6E6563746F722E0A006D696372C2 +:106030006F3A62697427732070696E2037206F6E23 +:106040002074686520676F6C6420656467652063F1 +:106050006F6E6E6563746F722E0A006D6963726F86 +:106060003A62697427732070696E2038206F6E2041 +:1060700074686520676F6C64206564676520636F72 +:106080006E6E6563746F722E0A006D6963726F3A8B +:1060900062697427732070696E2039206F6E2074D6 +:1060A000686520676F6C64206564676520636F6E48 +:1060B0006E6563746F722E0A006D6963726F3A6267 +:1060C000697427732070696E203130206F6E2074E0 +:1060D000686520676F6C64206564676520636F6E18 +:1060E0006E6563746F722E0A006D6963726F3A6237 +:1060F000697427732070696E203131206F6E2074AF +:10610000686520676F6C64206564676520636F6EE7 +:106110006E6563746F722E0A006D6963726F3A6206 +:10612000697427732070696E203132206F6E20747D +:10613000686520676F6C64206564676520636F6EB7 +:106140006E6563746F722E0A006D6963726F3A62D6 +:10615000697427732070696E203133206F6E20744C +:10616000686520676F6C64206564676520636F6E87 +:106170006E6563746F722E0A006D6963726F3A62A6 +:10618000697427732070696E203134206F6E20741B +:10619000686520676F6C64206564676520636F6E57 +:1061A0006E6563746F722E0A006D6963726F3A6276 +:1061B000697427732070696E203135206F6E2074EA +:1061C000686520676F6C64206564676520636F6E27 +:1061D0006E6563746F722E0A006D6963726F3A6246 +:1061E000697427732070696E203136206F6E2074B9 +:1061F000686520676F6C64206564676520636F6EF7 +:106200006E6563746F722E0A006D6963726F3A6215 +:10621000697427732070696E203139206F6E207485 +:10622000686520676F6C64206564676520636F6EC6 +:106230006E6563746F722E0A006D6963726F3A62E5 +:10624000697427732070696E203230206F6E20745D +:10625000686520676F6C64206564676520636F6E96 +:106260006E6563746F722E0A006D6963726F3A62B5 +:1062700069742C2077726974655F646967697461F9 +:106280006C2863686F6963652920746F2074686582 +:106290002070696E2E20596F7520686176652074B4 +:1062A000776F202763686F696365272076616C7557 +:1062B00065732C0A3020286C6F29206F72203120E2 +:1062C000286869292E0A006D6963726F3A626974E1 +:1062D0002C20726561645F6469676974616C282948 +:1062E0002076616C75652066726F6D20746865201C +:1062F00070696E2061732065697468657220302052 +:10630000286C6F29206F72203120286869292E0A95 +:10631000006D6963726F3A6269742C2077726974D8 +:10632000655F616E616C6F672876616C75652920A9 +:10633000746F207468652070696E2E20596F752007 +:1063400063616E2075736520616E792076616C756E +:1063500065206265747765656E0A3020616E642021 +:10636000313032332E0A006D6963726F3A6269749C +:106370002C20726561645F616E616C6F67282920F3 +:1063800076616C75652066726F6D2074686520702B +:10639000696E2E20576F772C20616E616C6F6720BD +:1063A000686173206C6F7473206F662076616C7502 +:1063B00065730A2830202D203635353335292E20B7 +:1063C0004469676974616C20686173206F6E6C79D1 +:1063D000203020616E6420312E0A004966207069E9 +:1063E0006E2069735F746F75636865642829206F18 +:1063F0006E206D6963726F3A6269742C20726574E5 +:1064000075726E20547275652E204966206E6F7409 +:1064100068696E6720697320746F756368696E6759 +:10642000207468652070696E2C0A72657475726ECE +:106430002046616C73652E0A00436F6D6D756E6941 +:10644000636174652077697468206F6E65206F7270 +:10645000206D6F7265206E616D656420646576697C +:1064600063657320636F6E6E656374656420746F1B +:10647000206D6963726F3A6269742E2045616368AA +:10648000206E616D65640A64657669636520686184 +:106490007320616E202761646472657373272C20FA +:1064A000636F6D6D756E6963617465732075736973 +:1064B0006E67204932432C20616E6420636F6E6EDC +:1064C0006563747320746F2074686520492F4F20B2 +:1064D00070696E732E0A00557365207265616428B9 +:1064E000616464726573732C206E2920746F20724E +:1064F00065616420276E2720627974657320667257 +:106500006F6D2074686520646576696365207769BE +:106510007468207468697320616464726573732E93 +:106520000A00557365207772697465286164647226 +:106530006573732C206275666665722920746F20FE +:10654000777269746520746F20746865202762759E +:106550006666657227206F662074686520646576BC +:1065600069636520617420746869732027616464BD +:1065700072657373272E0A0043726561746520612A +:106580006E6420757365206275696C742D696E2068 +:10659000494D4147455320746F2073686F77206FD2 +:1065A0006E2074686520646973706C61792E205563 +:1065B00073653A0A496D616765280A2020273039DA +:1065C0003039303A270A20202739393939393A27E2 +:1065D0000A20202739393939393A270A202027302B +:1065E000393939303A270A20202730303930303ACB +:1065F00027290A2E2E2E746F206D616B6520612075 +:106600006E65772035783520686561727420696D14 +:106610006167652E204E756D6265727320676F200D +:1066200066726F6D203020286F66662920746F2097 +:10663000392028627269676874657374292E204E48 +:106640006F74650A74686520636F6C6F6E20273AFB +:106650002720746F207365742074686520656E64EC +:10666000206F66206120726F772E0A005265747564 +:10667000726E20746865207769647468206F662084 +:1066800074686520696D61676520696E207069783E +:10669000656C732E0A0052657475726E207468659D +:1066A00020686569676874206F6620746865206972 +:1066B0006D61676520696E20706978656C732E0A5C +:1066C00000557365206765745F706978656C28781C +:1066D0002C20792920746F2072657475726E207475 +:1066E000686520696D6167652773206272696768F4 +:1066F000746E657373206174204C45442070697812 +:10670000656C2028782C79292E0A42726967687492 +:106710006E6573732063616E2062652066726F6DB3 +:10672000203020284C4544206973206F666629205C +:10673000746F203920286D6178696D756D204C4526 +:1067400044206272696768746E657373292E0A004B +:10675000557365207365745F706978656C28782C53 +:1067600020792C20622920746F207365742074684E +:1067700065204C454420706978656C2028782C7918 +:106780002920696E2074686520696D6167652074D1 +:106790006F206272696768746E6573730A27622777 +:1067A0002077686963682063616E20626520736585 +:1067B00074206265747765656E203020286F666688 +:1067C0002920746F2039202866756C6C20627269EC +:1067D0006768746E657373292E0A0055736520739C +:1067E000686966745F6C65667428692920746F2017 +:1067F0006D616B65206120636F7079206F66207416 +:10680000686520696D61676520627574206D6F76BB +:1068100065642027692720706978656C7320746F20 +:1068200020746865206C6566742E0A0055736520B7 +:1068300073686966745F726967687428692920746F +:106840006F206D616B65206120636F7079206F66CA +:106850002074686520696D61676520627574206DBC +:106860006F7665642027692720706978656C7320CE +:10687000746F0A7468652072696768742E0A00551F +:1068800073652073686966745F7570286929207460 +:106890006F206D616B65206120636F7079206F667A +:1068A0002074686520696D61676520627574206D6C +:1068B0006F7665642027692720706978656C73207E +:1068C00075702E0A005573652073686966745F647D +:1068D0006F776E28692920746F206D616B65206168 +:1068E00020636F7079206F662074686520696D6120 +:1068F000676520627574206D6F766564202769274F +:1069000020706978656C7320646F776E2E0A00556D +:10691000736520636F7079282920746F206D616B17 +:10692000652061206E657720657861637420636FF0 +:106930007079206F662074686520696D6167652EC7 +:106940000A005573652063726F702878312C2079A6 +:10695000312C2078322C2079322920746F206D61FF +:106960006B652061206375742D6F757420636F7083 +:1069700079206F662074686520696D61676520778E +:106980006865726520636F6F7264696E6174650A11 +:106990002878312C79312920697320746865207436 +:1069A0006F70206C65667420636F726E6572206F05 +:1069B0006620746865206375742D6F75742061722C +:1069C000656120616E6420636F6F7264696E6174CB +:1069D00065202878322C7932292069732074686503 +:1069E0000A626F74746F6D20726967687420636FD8 +:1069F000726E65722E0A0055736520696E76657237 +:106A000074282920746F206D616B652061206E658C +:106A100067617469766520636F7079206F66207492 +:106A2000686520696D6167652E205768657265200D +:106A30006120706978656C20776173206272696784 +:106A40006874206F720A6F6E20696E20746865200A +:106A50006F726967696E616C2C206974206973209C +:106A600064696D206F72206F666620696E2074689D +:106A700065206E6567617469766520636F70792E35 +:106A80000A00436F6D6D756E696361746520776987 +:106A9000746820612073657269616C206465766931 +:106AA000636520636F6E6E656374656420746F2028 +:106AB0006D6963726F3A626974277320492F4F20A2 +:106AC00070696E732E0A0055736520696E697428AB +:106AD0002920746F2073657420757020636F6D6D4D +:106AE000756E69636174696F6E2E205573652070D1 +:106AF000696E732030202854582920616E6420313B +:106B000020285258292077697468206120626175B5 +:106B1000640A72617465206F6620393630302E0A3F +:106B20004F76657272696465207468652064656675 +:106B300061756C747320666F722027626175647270 +:106B4000617465272C202770617269747927206130 +:106B50006E64202770696E73272E0A0049662074C0 +:106B6000686572652061726520696E636F6D696E1C +:106B7000672063686172616374657273207761690D +:106B800074696E6720746F20626520726561642C81 +:106B900020616E7928292077696C6C207265747584 +:106BA000726E20547275652E0A4F7468657277692B +:106BB00073652C2072657475726E732046616C73F8 +:106BC000652E0A005573652072656164282920745A +:106BD0006F207265616420636861726163746572BD +:106BE000732E0A5573652072656164286E292074BE +:106BF0006F20726561642C206174206D6F73742C3A +:106C000020276E27206279746573206F6620646187 +:106C100074612E0A005573652072656164616C6C45 +:106C2000282920746F2072656164206173206D755E +:106C30006368206461746120617320706F7373698D +:106C4000626C652E0A0055736520726561646C691B +:106C50006E65282920746F20726561642061206C44 +:106C6000696E65207468617420656E64732077694D +:106C700074682061206E65776C696E652063686159 +:106C80007261637465722E0A0055736520726561C6 +:106C900064696E746F286275662920746F2072654E +:106CA000616420627974657320696E746F20746802 +:106CB00065206275666665722027627566272E0AF2 +:106CC0005573652072656164696E746F28627566BC +:106CD000662C206E2920746F20726561642C2061FF +:106CE00074206D6F73742C20276E27206E756D6273 +:106CF0006572206F6620627974657320696E746FA7 +:106D00002027627566272E0A005573652077726901 +:106D10007465286275662920746F207772697465BE +:106D20002074686520627974657320696E206275CD +:106D30006666657220276275662720746F20746806 +:106D40006520636F6E6E6563746564206465766943 +:106D500063652E0A00436F6D6D756E6963617465BE +:106D6000207573696E6720612073657269616C209C +:106D70007065726970686572616C20696E746572A5 +:106D800066616365202853504929206465766963EC +:106D90006520636F6E6E656374656420746F0A6D41 +:106DA0006963726F3A626974277320492F4F2070AC +:106DB000696E732E0A0055736520696E69742829FF +:106DC00020746F2073657420757020636F6D6D750E +:106DD0006E69636174696F6E2E204F766572726999 +:106DE0006465207468652064656661756C747320E1 +:106DF000666F722062617564726174652C206D6FBC +:106E000064652C0A53434C4B2C204D4F5349206151 +:106E10006E64204D49534F2E20546865206465668A +:106E200061756C7420636F6E6E656374696F6E73E9 +:106E3000206172652070696E313320666F72205355 +:106E4000434C4B2C2070696E313520666F720A4DB1 +:106E50004F534920616E642070696E313420666F33 +:106E600072204D49534F2E0A005573652077726981 +:106E70007465286275662920746F2077726974655D +:106E800020627974657320696E206275666665722A +:106E900020276275662720746F2074686520636FF1 +:106EA0006E6E6563746564206465766963652E0A39 +:106EB000005573652072656164286E2920746F2007 +:106EC0007265616420276E27206279746573206F74 +:106ED0006620646174612E0A0055736520777269BB +:106EE00074655F72656164696E746F286F75742C68 +:106EF00020696E2920746F20777269746520746828 +:106F00006520276F75742720627566666572207428 +:106F10006F2074686520636F6E6E656374656420AE +:106F20006465766963650A616E64207265616420D8 +:106F3000616E7920726573706F6E736520696E740F +:106F40006F207468652027696E2720627566666504 +:106F5000722E20546865206C656E677468206F66B9 +:106F60002074686520627566666572732073686F49 +:106F7000756C640A6265207468652073616D652EA6 +:106F80002054686520627566666572732063616E61 +:106F9000206265207468652073616D65206F626A88 +:106FA0006563742E0A00506C756720696E2061203D +:106FB000737065616B657220776974682063726FA6 +:106FC000636F64696C6520636C69707320616E64C3 +:106FD000206D616B65206D6963726F3A6269742020 +:106FE000676F20626C65657020616E6420626C6FF3 +:106FF0006F702E0A00557365207365745F74656D3C +:10700000706F286E756D6265722C2062706D29201C +:10701000746F206D616B6520612062656174206C06 +:10702000617374206120276E756D62657227206F11 +:1070300066207469636B73206C6F6E6720616E6489 +:107040000A706C61796564206174202762706D2715 +:1070500020626561747320706572206D696E75744D +:10706000652E0A005573652070697463682866721E +:1070700065712C206C656E6774682920746F206DB3 +:10708000616B65206D6963726F3A62697420706C20 +:1070900061792061206E6F746520617420276672AB +:1070A000657127206672657175656E637920666FFC +:1070B000720A276C656E67746827206D696C6C694D +:1070C0007365636F6E64732E20452E672E20706982 +:1070D000746368283434302C2031303030292077E4 +:1070E000696C6C20706C617920636F6E636572747B +:1070F0002027412720666F722031207365636F6EF1 +:10710000642E0A0055736520706C6179286D757363 +:1071100069632920746F206D616B65206D696372EE +:107120006F3A62697420706C617920276D7573699C +:107130006327206C697374206F66206E6F746573AB +:107140002E20547279206F7574207468650A6275F8 +:10715000696C7420696E206D7573696320746F208B +:1071600073656520686F7720697420776F726B7321 +:107170002E20452E672E206D757369632E706C610D +:1071800079286D757369632E50554E43484C494EAE +:1071900045292E0A00557365206765745F74656D17 +:1071A000706F282920746F2072657475726E207458 +:1071B0006865206E756D626572206F662074696304 +:1071C0006B7320696E2061206265617420616E645A +:1071D000206E756D626572206F66206265617473E2 +:1071E0000A706572206D696E7574652E0A0055739C +:1071F0006520746F2073746F70282920746865206F +:107200006D75736963207468617420697320706C94 +:107210006179696E672E0A004966207468696E6735 +:107220007320676F2077726F6E672C2072657365AD +:1072300074282920746865206D7573696320746FE4 +:10724000206974732064656661756C74207365745D +:1072500074696E67732E0A005365653A206874740A +:10726000703A2F2F786B63642E636F6D2F33353335 +:107270002F0A00546865205A656E206F6620507989 +:1072800074686F6E20646566696E657320776861E7 +:107290007420697420697320746F206265205079AE +:1072A00074686F6E69632E20497420776F756C6403 +:1072B0006E277420666974206F6E20746869730A83 +:1072C00064657669636520736F207765277665202E +:1072D0007772697474656E2061205A656E206F66DE +:1072E000204D6963726F507974686F6E20696E7398 +:1072F000746561642E0A0055736520617574686F4A +:107300007273282920746F2072657665616C207411 +:107310006865206E616D6573206F662074686520F6 +:1073200070656F706C652077686F2063726561743B +:107330006564207468697320736F66747761726521 +:107340002E0A00416C6C20796F75206E6565642E85 +:1073500020557365206C6F76652E62616461626F83 +:107360006F6D282920746F207265706561742074B8 +:107370006865206566666563742E0A0048656172FB +:10738000206D7920736F756C20737065616B3A0A9C +:10739000546865207665727920696E7374616E74C5 +:1073A000207468617420492073617720796F752C8F +:1073B000206469640A4D7920686561727420666C86 +:1073C0007920746F20796F757220736572766963A6 +:1073D000652E0A004552524F523A20737461636B16 +:1073E0002073697A65206E6F74206261636B20740C +:1073F0006F207A65726F3B20676F742025640A00E6 +:1074000047433A20746F74616C3A2025752C2075BF +:107410007365643A2025752C20667265653A2025CF +:10742000750A00204E6F2E206F6620312D626C6F22 +:10743000636B733A2025752C20322D626C6F636B61 +:10744000733A2025752C206D617820626C6B207357 +:107450007A3A2025750A004743206D656D6F727971 +:10746000206C61796F75743B2066726F6D2025709A +:107470003A000A20202020202020282575206C6931 +:107480006E657320616C6C206672656529000A2543 +:107490003035783A2000726177205245504C3B20BD +:1074A0004354524C2D4220746F20657869740D0A44 +:1074B00000044D656D6F72794572726F720A040037 +:1074C0004D6963726F507974686F6E2076312E3714 +:1074D0002D392D6762653032306562206F6E203243 +:1074E0003031362D30342D31383B206D6963726F69 +:1074F0003A6269742077697468206E524635313873 +:1075000032320D0A0054797065202268656C70284B +:10751000292220666F72206D6F726520696E666F1A +:10752000726D6174696F6E2E0D0A003E3E3E200042 +:107530000D0A7061737465206D6F64653B20437440 +:10754000726C2D4320746F2063616E63656C2C2018 +:107550004374726C2D4420746F2066696E69736881 +:107560000D0A3D3D3D20002E2E2E2000636F756CD0 +:1075700064206E6F74206F70656E2066696C652084 +:107580002725732720666F722072656164696E67B4 +:107590000A0038846B19C66318867398C6B11CCA72 +:1075A000318CC73188C23098463118C6350CCA3183 +:1075B0000CC62110246912C23114C471084A224930 +:1075C000AB6AA8AC495132D55288936C94221554B9 +:1075D000D22596D450A5462108856B18C46310CED9 +:1075E0006B188C71198C63350CC63399CC6CB54E05 +:1075F000A29946212882952EE3309CC5309CA2B1E9 +:107600009C67318866592C5318846750CAE30AACCA +:10761000AB30AC62308C63109462B18C82289633AC +:1076200098D6B54C6229A54AB59CC63114D6389C6B +:107630004BB4866518AE671CA6631996231984138C +:1076400008A652ACCA22896EAB198C6234C4621986 +:10765000866318C42358D6A35042544AAD4A251114 +:107660006B64894A63398A23312AEAA2A944C51284 +:10767000CD42348C62188C63114866319D44331DB1 +:1076800046319CC6B10CCD3288C47318867308D6B7 +:1076900063580781E0F03C0787903C7C0FC7C0C06F +:1076A000F07C1E078080001C7870F1C71FC00CFEA4 +:1076B0001C1F1F0E0A7AC071F2838F030F0F0C007C +:1076C00079F861E0430F83E718F9C113DAE9638FB2 +:1076D0000F838387C31F3C70F0E1E1E387B8710E2D +:1076E00020E38D48781C938730E1C1C1E478218381 +:1076F00083C3870639E5C387070E1C1C70F4719C91 +:10770000603632C31E3CF38F0E3C70E3C78F0F0F01 +:107710000E3C78F0E38706F0E307C199870F1878ED +:107720007070FCF310B18C8C317C70E1863C646C21 +:10773000B0E1E30F238F0F1E3E383C387B8F070EDE +:107740003CF4171E3C78F29E7249E32536385839CE +:10775000E2DE3C7878E1C761E1E1B0F0F0C3C70E4A +:1077600038C0F0CE73731834B0E1C78E1C3CF838C3 +:10777000F0E1C18B868F1C7870F078ACB18F393115 +:10778000DB3861C30E0E387873171E391E3864E17A +:10779000F1C14E0F40A202C58F81A1FC120864E026 +:1077A0003C22E045078E0C3290F01F2049E0F80C97 +:1077B00060F0171A41AAA4D08D12821E1E03F83E53 +:1077C000030C73807044260324E13E044E041CC164 +:1077D00009CC9E902107904364C00FC6909CC15B6A +:1077E00003E21D81E05E1D0384B82C0F80B183E0AD +:1077F00030411E43898350FC242E1383F17C4C2C92 +:10780000C90D83B0B582E4E8069C07A0991D073E28 +:10781000828F70307440CA10E4E80F92143F06F86B +:10782000848843810A343941C6E31C4703B0B81346 +:107830000AC264F818F960B3C0652060A68CC381E1 +:107840002030261E1C38D301B02640F40BC3421F43 +:107850008532266040C9CB01EC112840FA0434E09F +:10786000704C8C1D07690316C80423E8C69A0B1ACE +:1078700003E0760605CF1EBC5831716600F83F0460 +:10788000FC0C74278A8071C23A2606C01F050F9827 +:1078900040AE017FC007FF000EFE0003DF8003EF54 +:1078A000801BF1C200E7E018FCE021FC803CFC40BA +:1078B0000E7E003F3E000FFE001FFF003EF007FC63 +:1078C000007E103FFF003F380E7C01870CFCC70094 +:1078D0003E040F3E1F0F0F1F0F028387CF03870F3A +:1078E0003FC0079E603FC003FE003FE077E1C0FE5F +:1078F000E0C3E001DFF80307007E70007C3818FE6B +:107900000C1E781C7C3E0E1F1E1E3E007F8307DB74 +:10791000878307C7071071FF003FE201E0C1C3E1A1 +:10792000007FC005F020F8F070FE7879F8023F0C77 +:107930008F030F9FE0C1C78703C3C3B0E1E1C1E379 +:10794000E071F000FC707C0C3E380E1C70C3C70365 +:1079500081C1C7E7000FC7871909EFC433E0C1FC35 +:10796000F870F078F8F061C7001FF8017CF8F07843 +:10797000703C7CCE0E2183CF08078F08C1878F8093 +:10798000C7E30007F8E0EF0039F7800EF8E1E3F80D +:10799000219FC0FF03F807C01FF8C404FCC4C1BC8A +:1079A00087F00FC07F05E025ECC03E8447F08E03D2 +:1079B000F803FBC019F8079C0C17F807E01FA1FC9F +:1079C0000FFC01F03F00FE03F01F00FD00FF880DDB +:1079D000F901FF007007C03E42F30DC47F80FC0731 +:1079E000F05EC03F00783F81FF01F801C3E80CE47E +:1079F000648FE40FF007F0C21F007FC06F807E032A +:107A0000F807F03FC0780F8207FE227770027603F6 +:107A1000FE00FE67007CC7F18EC63BE03F84F31991 +:107A2000D80399FC09B80FF8009D2461F90D00FDF9 +:107A300003F01F903F01F81FD00FF83701F807F04F +:107A40000FC03F00FE03F80FC03F00FA03F00F80A5 +:107A5000FF01B807F001FC01BC80131E007FE1406C +:107A60007FA07FB0003FC01FC0380FF01F80FF0114 +:107A7000FC03F17E01FE01F0FF007FC01D07F00F47 +:107A8000C07E06E007E00FF806C1FE01FC03E00F30 +:107A900000FC00131313130A0E12181A16141014F4 +:107AA0000E120E1212100C0E0A120E0A080606060C +:107AB0000611060606060E10090A080A060606053D +:107AC0000600121A141A120C060606060606060608 +:107AD00006060606060606060606060A0A0606063E +:107AE0002C13000000000000000000000000000057 +:107AF000000000000101020203030404050506065C +:107B00000707000102030405060708090A0B0C0D0C +:107B10000E0F000103040607090A0C0D0F101213C3 +:107B2000151600020406080A0C0E10121416181A74 +:107B30001C1E000205070A0C0F111416191B1E202B +:107B40002325000306090C0F1215181B1E212427DC +:107B50002A2D0003070A0E1115181C1F23262A2D93 +:107B6000313400FCF8F4F0ECE8E4E0DCD8D4D0CC1C +:107B7000C8C400FCF9F5F2EEEBE7E4E0DDD9D6D2BB +:107B8000CFCB00FDFAF7F4F1EEEBE8E5E2DFDCD96C +:107B9000D6D300FDFBF8F6F3F1EEECE9E7E4E2DF23 +:107BA000DDDA00FEFCFAF8F6F4F2F0EEECEAE8E6D4 +:107BB000E4E200FEFDFBFAF8F7F5F4F2F1EFEEEC8B +:107BC000EBE900FFFEFDFCFBFAF9F8F7F6F5F4F33C +:107BD000F2F100FFFFFEFEFDFDFCFCFBFBFAFAF9F3 +:107BE000F9F8005B5B5B5B6E5D5B58595758525907 +:107BF0005D3E52583E6E505D5A3C6E5A6E517965EC +:107C0000795B636A51795D525D674C5D6565796545 +:107C100079005A5858585852515151797979706EA3 +:107C20006E5E5E5E5151517979796565705E5E5E1A +:107C30000801000000000008070808010100010019 +:107C40000705010006010007000501000800000308 +:107C50000000000000000000000100000000000122 +:107C60000E010901000100000000000000000000FA +:107C700000000000000000000000000700000500F8 +:107C8000131000000000005449433F282C1F252DED +:107C90004931241E33251D4518321E18532E3656E1 +:107CA00000000000000000000000000000000000D4 +:107CB000000048271F2B1E2200001F1F1F1F02024B +:107CC000020202020202020505020A020805050B71 +:107CD0000A090808A00808171F121212121E1E1403 +:107CE00014141417171A1A1D1D0202020202021A96 +:107CF0001D1B1A1D1B1A1D1B1A1D1B171D17171DD7 +:107D000017171D17171D1717170002020202040488 +:107D10000404040404040404040404030204040228 +:107D2000020202020101010101010101010101023E +:107D30000202010001000100050505050504040219 +:107D40000001020001020001020001020002020023 +:107D500001030002030002A0A05265616420657265 +:107D6000726F72005772697465206572726F72006B +:107D70004F75742D6F662D6275666665722072652B +:107D800061640000000000000A0B0D0E0D0C0C0BCE +:107D9000090B0B0C0C0C08080C080A08080A03094C +:107DA00006000000000000000003050304000000BE +:107DB000050A020E0D0C0D0C080001000001000068 +:107DC0000100000100000000000000000A00000A9D +:107DD0000000000000E0E6ECF3F900060C060001EC +:107DE00002020203030404050608090B0D0F00003C +:107DF0000000000000000000000000000000000083 +:107E0000000000000000000000000000000000F181 +:107E1000E2D3BB7C95010203030072000200000064 +:107E20000000000000000000000000000000000052 +:107E300000001B000019000000000000000000907E +:107E40009090909090909090909090909090909032 +:107E50009090909090909090909090909090909022 +:107E60009090909090909090909090909090909012 +:107E70009090909090909090909090909090909002 +:107E800090909090909090909090909090909090F2 +:107E900090909090909090909090909090909090E2 +:107EA00090909090909090909090909090909090D2 +:107EB00090909090909090909090909090909070E2 +:107EC00070707070707070707070707070707070B2 +:107ED00070707070707070707070707070707070A2 +:107EE0007070707070707070707070707070707092 +:107EF0007070707070707070707070707070707082 +:107F00007070707070707070707070707070707071 +:107F10007070707070707070707070707070707061 +:107F20007070707070707070707070707070707051 +:107F300070707070707070707070707070707000B1 +:107F4000000000000D0D0E0F0F0F0F0F0C0D0C0F8A +:107F50000F0D0D0D0E0D0C0D0D0D0C09090000007F +:107F600000000000000B0B0B0B0000010B00020EC9 +:107F70000F0F0F0F0D0204000204000104000104A2 +:107F800000000000000000000C000000000F0F00C7 +:107F900002020202040404040404040404040404A9 +:107FA00004030304040303030303010203020103A4 +:107FB000030303010103030302020302030000059C +:107FC0000505050404020002020003020004020089 +:107FD00003020002020002030003030003B0A0003A +:107FE0000000000001010101010101010101010185 +:107FF0000101010101010101010101010100000074 +:10800000000000000000000000000000000000016F +:10801000010101010000000000000000000000005C +:108020000000000000000000000000000000000050 +:1080300000000000434343435448423E282C1E2482 +:108040002C4830241E32241C4418321E18522E365E +:10805000563643494F1A4249253342282F4F4F4243 +:108060004F6E0048261E2A1E221A1A1A4242426EDB +:108070006E6E5454541A1A1A4242426D566D54543C +:10808000547F7F181A17171700000000000A0E13FC +:10809000181B171510140E120E1212100D0F0B12C2 +:1080A0000E0B09060606000000000000000000009C +:1080B0000000000000000000131B151B120D000043 +:1080C0000000101010101010202020202020303030 +:1080D00030303030304040404040404050505050B0 +:1080E00050505050606060606060606060606060D0 +:1080F0007070707070707070707070707070707080 +:10810000707070707070707070707070707070607F +:1081100060606060606060606060605050505050AF +:10812000505050404040404040403030303030307F +:1081300030202020202020101010101010000000EF +:108140000000F0F0F0F0F0F0E0E0E0E0E0E0D0D0AF +:10815000D0D0D0D0D0C0C0C0C0C0C0C0B0B0B0B00F +:10816000B0B0B0B0A0A0A0A0A0A0A0A0A0A0A0A0CF +:1081700090909090909090909090909090909090FF +:10818000909090909090909090909090909090A0DF +:10819000A0A0A0A0A0A0A0A0A0A0A0B0B0B0B0B08F +:1081A000B0B0B0C0C0C0C0C0C0C0D0D0D0D0D0D09F +:1081B000D0E0E0E0E0E0E0F0F0F0F0F0F000006EA1 +:1081C000616D652027257127206973206E6F7420EB +:1081D000646566696E656400756E737570706F7244 +:1081E000746564207479706520666F722025713A19 +:1081F00020272573270027257327206F626A656370 +:1082000074206973206E6F742063616C6C61626CA2 +:108210006500617267756D656E74206861732077A3 +:10822000726F6E6720747970650074797065206F65 +:10823000626A656374202725712720686173206E48 +:108240006F206174747269627574652027257127C7 +:108250000027257327206F626A6563742068617345 +:10826000206E6F20617474726962757465202725B1 +:1082700071270027257327206F626A656374206960 +:1082800073206E6F74206974657261626C6500277B +:10829000257327206F626A656374206973206E6F8F +:1082A0007420616E206974657261746F7200756EFE +:1082B000737570706F727465642074797065732063 +:1082C000666F722025713A20272573272C202725D9 +:1082D0007327006E656564206D6F72652074686138 +:1082E0006E2025642076616C75657320746F20752F +:1082F0006E7061636B00746F6F206D616E792076B4 +:10830000616C75657320746F20756E7061636B208E +:108310002865787065637465642025642900657834 +:1083200063657074696F6E73206D75737420646516 +:10833000726976652066726F6D204261736545785B +:1083400063657074696F6E0063616E6E6F7420692F +:108350006D706F7274206E616D65202571006D65A2 +:108360006D6F727920616C6C6F636174696F6E20E0 +:108370006661696C65642C20686561702069732092 +:108380006C6F636B6564006D656D6F727920616CF5 +:108390006C6F636174696F6E206661696C65642CD3 +:1083A00020616C6C6F636174696E67202575206253 +:1083B00079746573003C6D6F64756C652027257159 +:1083C000273E006C696E6520257520002571200010 +:1083D0004D656D6F72794572726F723A206C657877 +:1083E000657220636F756C64206E6F7420616C6CB5 +:1083F0006F63617465206D656D6F7279006D616981 +:108400006E2E707900736F6674207265626F6F7480 +:108410000D0A0066726F7A656E0073657428290014 +:1084200066726F7A656E73657428002773657427AA +:10843000206F626A65637420726571756972656424 +:10844000002766726F7A656E7365742720686173A2 +:10845000206E6F2073756368206174747269627531 +:10846000746500706F702066726F6D20616E20659C +:108470006D707479207365740001000000000000C5 +:1084800000000000000000000000000000000000EC +:1084900000000000000000000000000000000000DC +:1084A00000000000000000000000000000000000CC +:1084B00000000000000000000000000100000000BB +:1084C000000204000004000004040800040000008E +:1084D000000000000000000000000001000800048F +:1084E0000002040000040000000008010101010175 +:1084F000010101010101010101010101010101016C +:10850000010101010101010101010101010101015B +:10851000010101010101010101010101010101014B +:10852000010101010101010101010101010101013B +:108530000101010204010104010104040801040114 +:108540000101010101010101010101010101010814 +:1085500001040102040101040101010108010000FC +:1085600000000002040000040000040408000400ED +:1085700000000000000000000000000000010008F2 +:10858000000400020400000400000000082C007237 +:10859000616E67652825642C202564002C202564E5 +:1085A00029006D61746820646F6D61696E20657269 +:1085B000726F720042434445464748494B4C3D3632 +:1085C0003E3758383F3957315032592F4E304F5A75 +:1085D0003A543B553351345235533C564D40412863 +:1085E000295B5D7B7D2C3A3B407E3C653D633C6571 +:1085F0003D3E653D633E653D2A653D632A653D2BF5 +:10860000653D2D653D653E26653D7C653D2F653D9F +:10861000632F653D25653D5E653D3D653D21453DDD +:1086200000756E69636F6465206E616D65206573AA +:10863000636170657300616E6400617300617373E0 +:1086400065727400627265616B00636F6E74696E4F +:1086500075650064656C00656C696600656C7365C2 +:10866000006578636570740066696E616C6C790092 +:10867000666F72006C616D626461006E6F7400728F +:10868000657475726E00747279007768696C650044 +:108690007969656C64005F5F64656275675F5F0040 +:1086A0007465787420746F6F206C6F6E672E006332 +:1086B0006F756C64206E6F742070617273652069D1 +:1086C0006E7075742E00476C6974636865733A2028 +:1086D00025640D0A0066756E6374696F6E206D699E +:1086E0007373696E67207265717569726564207055 +:1086F0006F736974696F6E616C20617267756D6507 +:108700006E74202325640066756E6374696F6E2035 +:108710006D697373696E67207265717569726564DE +:10872000206B6579776F726420617267756D656E15 +:108730007420272571270066756E6374696F6E203B +:108740006D697373696E67206B6579776F72642DDD +:108750006F6E6C7920617267756D656E7400736CF5 +:1087600069636528006F626A656374206E6F7420A8 +:10877000696E2073657175656E6365003C636C613D +:10878000737320272571273E003C2573206F626A92 +:108790006563742061742025703E003C73757065BC +:1087A000723A20005F5F696E69745F5F28292073E9 +:1087B000686F756C642072657475726E204E6F6E92 +:1087C000652C206E6F7420272573270063616E6E01 +:1087D0006F74206372656174652027257127206995 +:1087E0006E7374616E6365730074797065202725FC +:1087F0007127206973206E6F7420616E206163633E +:1088000065707461626C6520626173652074797053 +:1088100065006D756C7469706C6520626173657359 +:10882000206861766520696E7374616E6365206C83 +:1088300061792D6F757420636F6E666C6963740067 +:10884000747970652074616B65732031206F7220BC +:108850003320617267756D656E747300697373752B +:1088600062636C6173732829206172672032206D06 +:10887000757374206265206120636C617373206F6F +:10888000722061207475706C65206F6620636C6166 +:1088900073736573006973737562636C61737328B6 +:1088A00029206172672031206D7573742062652004 +:1088B0006120636C6173730063616E277420636F62 +:1088C0006E766572742027257327206F626A656350 +:1088D0007420746F2073747220696D706C696369A1 +:1088E000746C7900737562737472696E67206E6F51 +:1088F0007420666F756E64006A6F696E20657870AB +:10890000656374732061206C697374206F662073D3 +:1089100074722F6279746573206F626A6563747311 +:1089200020636F6E73697374656E74207769746801 +:108930002073656C66206F626A656374007374618E +:1089400072742F656E6420696E6469636573006577 +:108950006D70747920736570617261746F720077E5 +:10896000726F6E67206E756D626572206F66206132 +:108970007267756D656E74730073696E676C6520E0 +:10898000277D2720656E636F756E74657265642040 +:10899000696E20666F726D617420737472696E67A0 +:1089A0000062616420636F6E76657273696F6E201A +:1089B00073706563696669657200756E6D61746375 +:1089C00068656420277B2720696E20666F726D6161 +:1089D0007400657870656374656420273A272061A8 +:1089E0006674657220666F726D6174207370656362 +:1089F00069666965720063616E27742073776974B4 +:108A000063682066726F6D206175746F6D61746943 +:108A100063206669656C64206E756D626572696E4F +:108A20006720746F206D616E75616C206669656C7E +:108A3000642073706563696669636174696F6E0051 +:108A40007475706C6520696E646578206F7574202C +:108A50006F662072616E6765006174747269627519 +:108A6000746573206E6F7420737570706F727465A7 +:108A700064207965740063616E277420737769746C +:108A800063682066726F6D206D616E75616C206623 +:108A900069656C6420737065636966696361746994 +:108AA0006F6E20746F206175746F6D6174696320DF +:108AB0006669656C64206E756D626572696E6700CB +:108AC0003C3E3D5E006263646545664667476E6F87 +:108AD0007378582500696E76616C696420666F72E0 +:108AE0006D6174207370656369666965720073698E +:108AF000676E206E6F7420616C6C6F77656420699F +:108B00006E20737472696E6720666F726D61742077 +:108B1000737065636966696572007369676E206E5C +:108B20006F7420616C6C6F7765642077697468205E +:108B3000696E746567657220666F726D617420730B +:108B400070656369666965722027632700756E6BBF +:108B50006E6F776E20666F726D617420636F6465EF +:108B6000202725632720666F72206F626A65637411 +:108B7000206F662074797065202725732700756E35 +:108B80006B6E6F776E20666F726D617420636F64B9 +:108B900065202725632720666F72206F626A6563F0 +:108BA00074206F6620747970652027666C6F61741D +:108BB0002700273D2720616C69676E6D656E742004 +:108BC0006E6F7420616C6C6F77656420696E2073C2 +:108BD0007472696E6720666F726D61742073706560 +:108BE00063696669657200756E6B6E6F776E20667D +:108BF0006F726D617420636F646520272563272081 +:108C0000666F72206F626A656374206F6620747984 +:108C1000706520277374722700696E636F6D706CC6 +:108C200065746520666F726D617400696E636F6D47 +:108C3000706C65746520666F726D6174206B657908 +:108C4000006E6F7420656E6F75676820617267755E +:108C50006D656E747320666F7220666F726D6174DD +:108C600020737472696E67002525632072657175C3 +:108C70006972657320696E74206F72206368617217 +:108C800000696E74656765722072657175697265D9 +:108C90006400756E737570706F7274656420666FB2 +:108CA000726D6174206368617261637465722027FC +:108CB0002563272028307825782920617420696E63 +:108CC000646578202564006E6F7420616C6C20618F +:108CD0007267756D656E747320636F6E76657274FE +:108CE000656420647572696E6720737472696E675B +:108CF00020666F726D617474696E67007273706C58 +:108D00006974284E6F6E652C6E290020090A0D0BC0 +:108D10000C0073747265616D206F706572617469A7 +:108D20006F6E206E6F7420737570706F72746564EF +:108D3000004F7574206F66206D656D6F7279006FDE +:108D40007574206F66206D656D6F7279000000018B +:108D500001020202020303030303030303040404E6 +:108D600004040404040404040404040404057D7ECF +:108D70007E7F8081828282848484848485878788C0 +:108D800088898A8B8B8C8C8C45727220333636386E +:108D90003300457272203336383934000000000049 +:108DA00000000000000000000000000000000000C3 +:108DB00000000000000000000000000000020202AD +:108DC0000202028200000202020202020303030303 +:108DD00003030303030302020202020202C0A8B05B +:108DE000ACC0A0B8A0C0BCA0ACA8ACC0A0A0ACB4A3 +:108DF000A4C0A8A8B0C0BC000000020020209B2096 +:108E0000C0B920CDA34C8A8E0095F7A239C5067E45 +:108E1000C726374E91F155A1FE24452DA736532E76 +:108E200047DA284129BD2821293DAE282229203DA5 +:108E30002D4148354E4B574F5754AD2822293D4BB5 +:108E4000574F573454AD2823293D204E4148344DC7 +:108E50004245D22824293D20444141344C45D22862 +:108E600025293D20504552534548344ED4282629C3 +:108E70003D2041454EC4282729BD282A293D2041AF +:108E8000453453544552494853CB282B293D205053 +:108E90004C414834D3282C293DAC20282D29203D95 +:108EA000AD282D29BD282E293D20504F594ED428BC +:108EB0002F293D20534C41453453C82830293D20AB +:108EC0005A495934524FD72028315354293D4645E9 +:108ED000523453D4202831305448293D5445483425 +:108EE0004E54C82831293D2057414834CE202832DD +:108EF0004E44293D534548344B554EC42832293DF4 +:108F000020545557B42028335244293D54484552E3 +:108F100034C42833293D205448524959B4283429AF +:108F20003D20464F4834D22028355448293D4649F3 +:108F300048344654C82835293D2046415934D62066 +:108F400028363429203D534948344B53544959203D +:108F5000464F48D22836293D20534948344BD32820 +:108F600037293D20534548345655CE20283854489B +:108F7000293D45593454C82838293D20455934D411 +:108F80002839293D204E415934CE283A293DAE2872 +:108F90003B293DAE283C293D204C454834532044D4 +:108FA000484145CE283D293D204959344B57554C21 +:108FB000DA283E293D204752455934544552204431 +:108FC000484145CE283F293DBF2840293D20414505 +:108FD00036D4285E293D204B414534524958D45D52 +:108FE000C15DC12028412E293D454834592EA02875 +:108FF0004129203D41C8202841524529203D414179 +:10900000D220284152294F3D4158D228415229238C +:109010003D454834D2205E28415329233D455934EB +:10902000D328412957413D41D8284157293D414F37 +:10903000B5203A28414E59293D4548344E49D92852 +:1090400041295E2B233D4559B5233A28414C4C59C3 +:10905000293D554C49D92028414C29233D55CC2840 +:10906000414741494E293D415847454834CE233A6E +:1090700028414729453D4948CA2841295E253D45A3 +:10908000D92841295E2B3A233D41C5203A28412960 +:109090005E2B203D4559B42028415252293D41586C +:1090A000D228415252293D414534D2205E284152B6 +:1090B00029203D414135D2284152293D414135D2F7 +:1090C00028414952293D454834D2284149293D4546 +:1090D00059B4284159293D4559B5284155293D41A3 +:1090E0004FB4233A28414C29203D55CC233A2841FE +:1090F0004C5329203D554CDA28414C4B293D414FDA +:1091000034CB28414C295E3D414FCC203A28414286 +:109110004C45293D4559344255CC2841424C4529BE +:109120003D41584255CC284129564F3D4559B42818 +:10913000414E47292B3D4559344ECA28415441528E +:1091400049293D4148544141345249D92841295483 +:109150004F4D3D41C52841295454493D41C5202822 +:10916000415429203D4145D420284129543D41C83E +:109170002841293D41C55DC220284229203D424960 +:1091800059B420284245295E233D4249C82842451A +:10919000494E47293D4249593449484ED820284232 +:1091A0004F544829203D424F573454C82028425537 +:1091B0005329233D42494834DA28425245414B293C +:1091C0003D4252455935CB284255494C293D4249EB +:1091D0004834CC2842293DC25DC320284329203D84 +:1091E000534959B420284348295E3DCB5E45284366 +:1091F00048293DCB284348412952233D4B4548B59A +:10920000284348293D43C8205328434929233D5337 +:109210004159B428434929413D53C8284349294F5E +:109220003D53C828434929454E3D53C82843495416 +:1092300059293D5349485449D92843292B3DD3281E +:10924000434B293DCB28434F4D4D4F444F52452969 +:109250003D4B4141344D4148444F48D228434F4D46 +:10926000293D4B4148CD2843554954293D4B494858 +:10927000D42843524541293D4B52495945D92843A9 +:10928000293DCB5DC420284429203D444959B420C0 +:109290002844522E29203D444141344B5445D22389 +:1092A0003A2844454429203D444948C42E45284491 +:1092B00029203DC4233A5E45284429203DD4202856 +:1092C0004445295E233D4449C82028444F29203D78 +:1092D0004455D72028444F4553293D444148DA2876 +:1092E000444F4E4529203D44414835CE28444F49FE +:1092F0004E47293D4455573449484ED82028444FBD +:1093000057293D4441D72328445529413D4A55D743 +:1093100023284455295E233D4A41D82844293DC489 +:109320005DC520284529203D49594959B4233A288B +:10933000452920BD273A5E28452920BD203A2845E9 +:1093400029203D49D92328454429203DC4233A28D2 +:1093500045294420BD2845562945523D454834D627 +:109360002845295E253D4959B42845524929233DC0 +:109370004959345249D928455249293D4548345222 +:1093800049C8233A28455229233D45D228455252FF +:109390004F52293D454834524F48D22845524153F7 +:1093A00045293D494852455935D328455229233D41 +:1093B0004548D2284552293D45D220284556454E9C +:1093C000293D4959564548CE233A28452957BD409D +:1093D000284557293D55D7284557293D5955D72860 +:1093E00045294F3D49D9233A2628455329203D494F +:1093F00048DA233A2845295320BD233A28454C59B9 +:1094000029203D4C49D9233A28454D454E54293D04 +:109410004D45484ED4284546554C293D465548CCE7 +:10942000284545293D4959B4284541524E293D45D5 +:109430005235CE2028454152295E3D4552B528453A +:109440004144293D4548C4233A28454129203D4906 +:109450005941D82845412953553D4548B5284541EE +:10946000293D4959B52845494748293D4559B4281A +:109470004549293D4959B42028455945293D415977 +:10948000B4284559293D49D9284555293D595557AD +:10949000B528455155414C293D4959344B5755CC78 +:1094A0002845293D45C85DC620284629203D454818 +:1094B00034C62846554C293D465548CC2846524985 +:1094C000454E44293D46524548354EC428464154F0 +:1094D000484552293D46414134444845D228462911 +:1094E00046BD2846293DC65DC720284729203D4A5C +:1094F0004959B428474956293D47494835D6202877 +:109500004729495E3DC728474529543D474548B549 +:1095100053552847474553293D474A454834D328A2 +:109520004747293DC72042232847293DC7284729C7 +:109530002B3DCA284752454154293D47524559348D +:10954000D428474F4E29453D47414F35CE23284724 +:109550004829BD2028474E293DCE2847293DC75DD3 +:10956000C820284829203D45593443C8202848416F +:1095700056293D2F48414536D62028484552452991 +:109580003D2F484959D22028484F5552293D41572F +:109590003545D228484F57293D2F4841D7284829DB +:1095A000233D2FC8284829BD5DC92028494E293DA3 +:1095B0004948CE20284929203D4159B4284929202D +:1095C0003D41D928494E29443D415935CE53454D59 +:1095D0002849293D49D920414E542849293D41D99E +:1095E00028494552293D495945D2233A52284945EF +:1095F0004429203D4959C42849454429203D415921 +:1096000035C42849454E293D49594548CE28494544 +:1096100029543D41593445C8284927293D4159B568 +:10962000203A2849295E253D4159B5203A28494527 +:1096300029203D4159B4284929253D49D928494582 +:10964000293D4959B4202849444541293D415944BF +:1096500049593541C82849295E2B3A233D49C82834 +:10966000495229233D4159D228495A29253D41597A +:10967000DA28495329253D4159DA495E2849295EAE +:10968000233D49C82B5E2849295E2B3D41D9233A09 +:109690005E2849295E2B3D49C82849295E2B3D415A +:1096A000D9284952293D45D228494748293D4159A1 +:1096B000B428494C44293D4159354CC420284947D8 +:1096C0004E293D494847CE2849474E29203D41591A +:1096D00034CE2849474E295E3D415934CE2849476A +:1096E0004E29253D415934CE284943524F293D4109 +:1096F00059344B524FC82849515545293D49593491 +:10970000CB2849293D49C85DCA20284A29203D4A1D +:109710004559B4284A293DCA5DCB20284B29203D14 +:109720004B4559B420284B294EBD284B293DCB5DD4 +:10973000CC20284C29203D454834CC284C4F294387 +:10974000233D4C4FD74C284C29BD233A5E284C2949 +:10975000253D55CC284C454144293D4C4959C42010 +:10976000284C41554748293D4C414534C6284C2991 +:109770003DCC5DCD20284D29203D454834CD2028C5 +:109780004D522E29203D4D494834535445D220286E +:109790004D532E293D4D494835DA20284D52532E40 +:1097A00029203D4D494834534958DA284D4F562910 +:1097B0003D4D555734D6284D414348494E293D4DDE +:1097C00041485348495935CE4D284D29BD284D298A +:1097D0003DCD5DCE20284E29203D454834CE45283C +:1097E0004E47292B3D4ECA284E4729523D4E58C759 +:1097F000284E4729233D4E58C7284E474C29253D22 +:109800004E584755CC284E47293D4ED8284E4B2917 +:109810003D4E58CB20284E4F5729203D4E4157B43E +:109820004E284E29BD284E4F4E29453D4E414834C5 +:10983000CE284E293DCE5DCF20284F29203D4F48D0 +:1098400034D7284F4629203D4148D620284F482963 +:10985000203D4F57B5284F524F554748293D455257 +:10986000344FD7233A284F5229203D45D2233A2856 +:109870004F525329203D4552DA284F52293D414F3E +:10988000D220284F4E45293D574148CE23284F4EE0 +:109890004529203D574148CE284F57293D4FD720D5 +:1098A000284F564552293D4F57355645D2505228DC +:1098B0004F29563D5557B4284F56293D414834D677 +:1098C000284F295E253D4F57B5284F295E454E3D0F +:1098D0004FD7284F295E49233D4F57B5284F4C2974 +:1098E000443D4F5734CC284F55474854293D414FAC +:1098F00035D4284F554748293D414835C620284F83 +:1099000055293D41D748284F552953233D4157B448 +:10991000284F5553293D4158D3284F5552293D4F83 +:1099200048D2284F554C44293D554835C4284F55F9 +:10993000295E4C3D4148B5284F5550293D55573576 +:10994000D0284F55293D41D7284F59293D4FD92877 +:109950004F494E47293D4F573449484ED8284F4923 +:10996000293D4F59B5284F4F52293D4F4835D228F0 +:109970004F4F4B293D554835CB46284F4F44293D45 +:10998000555735C44C284F4F44293D414835C44DA7 +:10999000284F4F44293D555735C4284F4F44293D42 +:1099A000554835C446284F4F54293D554835D4288D +:1099B0004F4F293D5557B5284F27293D4FC8284FB0 +:1099C00029453D4FD7284F29203D4FD7284F4129C2 +:1099D0003D4F57B420284F4E4C59293D4F57344ED8 +:1099E0004C49D920284F4E4345293D574148344ED4 +:1099F000D3284F4E2754293D4F57344ED443284F38 +:109A0000294E3D41C1284F294E473D41CF203A5E66 +:109A1000284F294E3D41C849284F4E293D55CE2358 +:109A20003A284F4E293D55CE235E284F4E293D55AD +:109A3000CE284F2953543D4FD7284F46295E3D41EC +:109A40004F34C6284F54484552293D414835444873 +:109A500045D252284F29423D5241C15E52284F29DA +:109A60003A233D4F57B5284F535329203D414F3599 +:109A7000D3233A5E284F4D293D4148CD284F293DFB +:109A800041C15DD020285029203D504959B428506B +:109A900048293DC62850454F504C293D504959351D +:109AA0005055CC28504F57293D504157B428505558 +:109AB0005429203D505548D428502950BD285029BC +:109AC00053BD2850294EBD2850524F462E293D5097 +:109AD000524F48464548345345D22850293DD05D21 +:109AE000D120285129203D4B595557B42851554173 +:109AF00052293D4B574F4835D2285155293D4BD718 +:109B00002851293DCB5DD220285229203D414135A5 +:109B1000D220285245295E233D5249D92852295244 +:109B2000BD2852293DD25DD320285329203D4548E8 +:109B300034D3285348293D53C8232853494F4E292D +:109B40003D5A4855CE28534F4D45293D534148CDA8 +:109B5000232853555229233D5A4845D2285355525C +:109B600029233D534845D22328535529233D5A489C +:109B700055D7232853535529233D534855D72328D8 +:109B8000534544293D5AC423285329233DDA2853F9 +:109B9000414944293D534548C45E2853494F4E2905 +:109BA0003D534855CE28532953BD2E285329203DD7 +:109BB000DA233A2E45285329203DDA233A5E23281A +:109BC0005329203DD355285329203DD3203A23281B +:109BD0005329203DDA2323285329203DDA20285316 +:109BE0004348293D53CB285329432BBD2328534DAC +:109BF000293D5A55CD2328534E29273D5A55CD2866 +:109C000053544C45293D5355CC2853293DD35DD45D +:109C100020285429203D544959B420285448452926 +:109C200020233D444849D9202854484529203D4413 +:109C30004841D828544F29203D5455D8202854480D +:109C40004154293D44484145D4202854484953298A +:109C5000203D44484948D3202854484559293D448B +:109C60004845D920285448455245293D444845484F +:109C7000D22854484552293D444845D228544845A5 +:109C80004952293D44484548D220285448414E294C +:109C9000203D44484145CE20285448454D29203D8B +:109CA00044484145CE28544845534529203D444821 +:109CB0004959DA20285448454E293D44484548CE64 +:109CC000285448524F554748293D5448525557B497 +:109CD0002854484F5345293D44484F48DA285448B2 +:109CE0004F55474829203D44484FD728544F4441B9 +:109CF00059293D5455584445D928544F4D4F295260 +:109D0000524F573D54554D4141B528544F29544168 +:109D10004C3D544F57B5202854485553293D44488D +:109D2000414834D3285448293D54C8233A2854453F +:109D300044293D544958C45328544929234E3D438E +:109D4000C8285449294F3D53C828544929413D53F7 +:109D5000C8285449454E293D534855CE285455529C +:109D600029233D434845D228545529413D43485570 +:109D7000D7202854574F293D5455D72628542945D4 +:109D80004E20BD2854293DD45DD520285529203D9D +:109D9000595557B42028554E29493D595557CE207D +:109DA00028554E293D4148CE202855504F4E293D3B +:109DB000415850414FCE4028555229233D554834F3 +:109DC000D228555229233D59554834D22855522975 +:109DD0003D45D22855295E203D41C82855295E5E63 +:109DE0003D4148B5285559293D4159B52047285589 +:109DF0002923BD4728552925BD47285529233DD767 +:109E0000234E2855293D5955D7402855293D55D72A +:109E10002855293D5955D75DD620285629203D562D +:109E20004959B42856494557293D56595557B528DB +:109E300056293DD65DD720285729203D4441483436 +:109E400042554C5955D7202857455245293D57452D +:109E5000D22857412953483D5741C12857412953DA +:109E6000543D5745D928574129533D5741C8285794 +:109E70004129543D5741C1285748455245293D572E +:109E8000484548D22857484154293D57484148D46D +:109E90002857484F4C293D2F484F57CC2857484FFB +:109EA000293D2F4855D7285748293D57C82857419D +:109EB0005229233D574548D228574152293D574101 +:109EC0004FD228574F52295E3D5745D22857522925 +:109ED0003DD228574F4D29413D575548CD28574F22 +:109EE0004D29453D574948CD2857454129523D57B1 +:109EF00045C82857414E54293D574141354ED4411C +:109F00004E5328574552293D45D22857293DD75D04 +:109F1000D820285829203D4548344BD2202858299C +:109F20003DDA2858293D4BD35DD920285929203DB9 +:109F3000574159B428594F554E47293D5941484E2C +:109F4000D82028594F5552293D594F48D2202859D9 +:109F50004F55293D5955D72028594553293D594535 +:109F600048D3202859293DD9462859293D41D9505F +:109F70005328594348293D4159CB233A5E28592952 +:109F80003D49D9233A5E285929493D49D9203A28E3 +:109F90005929203D41D9203A285929233D41D9202A +:109FA0003A2859295E2B3A233D49C8203A28592995 +:109FB0005E233D41D92859293D49C85DDA20285AF8 +:109FC00029203D5A4959B4285A293DDAEA74727554 +:109FD000650066616C736500286E756C6C290030D5 +:109FE00030303030303030303030303030303000A1 +:109FF0002020202020202020202020202020202061 +:10A00000001213141615170F0D0E1110696E6C69DE +:10A010006E6520617373656D626C6572206D75731A +:10A020007420626520612066756E6374696F6E00CE +:10A03000756E6B6E6F776E207479706500726574E3 +:10A0400075726E20616E6E6F746174696F6E206DD3 +:10A0500075737420626520616E206964656E746931 +:10A060006669657200657870656374696E67206102 +:10A070006E20617373656D626C657220696E7374B6 +:10A0800072756374696F6E00276C6162656C27205E +:10A090007265717569726573203120617267756DC3 +:10A0A000656E74006C6162656C20726564656669DA +:10A0B0006E65640027616C69676E27207265717533 +:10A0C00069726573203120617267756D656E740009 +:10A0D00027646174612720726571756972657320E8 +:10A0E0006174206C65617374203220617267756DD4 +:10A0F000656E7473002764617461272072657175E1 +:10A100006972657320696E74656765722061726734 +:10A11000756D656E7473002A78206D757374206296 +:10A12000652061737369676E6D656E74207461720A +:10A1300067657400696E7465726E616C20636F6D23 +:10A1400070696C6572206572726F72006D756C74E7 +:10A1500069706C65202A7820696E20617373696765 +:10A160006E6D656E740063616E2774206173736930 +:10A17000676E20746F206C69746572616C00636136 +:10A180006E27742061737369676E20746F20657821 +:10A190007072657373696F6E00696C6C6567616C72 +:10A1A0002065787072657373696F6E20666F7220B8 +:10A1B0006175676D656E7465642061737369676E40 +:10A1C0006D656E7400737570657228292063616C0B +:10A1D0006C2063616E6E6F742066696E64207365B7 +:10A1E0006C660063616E27742068617665206D750A +:10A1F0006C7469706C65202A780063616E27742026 +:10A2000068617665206D756C7469706C65202A2AAA +:10A2100078004C4853206F66206B6579776F7264C5 +:10A2200020617267206D75737420626520616E20F5 +:10A230006964006E6F6E2D6B6579776F7264206153 +:10A240007267206166746572206B6579776F7264DE +:10A250002061726700696E76616C6964206D696364 +:10A26000726F707974686F6E206465636F72617469 +:10A270006F72006E6F6E2D64656661756C7420611F +:10A280007267756D656E7420666F6C6C6F77732086 +:10A2900064656661756C7420617267756D656E7456 +:10A2A0000064656661756C742027657863657074F9 +:10A2B0003A27206D757374206265206C6173740099 +:10A2C00063616E2774206465636C617265206E6FD4 +:10A2D0006E6C6F63616C20696E206F75746572209F +:10A2E000636F6465006964656E7469666965722090 +:10A2F0007265646566696E6564206173206E6F6E59 +:10A300006C6F63616C006E6F2062696E64696E676A +:10A3100020666F72206E6F6E6C6F63616C20666F6B +:10A32000756E64006964656E746966696572207231 +:10A3300065646566696E656420617320676C6F6231 +:10A34000616C0027636F6E74696E756527206F7589 +:10A350007473696465206C6F6F7000276272656149 +:10A360006B27206F757473696465206C6F6F700064 +:10A3700063616E27742064656C6574652065787010 +:10A3800072657373696F6E006E616D6520726575BD +:10A3900073656420666F7220617267756D656E7497 +:10A3A000002772657475726E27206F757473696407 +:10A3B000652066756E6374696F6E00277969656CD8 +:10A3C0006427206F7574736964652066756E6374A5 +:10A3D000696F6E00657870656374696E67206B6580 +:10A3E000793A76616C756520666F72206469637472 +:10A3F000696F6E61727900657870656374696E6704 +:10A40000206A75737420612076616C756520666FB3 +:10A4100072207365740062756666657220746F6F72 +:10A4200020736D616C6C006368722829206172670B +:10A43000206E6F7420696E2072616E6765283078B7 +:10A44000313130303030290061726720697320610A +:10A450006E20656D7074792073657175656E6365C6 +:10A46000006F7264282920657870656374656420C4 +:10A4700061206368617261637465722C2062757417 +:10A4800020737472696E67206F66206C656E6774E6 +:10A490006820256420666F756E64006D7573742086 +:10A4A000757365206B6579776F726420617267756B +:10A4B0006D656E7420666F72206B65792066756EAF +:10A4C0006374696F6E000A2573006C6F63616C20A2 +:10A4D0007661726961626C65207265666572656E2F +:10A4E000636564206265666F726520617373696776 +:10A4F0006E6D656E74006279746520636F646520AB +:10A500006E6F7420696D706C656D656E7465640046 +:10A510004E6F206163746976652065786365707439 +:10A52000696F6E20746F2072657261697365007364 +:10A530007461636B3A202575206F7574206F6620F7 +:10A5400025640A007173747220706F6F6C3A206E0C +:10A550005F706F6F6C3D25752C206E5F7173747228 +:10A560003D25752C206E5F7374725F646174615F4A +:10A5700062797465733D25752C206E5F746F74610C +:10A580006C5F62797465733D25750A0025713D0025 +:10A59000696E76616C6964206765737475726500B5 +:10A5A0002B2D786B63642E636F6D2F333533B32D92 +:10A5B0002B0A7CC0207C0A7CB4205C302F89207C54 +:10A5C0000A7CB2202F83205C89207C0A7C88205959 +:10A5D0006F7527726520666C79696E672192204DD0 +:10A5E0006963726F507974686F6E2120202F7C88A8 +:10A5F000207C0A7C8C20486F773FA6205C205C87FB +:10A60000207C0A7C8C202FB3207C0A7C8A2030B5E9 +:10A61000207C0A7C89202F7C5CB4207C0A7C8A20E8 +:10A620007CB5207C0A7C852D845F2F5F5C9E5F96C5 +:10A630002D7C0A7CC0207C0A2BC02D2B0A00766161 +:10A640006C7565206D7573742062652030206F72A3 +:10A6500020310076616C7565206D757374206265BC +:10A66000206265747765656E203020616E642031EC +:10A6700030323300696E76616C696420706572698E +:10A680006F6400657870656374696E67206120701F +:10A69000696E004D75737420626520616E2041758E +:10A6A00064696F42756666657200696E64657820DC +:10A6B0006F7574206F6620626F756E6473004361FE +:10A6C0006E6E6F742064656C65746520656C656D75 +:10A6D000656E7473206F6620417564696F467261A0 +:10A6E0006D650076616C7565206F7574206F6620EE +:10A6F00072616E676500416C6C6F636174696F6E47 +:10A7000020696E20696E746572727570742068615C +:10A710006E646C6572006E6F7420616E20417564AA +:10A72000696F4672616D650043616E6E6F74207370 +:10A7300065742072657475726E5F70696E207769DA +:10A7400074686F75742070696E00696E6465782036 +:10A7500063616E6E6F74206265206E6567617469F7 +:10A76000766500696E64657820746F6F206C617225 +:10A770006765005468697320696D6167652063616E +:10A780006E6E6F74206265206D6F646966696564C2 +:10A790002E2054727920636F7079696E6720697416 +:10A7A0002066697273742E006272696768746E65E0 +:10A7B0007373206F7574206F6620626F756E64739B +:10A7C0002E00496D61676528000A2020202000279F +:10A7D0000A202020202700303132333435363738F4 +:10A7E0003900556E657870656374656420636861CF +:10A7F00072616374657220696E20496D61676520BE +:10A80000646566696E6974696F6E2E00696D616753 +:10A8100065206461746120697320696E636F727270 +:10A820006563742073697A6500496D6167652829DD +:10A830002074616B6573203020746F203320617247 +:10A8400067756D656E747300496D6167652873295E +:10A850002074616B6573206120737472696E672E5A +:10A86000004272696768746E657373206D756C74ED +:10A8700069706C696572206D757374206E6F7420D9 +:10A880006265206E656761746976652E00496D6149 +:10A89000676573206D757374206265207468652028 +:10A8A00073616D652073697A652E004932432072A9 +:10A8B000656164206661696C6564207769746820ED +:10A8C0006572726F7220636F64652025640049327F +:10A8D00043207772697465206661696C65642077CE +:10A8E000697468206572726F7220636F64652025D9 +:10A8F00064004D6963726F507974686F6E206F6E7B +:10A9000020746865206D6963726F3A6269742069AA +:10A91000732062726F7567687420746F20796F7529 +:10A920002062793A0A44616D69656E20502E204795 +:10A93000656F7267652C204D61726B205368616E84 +:10A940006E6F6E2C205261646F6D697220446F705F +:10A95000696572616C736B692C204D6174746865F4 +:10A960007720456C73652C0A4361726F6C205769C0 +:10A970006C6C696E672C20546F6D2056696E657221 +:10A980002C20416C616E204A61636B736F6E2C20CA +:10A990004E69636B20436F67686C616E2C204A6F51 +:10A9A0007365706820486169672C0A416C6578207E +:10A9B0004368616E2C20416E64726561204772614C +:10A9C0006E64692C205061756C204567616E2C2087 +:10A9D00050696F7472204B617370727A796B2C209E +:10A9E000416E64726577204D756C686F6C6C616E3A +:10A9F000642C0A4D61747420576865656C65722C0F +:10AA0000204A6F6520476C616E63792C2041626239 +:10AA100069652042726F6F6B7320616E64204E69AE +:10AA200063686F6C617320482E20546F6C6C657284 +:10AA30007665792E0A00546865205A656E206F6627 +:10AA4000204D6963726F507974686F6E2C20627943 +:10AA5000204E6963686F6C617320482E20546F6CC0 +:10AA60006C65727665790A0A436F64652C0A4861E1 +:10AA7000636B2069742C0A4C657373206973206DB5 +:10AA80006F72652C0A4B6565702069742073696D5F +:10AA9000706C652C0A536D616C6C20697320626563 +:10AAA0006175746966756C2C0A0A42652062726170 +:10AAB00076652120427265616B207468696E6773E8 +:10AAC00021204C6561726E20616E6420686176653C +:10AAD0002066756E210A4578707265737320796FF0 +:10AAE000757273656C662077697468204D6963724E +:10AAF0006F507974686F6E2E0A0A48617070792001 +:10AB00006861636B696E6721203A2D290A00696EBE +:10AB100076616C696420636F6C6F757200696E7624 +:10AB2000616C6964206E756D626572206F6620705D +:10AB30006978656C73000808080808080808002090 +:10AB4000202020202020200001000100E2ECF0F471 +:10AB5000F8FC0004726164696F206973206E6F7481 +:10AB600020656E61626C656400617267756D656E0B +:10AB70007473206D757374206265206B6579776FCF +:10AB8000726420617267756D656E747300756E6BAB +:10AB90006E6F776E20617267756D656E7420272504 +:10ABA00071270076616C7565206F7574206F662063 +:10ABB00072616E676520666F7220617267756D6580 +:10ABC0006E74202725712700726563656976656458 +:10ABD000207061636B6574206973206E6F742061EF +:10ABE00020737472696E67006E6F7420616E2069E5 +:10ABF0006D6167652E00696E646578206F757420DD +:10AC00006F6620626F756E64732E0000000402028E +:10AC10000402000002040404000202000404030110 +:10AC20000000010303030001010203030402010108 +:10AC300003010403010003000004010102000003FA +:10AC4000023A257000772B002F737464696E002F11 +:10AC5000737464657272002F7374646F7574004F3F +:10AC60006E6C792038626974732053504920737573 +:10AC700070706F727465640053504920666F726D16 +:10AC80006174206572726F72004E6F206176616927 +:10AC90006C61626C6520535049004E6F2061766193 +:10ACA000696C61626C65204932430000000000005D +:10ACB00008080800080A4A4000000A5FEA5FEA0E36 +:10ACC000D92ED36E19324489330C924C924D080818 +:10ACD00000000004880808040804848488000A44EA +:10ACE0008A4000048EC480000000048800000EC06A +:10ACF00000000000080001224488100C9252524CBF +:10AD0000048C84848E1C824C901E1EC244924C067D +:10AD1000CA525FE21FF01EC13E02448ED12E1FE2D6 +:10AD20004488100ED12ED12E0ED12EC488000800DA +:10AD3000080000048004880244880482000EC00ECB +:10AD4000C008048244880ED126C0040ED135B36CED +:10AD50000C925ED2521C925C925C0ED010100E1CB3 +:10AD60009252525C1ED01C901E1ED01C90100ED011 +:10AD700013712E12525ED2521C8808081C1FE24228 +:10AD8000524C1254981492101010101E113B75B1B1 +:10AD900031113935B3710C9252524C1C925C9010A7 +:10ADA0000C92524C861C925C92510ED00C825C1F0D +:10ADB000E4848484125252524C1131312A441131AC +:10ADC00035BB7112524C9252112A4484841EC4889D +:10ADD000101E0EC808080E10080482410EC242421E +:10ADE0004E048A400000000000001F08048000009C +:10ADF000000ED2524F10101C925C000ED0100E02AA +:10AE0000424ED24E0C925C900E06C81C88080ED2A0 +:10AE10004EC24C10101C9252080008080802400252 +:10AE2000424C10149814920808080806001B75B1CB +:10AE300031001C925252000C92524C001C925C90B9 +:10AE4000000ED24EC2000ED010100006C8049808A2 +:10AE5000080EC807001252524F0011312A44001147 +:10AE60003135BB00124C8C9200112A4498001EC44C +:10AE7000881E06C48C8486080808080818080C88F0 +:10AE80001800000C83607A76677074756F6965616D +:10AE90007A76677074756F6965617A766770740128 +:10AEA000000002000003000004010004020004038B +:10AEB000000304000204000104000003000002007B +:10AEC000000100302C3235352C302C3235352C3009 +:10AED0000A302C3235352C302C3235352C300A30B6 +:10AEE0002C302C302C302C300A3235352C302C3094 +:10AEF0002C302C3235350A302C3235352C32353564 +:10AF00002C3235352C300A00445241572041204321 +:10AF10004952434C4500312E342E31390002000491 +:10AF200001080200000402020402000002040404FA +:10AF300000020200040403010000010303030001F6 +:10AF400001020303040201010301040301000300E1 +:10AF50000004010102000003021B1B000E1100008F +:10AF600000006261642068616E646C6520746F200B +:10AF7000756E6465726C79696E67207472616E7348 +:10AF8000706F72740050776D4F75742070696E2009 +:10AF90006D617070696E67206661696C65642E20F2 +:10AFA000416C6C20617661696C61626C6520505700 +:10AFB0004D206368616E6E656C73206172652069F7 +:10AFC0006E207573652E00636F756C64206E6F74F0 +:10AFD0002070696E6F75740070696E6D6170206DA0 +:10AFE00069732D6D617463680070696E6D617020A6 +:10AFF0006E6F7420666F756E6420666F7220706568 +:10B00000726970686572616C0070696E6D61702044 +:10B010006E6F7420666F756E6420666F7220667541 +:10B020006E6374696F6E00232D302B2000686C4CAA +:10B030000065666745464700303132333435363770 +:10B040003839414243444546003031323334353695 +:10B0500037383961626364656600412D46612D664B +:10B06000383930313233343536375D002B2D0030EE +:10B070003000785800002020202020202020202888 +:10B0800028282828202020202020202020202020A0 +:10B0900020202020202088101010101010101010D8 +:10B0A0001010101010100404040404040404040418 +:10B0B0001010101010101041414141414101010197 +:10B0C0000101010101010101010101010101010170 +:10B0D000011010101010104242424242420202027D +:10B0E0000202020202020202020202020202020240 +:10B0F00002101010102000000000000000000000EE +:10B10000000000000000000000000000000000003F +:10B11000000000000000000000000000000000002F +:10B12000000000000000000000000000000000001F +:10B13000000000000000000000000000000000000F +:10B1400000000000000000000000000000000000FF +:10B1500000000000000000000000000000000000EF +:10B1600000000000000000000000000000000000DF +:10B1700000000000000000001000000000000000BF +:10B18000017A5200027C0E011B0C0D001000000021 +:10B19000180000009402FFFF1400000000000000EF +:10B1A00000000000D04FFC7F010000000000000004 +:10B1B000294803000000000008000020E20400000D +:10B1C000175402001754020017540200AC01030088 +:10B1D000BC020300442A002000000000BC0203005F +:10B1E0006C2A002000000000BC10030000000000DA +:10B1F0000000000000000000E803000064150300E8 +:10B20000000000000000000000000000000000003E +:10B21000000000000000000000000100000000002D +:10B22000000000000000000000000000000000001E +:10B2300000000000D82F0020ABAC0300000000008D +:10B24000041F0300241F0300441F0300000000002C +:10B25000000000000000000000000000A9AC030096 +:10B2600000000000000000000000000000000000DE +:10B2700000000000000000000000000000000000CE +:10B2800000000000000000000000000000000000BE +:10B2900000000000000000000000000090000020FE +:10B2A00075B0030078000400040488130100010055 +:10B2B0000100010101030204010000003901000046 +:10B2C00021620100E1780100198001000190010074 +:04B2D0000D0100006C +:04000005000153EDB6 +:00000001FF diff --git a/help.html b/help.html index d8c4fa86..b8213a84 100644 --- a/help.html +++ b/help.html @@ -1,387 +1,387 @@ - - - - - - - - - - - - Python on the BBC micro:bit - - - - - - - - - - - - - - - - - - - - -
- -
-
-
- - - -

-
-
-
- http://goo.gl/SrIrIE -

Start Here

-

So you're looking at the Python editor and wondering what to do. That's - easy! Let's learn about the different parts of the editor. First of all, - there are some buttons across the top:

- -

A picture of the buttons along the top of the editor.

- -

Pressing the TAB key will move the focus between the buttons. Pressing - ENTER will activate the highlighted button. If you're in the text window - (see below) you'll need to press the ESCAPE key to re-focus on the buttons. - You can, of course, use your mouse.

- -

What do they do?

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Download button - - Click on the "Download" button to save a special "hex" file on - your computer. Plug in your BBC micro:bit (it'll show up as USB - storage) and drag the newly saved file onto the device. Your code - will run (or you'll see an error message scroll past on the - device's display). See below for how to extract your code from a - hex file back into the editor. -
- Save button - - Click on the "Save" button to save your code onto your computer. - Because you're downloading Python code your computer might check - you want to save the file. It's trying to protect you from - downloading random software from the internet. But since this is - your own code you're safe to proceed. See below for how to load - code back into the editor. -
- Load button - - It's very easy to load files from your computer into the editor: - click the load button then drag the file from your computer onto - the grey "drop" area. Alternatively, you could use the file - picker (just click on the link at the bottom to toggle between the - two options). The editor knows how to read Python files (whose name - ends with ".py") and extract Python code from hex files (whose name - ends with ".hex"). -
- Blockly button - - This is an experimental feature. It may change in future - and could contain bugs. Clicking the "Blockly" button - displays a set of drag-and-drop - blocks that can be used to quickly create Python code. Move the - blocks, watch Python code appear and change. Moving such - blocks will re-write your Python code and you may lose work. - Furthermore, the arrangement of blocks is currently not saved, - just the resulting Python code. -
- Snippets button - - Clicking on the "Snippets" button brings up a menu of Python - short-cuts (snippets). Code snippets are short blocks of code to - re-use in your own programs. There are snippets for most common - things you'll want to do with Python. Select the one you want and - fill in the gaps in the code editor to make it do what you want. - Snippets are disabled when blockly is enabled. -
- Help button - - Clicking on the "Help" button gets you here. But you knew that - already, right..? :-) Notice that your editor is still available - but in a separate tab in your browser. -
- Share button - - Clicking on the "Share" button creates a unique link that points to - your script. Add this link to your bookmarks to retrieve your code. - If you share this link others will be able to see your code. So - your code remains private you must set a password and an optional - password hint for it. This button is not available if - you're running the editor from a local file system. -
- Zoom buttons - - Everyone likes to show off their awesome Python skills. These - buttons are especially useful to zoom-in and zoom-out when you're - trying to show your code to a large group of people via a - projector. -
- -

The name and description for your script is shown on the top - right hand side. Click them to edit them.

- -

The other part of the editor is the text window:

- -

A picture of the text area in the code editor.

- -

It's very simple to use. Just click and type.

- -

The editor tries to help you out by colouring the text to show what - all the different parts of your program are. For example, Python keywords - (words built into the Python language) are grey. The brighter coloured - words are bits of the program you have created. Brown words - are constant values that never change and purple words represent - strings of characters to display. All the lines are numbered with the - current line highlighted.

- -

Do you want to see how the editor actually works? It's easy, to view - the "source code" press CTRL-U (or CMD-U on a Mac). There's a secret - message for you in the code. Can you find it?

- - http://goo.gl/ArpNbM - -

Hello, World!

- -

http://goo.gl/zpfrsY

- -

The version of Python that runs on the BBC micro:bit is called - MicroPython. It's exactly like real Python except it's designed - to run on small devices like the BBC micro:bit. Here's the MicroPython code - you need to make your BBC micro:bit say "Hello, World!". Copy and paste it - into the Python editor, download it and copy it onto your device (just like - Yellow and Blue suggest):

- -
from microbit import *
-
-
-display.scroll("Hello, World!")
- -

The first line (from microbit import *) tells MicroPython - to get all the bits of Python needed to program the micro:bit.

- -

The second line(display.scroll("Hello, World!")) tells - MicroPython to use one of those bits of Python (the display - module) to scroll the text, "Hello, World!" across the physical - display on the front of the device. It's all remarkably obvious. If you - followed Yellow and Blue's instructions you should see something like - this:

- -

An animation of 'hello world' scrolling over the display.

- -

Can you make it scroll any other messages? Why not try making your - BBC micro:bit scroll your name? Remember, MicroPython will scroll - everything between the "quotation marks".

- -

Blockly

- -

Use blockly to make new Python code from easy to assemble blocks of - code.

- -

An animation demonstrating how to use snippets.

- -

Blockly updates Python in the code editor as you move blocks around. - There are lots of different blocks to cover all the features of the - micro:bit. You can make more advanced code by combining blocks together - (such as in the example above).

- -

You should use Blockly to create new code since moving blocks - around will overwrite any existing code you have in the editor (and you may - lose work as a result). The arrangement of blocks isn't (currently) - saved, so Blockly makes a great way to make simple Python code without - lots of typing. In the end, you'll learn that simply typing Python is by - far the quickest and easiest way to write code.

- -

Not all the features of the micro:bit or MicroPython are available via - Blockly. We've done this on purpose. Some of the more advanced and - interesting stuff is only available in pure Python.

- -

However, by using Blockly you'll very quickly get the hang of how Python - code works and fits together.

- -

Snippets

- -

Snippets are a cool way to avoid typing. The animation below shows you - how to use them:

- -

An animation demonstrating how to use snippets.

- -

You can access snippets from the "Snippets" button (see above), but - it's a lot quicker and easier to learn the triggers for the - different fragments of code, hit the TAB key to expand the - snippet and then fill in the remaining blocks of code so it does what you - want.

- -

When blockly is enabled the "Snippets" button is disabled. This avoids - snippets from interfering with code that blockly may be generating.

- -

http://goo.gl/bT8a8M

- -

Bug Fixes

- -

Things will go wrong!

- -

You have to imagine Python is the most strict English teacher in the - universe... yes, even more strict than that really strict one you have at - your school. Put simply, you have to type Python without any - mistakes for it to work.

- -

All programmers make mistakes and create bugs. It's a fact of life. - When you have a bug MicroPython tries to help you out: it will scroll a - message on its display. It may even include a line number. This message is - like the first clue in a treasure hunt, you have to figure out the rest - yourself.

- -

Common bugs include Syntax Errors (which means you've typed it in - wrong) and Name Errors (that mean you've typed in correct Python, but - it can't work out what you're coding about).

- -

If you're unsure what to do - go read the - MicroPython docs. Alternatively, just ask someone who knows what they're - doing. If no such person is available you could just follow this handy flow - chart:

- -

The XKCD tech support cheat sheet.

- -

Fun Stuff

- -

http://goo.gl/q5DAAW

- -

Python makes it simple to write powerful programs. Can you work out what - this program does?

- -
# Press button A for a fortune cookie.
-from microbit import *
-import random
-
-
-fortunes = [
-    "Never step off a moving bus",
-    "This sentence is false",
-    "The meaning of life is overrated",
-    "Do not touch!",
-    "You will receive some advice",
-    "My hovercraft is full of eels",
-    ]
-
-
-while True:
-    if button_a.is_pressed():
-        cookie = random.choice(fortunes)
-        display.scroll(cookie)
- -

How could you improve it? What changes could you make?

- -

http://goo.gl/9lcLAf

- -

If you're looking for inspiration (robots, cool light displays and goofy - games) you should check out the - World Tour. These projects - were created by volunteers from the global Python community (of which you're - now a member!).

- - -
- - - - - - - - - - - + + + + + + + + + + + + Python on the BBC micro:bit + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+ + + +

+
+
+
+ http://goo.gl/SrIrIE +

Start Here

+

So you're looking at the Python editor and wondering what to do. That's + easy! Let's learn about the different parts of the editor. First of all, + there are some buttons across the top:

+ +

A picture of the buttons along the top of the editor.

+ +

Pressing the TAB key will move the focus between the buttons. Pressing + ENTER will activate the highlighted button. If you're in the text window + (see below) you'll need to press the ESCAPE key to re-focus on the buttons. + You can, of course, use your mouse.

+ +

What do they do?

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Download button + + Click on the "Download" button to save a special "hex" file on + your computer. Plug in your BBC micro:bit (it'll show up as USB + storage) and drag the newly saved file onto the device. Your code + will run (or you'll see an error message scroll past on the + device's display). See below for how to extract your code from a + hex file back into the editor. +
+ Save button + + Click on the "Save" button to save your code onto your computer. + Because you're downloading Python code your computer might check + you want to save the file. It's trying to protect you from + downloading random software from the internet. But since this is + your own code you're safe to proceed. See below for how to load + code back into the editor. +
+ Load button + + It's very easy to load files from your computer into the editor: + click the load button then drag the file from your computer onto + the grey "drop" area. Alternatively, you could use the file + picker (just click on the link at the bottom to toggle between the + two options). The editor knows how to read Python files (whose name + ends with ".py") and extract Python code from hex files (whose name + ends with ".hex"). +
+ Blockly button + + This is an experimental feature. It may change in future + and could contain bugs. Clicking the "Blockly" button + displays a set of drag-and-drop + blocks that can be used to quickly create Python code. Move the + blocks, watch Python code appear and change. Moving such + blocks will re-write your Python code and you may lose work. + Furthermore, the arrangement of blocks is currently not saved, + just the resulting Python code. +
+ Snippets button + + Clicking on the "Snippets" button brings up a menu of Python + short-cuts (snippets). Code snippets are short blocks of code to + re-use in your own programs. There are snippets for most common + things you'll want to do with Python. Select the one you want and + fill in the gaps in the code editor to make it do what you want. + Snippets are disabled when blockly is enabled. +
+ Help button + + Clicking on the "Help" button gets you here. But you knew that + already, right..? :-) Notice that your editor is still available + but in a separate tab in your browser. +
+ Share button + + Clicking on the "Share" button creates a unique link that points to + your script. Add this link to your bookmarks to retrieve your code. + If you share this link others will be able to see your code. So + your code remains private you must set a password and an optional + password hint for it. This button is not available if + you're running the editor from a local file system. +
+ Zoom buttons + + Everyone likes to show off their awesome Python skills. These + buttons are especially useful to zoom-in and zoom-out when you're + trying to show your code to a large group of people via a + projector. +
+ +

The name and description for your script is shown on the top + right hand side. Click them to edit them.

+ +

The other part of the editor is the text window:

+ +

A picture of the text area in the code editor.

+ +

It's very simple to use. Just click and type.

+ +

The editor tries to help you out by colouring the text to show what + all the different parts of your program are. For example, Python keywords + (words built into the Python language) are grey. The brighter coloured + words are bits of the program you have created. Brown words + are constant values that never change and purple words represent + strings of characters to display. All the lines are numbered with the + current line highlighted.

+ +

Do you want to see how the editor actually works? It's easy, to view + the "source code" press CTRL-U (or CMD-U on a Mac). There's a secret + message for you in the code. Can you find it?

+ + http://goo.gl/ArpNbM + +

Hello, World!

+ +

http://goo.gl/zpfrsY

+ +

The version of Python that runs on the BBC micro:bit is called + MicroPython. It's exactly like real Python except it's designed + to run on small devices like the BBC micro:bit. Here's the MicroPython code + you need to make your BBC micro:bit say "Hello, World!". Copy and paste it + into the Python editor, download it and copy it onto your device (just like + Yellow and Blue suggest):

+ +
from microbit import *
+
+
+display.scroll("Hello, World!")
+ +

The first line (from microbit import *) tells MicroPython + to get all the bits of Python needed to program the micro:bit.

+ +

The second line(display.scroll("Hello, World!")) tells + MicroPython to use one of those bits of Python (the display + module) to scroll the text, "Hello, World!" across the physical + display on the front of the device. It's all remarkably obvious. If you + followed Yellow and Blue's instructions you should see something like + this:

+ +

An animation of 'hello world' scrolling over the display.

+ +

Can you make it scroll any other messages? Why not try making your + BBC micro:bit scroll your name? Remember, MicroPython will scroll + everything between the "quotation marks".

+ +

Blockly

+ +

Use blockly to make new Python code from easy to assemble blocks of + code.

+ +

An animation demonstrating how to use snippets.

+ +

Blockly updates Python in the code editor as you move blocks around. + There are lots of different blocks to cover all the features of the + micro:bit. You can make more advanced code by combining blocks together + (such as in the example above).

+ +

You should use Blockly to create new code since moving blocks + around will overwrite any existing code you have in the editor (and you may + lose work as a result). The arrangement of blocks isn't (currently) + saved, so Blockly makes a great way to make simple Python code without + lots of typing. In the end, you'll learn that simply typing Python is by + far the quickest and easiest way to write code.

+ +

Not all the features of the micro:bit or MicroPython are available via + Blockly. We've done this on purpose. Some of the more advanced and + interesting stuff is only available in pure Python.

+ +

However, by using Blockly you'll very quickly get the hang of how Python + code works and fits together.

+ +

Snippets

+ +

Snippets are a cool way to avoid typing. The animation below shows you + how to use them:

+ +

An animation demonstrating how to use snippets.

+ +

You can access snippets from the "Snippets" button (see above), but + it's a lot quicker and easier to learn the triggers for the + different fragments of code, hit the TAB key to expand the + snippet and then fill in the remaining blocks of code so it does what you + want.

+ +

When blockly is enabled the "Snippets" button is disabled. This avoids + snippets from interfering with code that blockly may be generating.

+ +

http://goo.gl/bT8a8M

+ +

Bug Fixes

+ +

Things will go wrong!

+ +

You have to imagine Python is the most strict English teacher in the + universe... yes, even more strict than that really strict one you have at + your school. Put simply, you have to type Python without any + mistakes for it to work.

+ +

All programmers make mistakes and create bugs. It's a fact of life. + When you have a bug MicroPython tries to help you out: it will scroll a + message on its display. It may even include a line number. This message is + like the first clue in a treasure hunt, you have to figure out the rest + yourself.

+ +

Common bugs include Syntax Errors (which means you've typed it in + wrong) and Name Errors (that mean you've typed in correct Python, but + it can't work out what you're coding about).

+ +

If you're unsure what to do + go read the + MicroPython docs. Alternatively, just ask someone who knows what they're + doing. If no such person is available you could just follow this handy flow + chart:

+ +

The XKCD tech support cheat sheet.

+ +

Fun Stuff

+ +

http://goo.gl/q5DAAW

+ +

Python makes it simple to write powerful programs. Can you work out what + this program does?

+ +
# Press button A for a fortune cookie.
+from microbit import *
+import random
+
+
+fortunes = [
+    "Never step off a moving bus",
+    "This sentence is false",
+    "The meaning of life is overrated",
+    "Do not touch!",
+    "You will receive some advice",
+    "My hovercraft is full of eels",
+    ]
+
+
+while True:
+    if button_a.is_pressed():
+        cookie = random.choice(fortunes)
+        display.scroll(cookie)
+ +

How could you improve it? What changes could you make?

+ +

http://goo.gl/9lcLAf

+ +

If you're looking for inspiration (robots, cool light displays and goofy + games) you should check out the + World Tour. These projects + were created by volunteers from the global Python community (of which you're + now a member!).

+ + +
+ + + + + + + + + + + diff --git a/index.html b/index.html index 0803bebe..a3455705 100644 --- a/index.html +++ b/index.html @@ -1,14 +1,14 @@ - - - - - - - Page Redirection - - - If you are not redirected automatically, follow this link to example. - - + + + + + + + Page Redirection + + + If you are not redirected automatically, follow this link to example. + + diff --git a/lib/cm/active-line.js b/lib/cm/active-line.js new file mode 100644 index 00000000..aa295d0d --- /dev/null +++ b/lib/cm/active-line.js @@ -0,0 +1,72 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + var WRAP_CLASS = "CodeMirror-activeline"; + var BACK_CLASS = "CodeMirror-activeline-background"; + var GUTT_CLASS = "CodeMirror-activeline-gutter"; + + CodeMirror.defineOption("styleActiveLine", false, function(cm, val, old) { + var prev = old == CodeMirror.Init ? false : old; + if (val == prev) return + if (prev) { + cm.off("beforeSelectionChange", selectionChange); + clearActiveLines(cm); + delete cm.state.activeLines; + } + if (val) { + cm.state.activeLines = []; + updateActiveLines(cm, cm.listSelections()); + cm.on("beforeSelectionChange", selectionChange); + } + }); + + function clearActiveLines(cm) { + for (var i = 0; i < cm.state.activeLines.length; i++) { + cm.removeLineClass(cm.state.activeLines[i], "wrap", WRAP_CLASS); + cm.removeLineClass(cm.state.activeLines[i], "background", BACK_CLASS); + cm.removeLineClass(cm.state.activeLines[i], "gutter", GUTT_CLASS); + } + } + + function sameArray(a, b) { + if (a.length != b.length) return false; + for (var i = 0; i < a.length; i++) + if (a[i] != b[i]) return false; + return true; + } + + function updateActiveLines(cm, ranges) { + var active = []; + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i]; + var option = cm.getOption("styleActiveLine"); + if (typeof option == "object" && option.nonEmpty ? range.anchor.line != range.head.line : !range.empty()) + continue + var line = cm.getLineHandleVisualStart(range.head.line); + if (active[active.length - 1] != line) active.push(line); + } + if (sameArray(cm.state.activeLines, active)) return; + cm.operation(function() { + clearActiveLines(cm); + for (var i = 0; i < active.length; i++) { + cm.addLineClass(active[i], "wrap", WRAP_CLASS); + cm.addLineClass(active[i], "background", BACK_CLASS); + cm.addLineClass(active[i], "gutter", GUTT_CLASS); + } + cm.state.activeLines = active; + }); + } + + function selectionChange(cm, sel) { + updateActiveLines(cm, sel.ranges); + } +}); diff --git a/lib/cm/blackboard.css b/lib/cm/blackboard.css new file mode 100644 index 00000000..b6eaedb1 --- /dev/null +++ b/lib/cm/blackboard.css @@ -0,0 +1,32 @@ +/* Port of TextMate's Blackboard theme */ + +.cm-s-blackboard.CodeMirror { background: #0C1021; color: #F8F8F8; } +.cm-s-blackboard div.CodeMirror-selected { background: #253B76; } +.cm-s-blackboard .CodeMirror-line::selection, .cm-s-blackboard .CodeMirror-line > span::selection, .cm-s-blackboard .CodeMirror-line > span > span::selection { background: rgba(37, 59, 118, .99); } +.cm-s-blackboard .CodeMirror-line::-moz-selection, .cm-s-blackboard .CodeMirror-line > span::-moz-selection, .cm-s-blackboard .CodeMirror-line > span > span::-moz-selection { background: rgba(37, 59, 118, .99); } +.cm-s-blackboard .CodeMirror-gutters { background: #0C1021; border-right: 0; } +.cm-s-blackboard .CodeMirror-guttermarker { color: #FBDE2D; } +.cm-s-blackboard .CodeMirror-guttermarker-subtle { color: #888; } +.cm-s-blackboard .CodeMirror-linenumber { color: #888; } +.cm-s-blackboard .CodeMirror-cursor { border-left: 1px solid #A7A7A7; } + +.cm-s-blackboard .cm-keyword { color: #FBDE2D; } +.cm-s-blackboard .cm-atom { color: #D8FA3C; } +.cm-s-blackboard .cm-number { color: #D8FA3C; } +.cm-s-blackboard .cm-def { color: #8DA6CE; } +.cm-s-blackboard .cm-variable { color: #FF6400; } +.cm-s-blackboard .cm-operator { color: #FBDE2D; } +.cm-s-blackboard .cm-comment { color: #AEAEAE; } +.cm-s-blackboard .cm-string { color: #61CE3C; } +.cm-s-blackboard .cm-string-2 { color: #61CE3C; } +.cm-s-blackboard .cm-meta { color: #D8FA3C; } +.cm-s-blackboard .cm-builtin { color: #8DA6CE; } +.cm-s-blackboard .cm-tag { color: #8DA6CE; } +.cm-s-blackboard .cm-attribute { color: #8DA6CE; } +.cm-s-blackboard .cm-header { color: #FF6400; } +.cm-s-blackboard .cm-hr { color: #AEAEAE; } +.cm-s-blackboard .cm-link { color: #8DA6CE; } +.cm-s-blackboard .cm-error { background: #9D1E15; color: #F8F8F8; } + +.cm-s-blackboard .CodeMirror-activeline-background { background: #3C3636; } +.cm-s-blackboard .CodeMirror-matchingbracket { outline:1px solid grey;color:white !important; } diff --git a/lib/cm/cobalt.css b/lib/cm/cobalt.css new file mode 100644 index 00000000..d88223ed --- /dev/null +++ b/lib/cm/cobalt.css @@ -0,0 +1,25 @@ +.cm-s-cobalt.CodeMirror { background: #002240; color: white; } +.cm-s-cobalt div.CodeMirror-selected { background: #b36539; } +.cm-s-cobalt .CodeMirror-line::selection, .cm-s-cobalt .CodeMirror-line > span::selection, .cm-s-cobalt .CodeMirror-line > span > span::selection { background: rgba(179, 101, 57, .99); } +.cm-s-cobalt .CodeMirror-line::-moz-selection, .cm-s-cobalt .CodeMirror-line > span::-moz-selection, .cm-s-cobalt .CodeMirror-line > span > span::-moz-selection { background: rgba(179, 101, 57, .99); } +.cm-s-cobalt .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } +.cm-s-cobalt .CodeMirror-guttermarker { color: #ffee80; } +.cm-s-cobalt .CodeMirror-guttermarker-subtle { color: #d0d0d0; } +.cm-s-cobalt .CodeMirror-linenumber { color: #d0d0d0; } +.cm-s-cobalt .CodeMirror-cursor { border-left: 1px solid white; } + +.cm-s-cobalt span.cm-comment { color: #08f; } +.cm-s-cobalt span.cm-atom { color: #845dc4; } +.cm-s-cobalt span.cm-number, .cm-s-cobalt span.cm-attribute { color: #ff80e1; } +.cm-s-cobalt span.cm-keyword { color: #ffee80; } +.cm-s-cobalt span.cm-string { color: #3ad900; } +.cm-s-cobalt span.cm-meta { color: #ff9d00; } +.cm-s-cobalt span.cm-variable-2, .cm-s-cobalt span.cm-tag { color: #9effff; } +.cm-s-cobalt span.cm-variable-3, .cm-s-cobalt span.cm-def { color: white; } +.cm-s-cobalt span.cm-bracket { color: #d8d8d8; } +.cm-s-cobalt span.cm-builtin, .cm-s-cobalt span.cm-special { color: #ff9e59; } +.cm-s-cobalt span.cm-link { color: #845dc4; } +.cm-s-cobalt span.cm-error { color: #9d1e15; } + +.cm-s-cobalt .CodeMirror-activeline-background { background: #002D57; } +.cm-s-cobalt .CodeMirror-matchingbracket { outline:1px solid grey;color:white !important; } diff --git a/lib/cm/codemirror.css b/lib/cm/codemirror.css new file mode 100644 index 00000000..3cd7f4e7 --- /dev/null +++ b/lib/cm/codemirror.css @@ -0,0 +1,345 @@ +/* BASICS */ + +.CodeMirror { + /* Set height, width, borders, and global font properties here */ + font-family: monospace; + /*height: 300px;*/ + + color: black; +} + +/* PADDING */ + +.CodeMirror-lines { + padding: 4px 0; /* Vertical padding around content */ +} +.CodeMirror pre { + padding: 0 4px; /* Horizontal padding of content */ +} + +.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { + background-color: white; /* The little square between H and V scrollbars */ +} + +/* GUTTER */ + +.CodeMirror-gutters { + border-right: 1px solid #ddd; + background-color: #f7f7f7; + white-space: nowrap; +} +.CodeMirror-linenumbers {} +.CodeMirror-linenumber { + padding: 0 3px 0 5px; + min-width: 20px; + text-align: right; + color: #999; + white-space: nowrap; +} + +.CodeMirror-guttermarker { color: black; } +.CodeMirror-guttermarker-subtle { color: #999; } + +/* CURSOR */ + +.CodeMirror-cursor { + border-left: 1px solid black; + border-right: none; + width: 0; +} +/* Shown when moving in bi-directional text */ +.CodeMirror div.CodeMirror-secondarycursor { + border-left: 1px solid silver; +} +.cm-fat-cursor .CodeMirror-cursor { + width: auto; + border: 0 !important; + background: #7e7; +} +.cm-fat-cursor div.CodeMirror-cursors { + z-index: 1; +} + +.cm-animate-fat-cursor { + width: auto; + border: 0; + -webkit-animation: blink 1.06s steps(1) infinite; + -moz-animation: blink 1.06s steps(1) infinite; + animation: blink 1.06s steps(1) infinite; + background-color: #7e7; +} +@-moz-keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} +@-webkit-keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} +@keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} + +/* Can style cursor different in overwrite (non-insert) mode */ +.CodeMirror-overwrite .CodeMirror-cursor {} + +.cm-tab { display: inline-block; text-decoration: inherit; } + +.CodeMirror-rulers { + position: absolute; + left: 0; right: 0; top: -50px; bottom: -20px; + overflow: hidden; +} +.CodeMirror-ruler { + border-left: 1px solid #ccc; + top: 0; bottom: 0; + position: absolute; +} + +/* DEFAULT THEME */ + +.cm-s-default .cm-header {color: blue;} +.cm-s-default .cm-quote {color: #090;} +.cm-negative {color: #d44;} +.cm-positive {color: #292;} +.cm-header, .cm-strong {font-weight: bold;} +.cm-em {font-style: italic;} +.cm-link {text-decoration: underline;} +.cm-strikethrough {text-decoration: line-through;} + +.cm-s-default .cm-keyword {color: #708;} +.cm-s-default .cm-atom {color: #219;} +.cm-s-default .cm-number {color: #164;} +.cm-s-default .cm-def {color: #00f;} +.cm-s-default .cm-variable, +.cm-s-default .cm-punctuation, +.cm-s-default .cm-property, +.cm-s-default .cm-operator {} +.cm-s-default .cm-variable-2 {color: #05a;} +.cm-s-default .cm-variable-3 {color: #085;} +.cm-s-default .cm-comment {color: #a50;} +.cm-s-default .cm-string {color: #a11;} +.cm-s-default .cm-string-2 {color: #f50;} +.cm-s-default .cm-meta {color: #555;} +.cm-s-default .cm-qualifier {color: #555;} +.cm-s-default .cm-builtin {color: #30a;} +.cm-s-default .cm-bracket {color: #997;} +.cm-s-default .cm-tag {color: #170;} +.cm-s-default .cm-attribute {color: #00c;} +.cm-s-default .cm-hr {color: #999;} +.cm-s-default .cm-link {color: #00c;} + +.cm-s-default .cm-error {color: #f00;} +.cm-invalidchar {color: #f00;} + +.CodeMirror-composing { border-bottom: 2px solid; } + +/* Default styles for common addons */ + +div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;} +div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} +.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); } +.CodeMirror-activeline-background {background: #e8f2ff;} + +/* STOP */ + +/* The rest of this file contains styles related to the mechanics of + the editor. You probably shouldn't touch them. */ + +.CodeMirror { + position: absolute; + top:0px; + height: 100%; + width: 100%; + overflow: hidden; + background: white; +} + +.CodeMirror-scroll { + overflow: scroll !important; /* Things will break if this is overridden */ + /* 30px is the magic margin used to hide the element's real scrollbars */ + /* See overflow: hidden in .CodeMirror */ + margin-bottom: -30px; margin-right: -30px; + padding-bottom: 30px; + height: 100%; + outline: none; /* Prevent dragging from highlighting the element */ + position: relative; +} +.CodeMirror-sizer { + position: relative; + border-right: 30px solid transparent; +} + +/* The fake, visible scrollbars. Used to force redraw during scrolling + before actual scrolling happens, thus preventing shaking and + flickering artifacts. */ +.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { + position: absolute; + z-index: 6; + display: none; +} +.CodeMirror-vscrollbar { + right: 0; top: 0; + overflow-x: hidden; + overflow-y: scroll; +} +.CodeMirror-hscrollbar { + bottom: 0; left: 0; + overflow-y: hidden; + overflow-x: scroll; +} +.CodeMirror-scrollbar-filler { + right: 0; bottom: 0; +} +.CodeMirror-gutter-filler { + left: 0; bottom: 0; +} + +.CodeMirror-gutters { + position: absolute; left: 0; top: 0; + min-height: 100%; + z-index: 3; +} +.CodeMirror-gutter { + white-space: normal; + height: 100%; + display: inline-block; + vertical-align: top; + margin-bottom: -30px; +} +.CodeMirror-gutter-wrapper { + position: absolute; + z-index: 4; + background: none !important; + border: none !important; +} +.CodeMirror-gutter-background { + position: absolute; + top: 0; bottom: 0; + z-index: 4; +} +.CodeMirror-gutter-elt { + position: absolute; + cursor: default; + z-index: 4; +} +.CodeMirror-gutter-wrapper { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.CodeMirror-lines { + cursor: text; + min-height: 1px; /* prevents collapsing before first draw */ +} +.CodeMirror pre { + /* Reset some styles that the rest of the page might have set */ + -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; + border-width: 0; + background: transparent; + font-family: inherit; + font-size: inherit; + margin: 0; + white-space: pre; + word-wrap: normal; + line-height: inherit; + color: inherit; + z-index: 2; + position: relative; + overflow: visible; + -webkit-tap-highlight-color: transparent; + -webkit-font-variant-ligatures: contextual; + font-variant-ligatures: contextual; +} +.CodeMirror-wrap pre { + word-wrap: break-word; + white-space: pre-wrap; + word-break: normal; +} + +.CodeMirror-linebackground { + position: absolute; + left: 0; right: 0; top: 0; bottom: 0; + z-index: 0; +} + +.CodeMirror-linewidget { + position: relative; + z-index: 2; + overflow: auto; +} + +.CodeMirror-widget {} + +.CodeMirror-code { + outline: none; +} + +/* Force content-box sizing for the elements where we expect it */ +.CodeMirror-scroll, +.CodeMirror-sizer, +.CodeMirror-gutter, +.CodeMirror-gutters, +.CodeMirror-linenumber { + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +.CodeMirror-measure { + position: absolute; + width: 100%; + height: 0; + overflow: hidden; + visibility: hidden; +} + +.CodeMirror-cursor { + position: absolute; + pointer-events: none; +} +.CodeMirror-measure pre { position: static; } + +div.CodeMirror-cursors { + visibility: hidden; + position: relative; + z-index: 3; +} +div.CodeMirror-dragcursors { + visibility: visible; +} + +.CodeMirror-focused div.CodeMirror-cursors { + visibility: visible; +} + +.CodeMirror-selected { background: #d9d9d9; } +.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } +.CodeMirror-crosshair { cursor: crosshair; } +.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; } +.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; } + +.cm-searching { + background: #ffa; + background: rgba(255, 255, 0, .4); +} + +/* Used to force a border model for a node */ +.cm-force-border { padding-right: .1px; } + +@media print { + /* Hide the cursor when printing */ + .CodeMirror div.CodeMirror-cursors { + visibility: hidden; + } +} + +/* See issue #2901 */ +.cm-tab-wrap-hack:after { content: ''; } + +/* Help users use markselection to safely style text background */ +span.CodeMirror-selectedtext { background: none; } diff --git a/lib/cm/codemirror.js b/lib/cm/codemirror.js new file mode 100644 index 00000000..f11f1aff --- /dev/null +++ b/lib/cm/codemirror.js @@ -0,0 +1,9113 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// This is CodeMirror (http://codemirror.net), a code editor +// implemented in JavaScript on top of the browser's DOM. +// +// You can find some technical background for some of the code below +// at http://marijnhaverbeke.nl/blog/#cm-internals . + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.CodeMirror = factory()); +}(this, (function () { 'use strict'; + +// Kludges for bugs and behavior differences that can't be feature +// detected are enabled based on userAgent etc sniffing. +var userAgent = navigator.userAgent +var platform = navigator.platform + +var gecko = /gecko\/\d/i.test(userAgent) +var ie_upto10 = /MSIE \d/.test(userAgent) +var ie_11up = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(userAgent) +var ie = ie_upto10 || ie_11up +var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : ie_11up[1]) +var webkit = /WebKit\//.test(userAgent) +var qtwebkit = webkit && /Qt\/\d+\.\d+/.test(userAgent) +var chrome = /Chrome\//.test(userAgent) +var presto = /Opera\//.test(userAgent) +var safari = /Apple Computer/.test(navigator.vendor) +var mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(userAgent) +var phantom = /PhantomJS/.test(userAgent) + +var ios = /AppleWebKit/.test(userAgent) && /Mobile\/\w+/.test(userAgent) +// This is woefully incomplete. Suggestions for alternative methods welcome. +var mobile = ios || /Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent) +var mac = ios || /Mac/.test(platform) +var chromeOS = /\bCrOS\b/.test(userAgent) +var windows = /win/i.test(platform) + +var presto_version = presto && userAgent.match(/Version\/(\d*\.\d*)/) +if (presto_version) { presto_version = Number(presto_version[1]) } +if (presto_version && presto_version >= 15) { presto = false; webkit = true } +// Some browsers use the wrong event properties to signal cmd/ctrl on OS X +var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11)) +var captureRightClick = gecko || (ie && ie_version >= 9) + +function classTest(cls) { return new RegExp("(^|\\s)" + cls + "(?:$|\\s)\\s*") } + +var rmClass = function(node, cls) { + var current = node.className + var match = classTest(cls).exec(current) + if (match) { + var after = current.slice(match.index + match[0].length) + node.className = current.slice(0, match.index) + (after ? match[1] + after : "") + } +} + +function removeChildren(e) { + for (var count = e.childNodes.length; count > 0; --count) + { e.removeChild(e.firstChild) } + return e +} + +function removeChildrenAndAdd(parent, e) { + return removeChildren(parent).appendChild(e) +} + +function elt(tag, content, className, style) { + var e = document.createElement(tag) + if (className) { e.className = className } + if (style) { e.style.cssText = style } + if (typeof content == "string") { e.appendChild(document.createTextNode(content)) } + else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]) } } + return e +} + +var range +if (document.createRange) { range = function(node, start, end, endNode) { + var r = document.createRange() + r.setEnd(endNode || node, end) + r.setStart(node, start) + return r +} } +else { range = function(node, start, end) { + var r = document.body.createTextRange() + try { r.moveToElementText(node.parentNode) } + catch(e) { return r } + r.collapse(true) + r.moveEnd("character", end) + r.moveStart("character", start) + return r +} } + +function contains(parent, child) { + if (child.nodeType == 3) // Android browser always returns false when child is a textnode + { child = child.parentNode } + if (parent.contains) + { return parent.contains(child) } + do { + if (child.nodeType == 11) { child = child.host } + if (child == parent) { return true } + } while (child = child.parentNode) +} + +function activeElt() { + // IE and Edge may throw an "Unspecified Error" when accessing document.activeElement. + // IE < 10 will throw when accessed while the page is loading or in an iframe. + // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable. + var activeElement + try { + activeElement = document.activeElement + } catch(e) { + activeElement = document.body || null + } + while (activeElement && activeElement.root && activeElement.root.activeElement) + { activeElement = activeElement.root.activeElement } + return activeElement +} + +function addClass(node, cls) { + var current = node.className + if (!classTest(cls).test(current)) { node.className += (current ? " " : "") + cls } +} +function joinClasses(a, b) { + var as = a.split(" ") + for (var i = 0; i < as.length; i++) + { if (as[i] && !classTest(as[i]).test(b)) { b += " " + as[i] } } + return b +} + +var selectInput = function(node) { node.select() } +if (ios) // Mobile Safari apparently has a bug where select() is broken. + { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length } } +else if (ie) // Suppress mysterious IE10 errors + { selectInput = function(node) { try { node.select() } catch(_e) {} } } + +function bind(f) { + var args = Array.prototype.slice.call(arguments, 1) + return function(){return f.apply(null, args)} +} + +function copyObj(obj, target, overwrite) { + if (!target) { target = {} } + for (var prop in obj) + { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop))) + { target[prop] = obj[prop] } } + return target +} + +// Counts the column offset in a string, taking tabs into account. +// Used mostly to find indentation. +function countColumn(string, end, tabSize, startIndex, startValue) { + if (end == null) { + end = string.search(/[^\s\u00a0]/) + if (end == -1) { end = string.length } + } + for (var i = startIndex || 0, n = startValue || 0;;) { + var nextTab = string.indexOf("\t", i) + if (nextTab < 0 || nextTab >= end) + { return n + (end - i) } + n += nextTab - i + n += tabSize - (n % tabSize) + i = nextTab + 1 + } +} + +function Delayed() {this.id = null} +Delayed.prototype.set = function(ms, f) { + clearTimeout(this.id) + this.id = setTimeout(f, ms) +} + +function indexOf(array, elt) { + for (var i = 0; i < array.length; ++i) + { if (array[i] == elt) { return i } } + return -1 +} + +// Number of pixels added to scroller and sizer to hide scrollbar +var scrollerGap = 30 + +// Returned or thrown by various protocols to signal 'I'm not +// handling this'. +var Pass = {toString: function(){return "CodeMirror.Pass"}} + +// Reused option objects for setSelection & friends +var sel_dontScroll = {scroll: false}; +var sel_mouse = {origin: "*mouse"}; +var sel_move = {origin: "+move"}; +// The inverse of countColumn -- find the offset that corresponds to +// a particular column. +function findColumn(string, goal, tabSize) { + for (var pos = 0, col = 0;;) { + var nextTab = string.indexOf("\t", pos) + if (nextTab == -1) { nextTab = string.length } + var skipped = nextTab - pos + if (nextTab == string.length || col + skipped >= goal) + { return pos + Math.min(skipped, goal - col) } + col += nextTab - pos + col += tabSize - (col % tabSize) + pos = nextTab + 1 + if (col >= goal) { return pos } + } +} + +var spaceStrs = [""] +function spaceStr(n) { + while (spaceStrs.length <= n) + { spaceStrs.push(lst(spaceStrs) + " ") } + return spaceStrs[n] +} + +function lst(arr) { return arr[arr.length-1] } + +function map(array, f) { + var out = [] + for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i) } + return out +} + +function insertSorted(array, value, score) { + var pos = 0, priority = score(value) + while (pos < array.length && score(array[pos]) <= priority) { pos++ } + array.splice(pos, 0, value) +} + +function nothing() {} + +function createObj(base, props) { + var inst + if (Object.create) { + inst = Object.create(base) + } else { + nothing.prototype = base + inst = new nothing() + } + if (props) { copyObj(props, inst) } + return inst +} + +var nonASCIISingleCaseWordChar = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/ +function isWordCharBasic(ch) { + return /\w/.test(ch) || ch > "\x80" && + (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)) +} +function isWordChar(ch, helper) { + if (!helper) { return isWordCharBasic(ch) } + if (helper.source.indexOf("\\w") > -1 && isWordCharBasic(ch)) { return true } + return helper.test(ch) +} + +function isEmpty(obj) { + for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } } + return true +} + +// Extending unicode characters. A series of a non-extending char + +// any number of extending chars is treated as a single unit as far +// as editing and measuring is concerned. This is not fully correct, +// since some scripts/fonts/browsers also treat other configurations +// of code points as a group. +var extendingChars = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/ +function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) } + +// The display handles the DOM integration, both for input reading +// and content drawing. It holds references to DOM nodes and +// display-related state. + +function Display(place, doc, input) { + var d = this + this.input = input + + // Covers bottom-right square when both scrollbars are present. + d.scrollbarFiller = elt("div", null, "CodeMirror-scrollbar-filler") + d.scrollbarFiller.setAttribute("cm-not-content", "true") + // Covers bottom of gutter when coverGutterNextToScrollbar is on + // and h scrollbar is present. + d.gutterFiller = elt("div", null, "CodeMirror-gutter-filler") + d.gutterFiller.setAttribute("cm-not-content", "true") + // Will contain the actual code, positioned to cover the viewport. + d.lineDiv = elt("div", null, "CodeMirror-code") + // Elements are added to these to represent selection and cursors. + d.selectionDiv = elt("div", null, null, "position: relative; z-index: 1") + d.cursorDiv = elt("div", null, "CodeMirror-cursors") + // A visibility: hidden element used to find the size of things. + d.measure = elt("div", null, "CodeMirror-measure") + // When lines outside of the viewport are measured, they are drawn in this. + d.lineMeasure = elt("div", null, "CodeMirror-measure") + // Wraps everything that needs to exist inside the vertically-padded coordinate system + d.lineSpace = elt("div", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], + null, "position: relative; outline: none") + // Moved around its parent to cover visible view. + d.mover = elt("div", [elt("div", [d.lineSpace], "CodeMirror-lines")], null, "position: relative") + // Set to the height of the document, allowing scrolling. + d.sizer = elt("div", [d.mover], "CodeMirror-sizer") + d.sizerWidth = null + // Behavior of elts with overflow: auto and padding is + // inconsistent across browsers. This is used to ensure the + // scrollable area is big enough. + d.heightForcer = elt("div", null, null, "position: absolute; height: " + scrollerGap + "px; width: 1px;") + // Will contain the gutters, if any. + d.gutters = elt("div", null, "CodeMirror-gutters") + d.lineGutter = null + // Actual scrollable element. + d.scroller = elt("div", [d.sizer, d.heightForcer, d.gutters], "CodeMirror-scroll") + d.scroller.setAttribute("tabIndex", "-1") + // The element in which the editor lives. + d.wrapper = elt("div", [d.scrollbarFiller, d.gutterFiller, d.scroller], "CodeMirror") + + // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported) + if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0 } + if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true } + + if (place) { + if (place.appendChild) { place.appendChild(d.wrapper) } + else { place(d.wrapper) } + } + + // Current rendered range (may be bigger than the view window). + d.viewFrom = d.viewTo = doc.first + d.reportedViewFrom = d.reportedViewTo = doc.first + // Information about the rendered lines. + d.view = [] + d.renderedView = null + // Holds info about a single rendered line when it was rendered + // for measurement, while not in view. + d.externalMeasured = null + // Empty space (in pixels) above the view + d.viewOffset = 0 + d.lastWrapHeight = d.lastWrapWidth = 0 + d.updateLineNumbers = null + + d.nativeBarWidth = d.barHeight = d.barWidth = 0 + d.scrollbarsClipped = false + + // Used to only resize the line number gutter when necessary (when + // the amount of lines crosses a boundary that makes its width change) + d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null + // Set to true when a non-horizontal-scrolling line widget is + // added. As an optimization, line widget aligning is skipped when + // this is false. + d.alignWidgets = false + + d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null + + // Tracks the maximum line length so that the horizontal scrollbar + // can be kept static when scrolling. + d.maxLine = null + d.maxLineLength = 0 + d.maxLineChanged = false + + // Used for measuring wheel scrolling granularity + d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null + + // True when shift is held down. + d.shift = false + + // Used to track whether anything happened since the context menu + // was opened. + d.selForContextMenu = null + + d.activeTouch = null + + input.init(d) +} + +// Find the line object corresponding to the given line number. +function getLine(doc, n) { + n -= doc.first + if (n < 0 || n >= doc.size) { throw new Error("There is no line " + (n + doc.first) + " in the document.") } + var chunk = doc + while (!chunk.lines) { + for (var i = 0;; ++i) { + var child = chunk.children[i], sz = child.chunkSize() + if (n < sz) { chunk = child; break } + n -= sz + } + } + return chunk.lines[n] +} + +// Get the part of a document between two positions, as an array of +// strings. +function getBetween(doc, start, end) { + var out = [], n = start.line + doc.iter(start.line, end.line + 1, function (line) { + var text = line.text + if (n == end.line) { text = text.slice(0, end.ch) } + if (n == start.line) { text = text.slice(start.ch) } + out.push(text) + ++n + }) + return out +} +// Get the lines between from and to, as array of strings. +function getLines(doc, from, to) { + var out = [] + doc.iter(from, to, function (line) { out.push(line.text) }) // iter aborts when callback returns truthy value + return out +} + +// Update the height of a line, propagating the height change +// upwards to parent nodes. +function updateLineHeight(line, height) { + var diff = height - line.height + if (diff) { for (var n = line; n; n = n.parent) { n.height += diff } } +} + +// Given a line object, find its line number by walking up through +// its parent links. +function lineNo(line) { + if (line.parent == null) { return null } + var cur = line.parent, no = indexOf(cur.lines, line) + for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) { + for (var i = 0;; ++i) { + if (chunk.children[i] == cur) { break } + no += chunk.children[i].chunkSize() + } + } + return no + cur.first +} + +// Find the line at the given vertical position, using the height +// information in the document tree. +function lineAtHeight(chunk, h) { + var n = chunk.first + outer: do { + for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) { + var child = chunk.children[i$1], ch = child.height + if (h < ch) { chunk = child; continue outer } + h -= ch + n += child.chunkSize() + } + return n + } while (!chunk.lines) + var i = 0 + for (; i < chunk.lines.length; ++i) { + var line = chunk.lines[i], lh = line.height + if (h < lh) { break } + h -= lh + } + return n + i +} + +function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size} + +function lineNumberFor(options, i) { + return String(options.lineNumberFormatter(i + options.firstLineNumber)) +} + +// A Pos instance represents a position within the text. +function Pos (line, ch) { + if (!(this instanceof Pos)) { return new Pos(line, ch) } + this.line = line; this.ch = ch +} + +// Compare two positions, return 0 if they are the same, a negative +// number when a is less, and a positive number otherwise. +function cmp(a, b) { return a.line - b.line || a.ch - b.ch } + +function copyPos(x) {return Pos(x.line, x.ch)} +function maxPos(a, b) { return cmp(a, b) < 0 ? b : a } +function minPos(a, b) { return cmp(a, b) < 0 ? a : b } + +// Most of the external API clips given positions to make sure they +// actually exist within the document. +function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))} +function clipPos(doc, pos) { + if (pos.line < doc.first) { return Pos(doc.first, 0) } + var last = doc.first + doc.size - 1 + if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) } + return clipToLen(pos, getLine(doc, pos.line).text.length) +} +function clipToLen(pos, linelen) { + var ch = pos.ch + if (ch == null || ch > linelen) { return Pos(pos.line, linelen) } + else if (ch < 0) { return Pos(pos.line, 0) } + else { return pos } +} +function clipPosArray(doc, array) { + var out = [] + for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]) } + return out +} + +// Optimize some code when these features are not used. +var sawReadOnlySpans = false; +var sawCollapsedSpans = false; +function seeReadOnlySpans() { + sawReadOnlySpans = true +} + +function seeCollapsedSpans() { + sawCollapsedSpans = true +} + +// TEXTMARKER SPANS + +function MarkedSpan(marker, from, to) { + this.marker = marker + this.from = from; this.to = to +} + +// Search an array of spans for a span matching the given marker. +function getMarkedSpanFor(spans, marker) { + if (spans) { for (var i = 0; i < spans.length; ++i) { + var span = spans[i] + if (span.marker == marker) { return span } + } } +} +// Remove a span from an array, returning undefined if no spans are +// left (we don't store arrays for lines without spans). +function removeMarkedSpan(spans, span) { + var r + for (var i = 0; i < spans.length; ++i) + { if (spans[i] != span) { (r || (r = [])).push(spans[i]) } } + return r +} +// Add a span to a line. +function addMarkedSpan(line, span) { + line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span] + span.marker.attachLine(line) +} + +// Used for the algorithm that adjusts markers for a change in the +// document. These functions cut an array of spans at a given +// character position, returning an array of remaining chunks (or +// undefined if nothing remains). +function markedSpansBefore(old, startCh, isInsert) { + var nw + if (old) { for (var i = 0; i < old.length; ++i) { + var span = old[i], marker = span.marker + var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh) + if (startsBefore || span.from == startCh && marker.type == "bookmark" && (!isInsert || !span.marker.insertLeft)) { + var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh) + ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to)) + } + } } + return nw +} +function markedSpansAfter(old, endCh, isInsert) { + var nw + if (old) { for (var i = 0; i < old.length; ++i) { + var span = old[i], marker = span.marker + var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh) + if (endsAfter || span.from == endCh && marker.type == "bookmark" && (!isInsert || span.marker.insertLeft)) { + var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh) + ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh, + span.to == null ? null : span.to - endCh)) + } + } } + return nw +} + +// Given a change object, compute the new set of marker spans that +// cover the line in which the change took place. Removes spans +// entirely within the change, reconnects spans belonging to the +// same marker that appear on both sides of the change, and cuts off +// spans partially within the change. Returns an array of span +// arrays with one element for each line in (after) the change. +function stretchSpansOverChange(doc, change) { + if (change.full) { return null } + var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans + var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans + if (!oldFirst && !oldLast) { return null } + + var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0 + // Get the spans that 'stick out' on both sides + var first = markedSpansBefore(oldFirst, startCh, isInsert) + var last = markedSpansAfter(oldLast, endCh, isInsert) + + // Next, merge those two ends + var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0) + if (first) { + // Fix up .to properties of first + for (var i = 0; i < first.length; ++i) { + var span = first[i] + if (span.to == null) { + var found = getMarkedSpanFor(last, span.marker) + if (!found) { span.to = startCh } + else if (sameLine) { span.to = found.to == null ? null : found.to + offset } + } + } + } + if (last) { + // Fix up .from in last (or move them into first in case of sameLine) + for (var i$1 = 0; i$1 < last.length; ++i$1) { + var span$1 = last[i$1] + if (span$1.to != null) { span$1.to += offset } + if (span$1.from == null) { + var found$1 = getMarkedSpanFor(first, span$1.marker) + if (!found$1) { + span$1.from = offset + if (sameLine) { (first || (first = [])).push(span$1) } + } + } else { + span$1.from += offset + if (sameLine) { (first || (first = [])).push(span$1) } + } + } + } + // Make sure we didn't create any zero-length spans + if (first) { first = clearEmptySpans(first) } + if (last && last != first) { last = clearEmptySpans(last) } + + var newMarkers = [first] + if (!sameLine) { + // Fill gap with whole-line-spans + var gap = change.text.length - 2, gapMarkers + if (gap > 0 && first) + { for (var i$2 = 0; i$2 < first.length; ++i$2) + { if (first[i$2].to == null) + { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)) } } } + for (var i$3 = 0; i$3 < gap; ++i$3) + { newMarkers.push(gapMarkers) } + newMarkers.push(last) + } + return newMarkers +} + +// Remove spans that are empty and don't have a clearWhenEmpty +// option of false. +function clearEmptySpans(spans) { + for (var i = 0; i < spans.length; ++i) { + var span = spans[i] + if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) + { spans.splice(i--, 1) } + } + if (!spans.length) { return null } + return spans +} + +// Used to 'clip' out readOnly ranges when making a change. +function removeReadOnlyRanges(doc, from, to) { + var markers = null + doc.iter(from.line, to.line + 1, function (line) { + if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) { + var mark = line.markedSpans[i].marker + if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) + { (markers || (markers = [])).push(mark) } + } } + }) + if (!markers) { return null } + var parts = [{from: from, to: to}] + for (var i = 0; i < markers.length; ++i) { + var mk = markers[i], m = mk.find(0) + for (var j = 0; j < parts.length; ++j) { + var p = parts[j] + if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue } + var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to) + if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) + { newParts.push({from: p.from, to: m.from}) } + if (dto > 0 || !mk.inclusiveRight && !dto) + { newParts.push({from: m.to, to: p.to}) } + parts.splice.apply(parts, newParts) + j += newParts.length - 1 + } + } + return parts +} + +// Connect or disconnect spans from a line. +function detachMarkedSpans(line) { + var spans = line.markedSpans + if (!spans) { return } + for (var i = 0; i < spans.length; ++i) + { spans[i].marker.detachLine(line) } + line.markedSpans = null +} +function attachMarkedSpans(line, spans) { + if (!spans) { return } + for (var i = 0; i < spans.length; ++i) + { spans[i].marker.attachLine(line) } + line.markedSpans = spans +} + +// Helpers used when computing which overlapping collapsed span +// counts as the larger one. +function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 } +function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 } + +// Returns a number indicating which of two overlapping collapsed +// spans is larger (and thus includes the other). Falls back to +// comparing ids when the spans cover exactly the same range. +function compareCollapsedMarkers(a, b) { + var lenDiff = a.lines.length - b.lines.length + if (lenDiff != 0) { return lenDiff } + var aPos = a.find(), bPos = b.find() + var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b) + if (fromCmp) { return -fromCmp } + var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b) + if (toCmp) { return toCmp } + return b.id - a.id +} + +// Find out whether a line ends or starts in a collapsed span. If +// so, return the marker for that span. +function collapsedSpanAtSide(line, start) { + var sps = sawCollapsedSpans && line.markedSpans, found + if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) { + sp = sps[i] + if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && + (!found || compareCollapsedMarkers(found, sp.marker) < 0)) + { found = sp.marker } + } } + return found +} +function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) } +function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) } + +// Test whether there exists a collapsed span that partially +// overlaps (covers the start or end, but not both) of a new span. +// Such overlap is not allowed. +function conflictingCollapsedRange(doc, lineNo, from, to, marker) { + var line = getLine(doc, lineNo) + var sps = sawCollapsedSpans && line.markedSpans + if (sps) { for (var i = 0; i < sps.length; ++i) { + var sp = sps[i] + if (!sp.marker.collapsed) { continue } + var found = sp.marker.find(0) + var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker) + var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker) + if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue } + if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) || + fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0)) + { return true } + } } +} + +// A visual line is a line as drawn on the screen. Folding, for +// example, can cause multiple logical lines to appear on the same +// visual line. This finds the start of the visual line that the +// given line is part of (usually that is the line itself). +function visualLine(line) { + var merged + while (merged = collapsedSpanAtStart(line)) + { line = merged.find(-1, true).line } + return line +} + +// Returns an array of logical lines that continue the visual line +// started by the argument, or undefined if there are no such lines. +function visualLineContinued(line) { + var merged, lines + while (merged = collapsedSpanAtEnd(line)) { + line = merged.find(1, true).line + ;(lines || (lines = [])).push(line) + } + return lines +} + +// Get the line number of the start of the visual line that the +// given line number is part of. +function visualLineNo(doc, lineN) { + var line = getLine(doc, lineN), vis = visualLine(line) + if (line == vis) { return lineN } + return lineNo(vis) +} + +// Get the line number of the start of the next visual line after +// the given line. +function visualLineEndNo(doc, lineN) { + if (lineN > doc.lastLine()) { return lineN } + var line = getLine(doc, lineN), merged + if (!lineIsHidden(doc, line)) { return lineN } + while (merged = collapsedSpanAtEnd(line)) + { line = merged.find(1, true).line } + return lineNo(line) + 1 +} + +// Compute whether a line is hidden. Lines count as hidden when they +// are part of a visual line that starts with another line, or when +// they are entirely covered by collapsed, non-widget span. +function lineIsHidden(doc, line) { + var sps = sawCollapsedSpans && line.markedSpans + if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) { + sp = sps[i] + if (!sp.marker.collapsed) { continue } + if (sp.from == null) { return true } + if (sp.marker.widgetNode) { continue } + if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) + { return true } + } } +} +function lineIsHiddenInner(doc, line, span) { + if (span.to == null) { + var end = span.marker.find(1, true) + return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker)) + } + if (span.marker.inclusiveRight && span.to == line.text.length) + { return true } + for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) { + sp = line.markedSpans[i] + if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && + (sp.to == null || sp.to != span.from) && + (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && + lineIsHiddenInner(doc, line, sp)) { return true } + } +} + +// Find the height above the given line. +function heightAtLine(lineObj) { + lineObj = visualLine(lineObj) + + var h = 0, chunk = lineObj.parent + for (var i = 0; i < chunk.lines.length; ++i) { + var line = chunk.lines[i] + if (line == lineObj) { break } + else { h += line.height } + } + for (var p = chunk.parent; p; chunk = p, p = chunk.parent) { + for (var i$1 = 0; i$1 < p.children.length; ++i$1) { + var cur = p.children[i$1] + if (cur == chunk) { break } + else { h += cur.height } + } + } + return h +} + +// Compute the character length of a line, taking into account +// collapsed ranges (see markText) that might hide parts, and join +// other lines onto it. +function lineLength(line) { + if (line.height == 0) { return 0 } + var len = line.text.length, merged, cur = line + while (merged = collapsedSpanAtStart(cur)) { + var found = merged.find(0, true) + cur = found.from.line + len += found.from.ch - found.to.ch + } + cur = line + while (merged = collapsedSpanAtEnd(cur)) { + var found$1 = merged.find(0, true) + len -= cur.text.length - found$1.from.ch + cur = found$1.to.line + len += cur.text.length - found$1.to.ch + } + return len +} + +// Find the longest line in the document. +function findMaxLine(cm) { + var d = cm.display, doc = cm.doc + d.maxLine = getLine(doc, doc.first) + d.maxLineLength = lineLength(d.maxLine) + d.maxLineChanged = true + doc.iter(function (line) { + var len = lineLength(line) + if (len > d.maxLineLength) { + d.maxLineLength = len + d.maxLine = line + } + }) +} + +// BIDI HELPERS + +function iterateBidiSections(order, from, to, f) { + if (!order) { return f(from, to, "ltr") } + var found = false + for (var i = 0; i < order.length; ++i) { + var part = order[i] + if (part.from < to && part.to > from || from == to && part.to == from) { + f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? "rtl" : "ltr") + found = true + } + } + if (!found) { f(from, to, "ltr") } +} + +function bidiLeft(part) { return part.level % 2 ? part.to : part.from } +function bidiRight(part) { return part.level % 2 ? part.from : part.to } + +function lineLeft(line) { var order = getOrder(line); return order ? bidiLeft(order[0]) : 0 } +function lineRight(line) { + var order = getOrder(line) + if (!order) { return line.text.length } + return bidiRight(lst(order)) +} + +function compareBidiLevel(order, a, b) { + var linedir = order[0].level + if (a == linedir) { return true } + if (b == linedir) { return false } + return a < b +} + +var bidiOther = null +function getBidiPartAt(order, pos) { + var found + bidiOther = null + for (var i = 0; i < order.length; ++i) { + var cur = order[i] + if (cur.from < pos && cur.to > pos) { return i } + if ((cur.from == pos || cur.to == pos)) { + if (found == null) { + found = i + } else if (compareBidiLevel(order, cur.level, order[found].level)) { + if (cur.from != cur.to) { bidiOther = found } + return i + } else { + if (cur.from != cur.to) { bidiOther = i } + return found + } + } + } + return found +} + +function moveInLine(line, pos, dir, byUnit) { + if (!byUnit) { return pos + dir } + do { pos += dir } + while (pos > 0 && isExtendingChar(line.text.charAt(pos))) + return pos +} + +// This is needed in order to move 'visually' through bi-directional +// text -- i.e., pressing left should make the cursor go left, even +// when in RTL text. The tricky part is the 'jumps', where RTL and +// LTR text touch each other. This often requires the cursor offset +// to move more than one unit, in order to visually move one unit. +function moveVisually(line, start, dir, byUnit) { + var bidi = getOrder(line) + if (!bidi) { return moveLogically(line, start, dir, byUnit) } + var pos = getBidiPartAt(bidi, start), part = bidi[pos] + var target = moveInLine(line, start, part.level % 2 ? -dir : dir, byUnit) + + for (;;) { + if (target > part.from && target < part.to) { return target } + if (target == part.from || target == part.to) { + if (getBidiPartAt(bidi, target) == pos) { return target } + part = bidi[pos += dir] + return (dir > 0) == part.level % 2 ? part.to : part.from + } else { + part = bidi[pos += dir] + if (!part) { return null } + if ((dir > 0) == part.level % 2) + { target = moveInLine(line, part.to, -1, byUnit) } + else + { target = moveInLine(line, part.from, 1, byUnit) } + } + } +} + +function moveLogically(line, start, dir, byUnit) { + var target = start + dir + if (byUnit) { while (target > 0 && isExtendingChar(line.text.charAt(target))) { target += dir } } + return target < 0 || target > line.text.length ? null : target +} + +// Bidirectional ordering algorithm +// See http://unicode.org/reports/tr9/tr9-13.html for the algorithm +// that this (partially) implements. + +// One-char codes used for character types: +// L (L): Left-to-Right +// R (R): Right-to-Left +// r (AL): Right-to-Left Arabic +// 1 (EN): European Number +// + (ES): European Number Separator +// % (ET): European Number Terminator +// n (AN): Arabic Number +// , (CS): Common Number Separator +// m (NSM): Non-Spacing Mark +// b (BN): Boundary Neutral +// s (B): Paragraph Separator +// t (S): Segment Separator +// w (WS): Whitespace +// N (ON): Other Neutrals + +// Returns null if characters are ordered as they appear +// (left-to-right), or an array of sections ({from, to, level} +// objects) in the order in which they occur visually. +var bidiOrdering = (function() { + // Character types for codepoints 0 to 0xff + var lowTypes = "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN" + // Character types for codepoints 0x600 to 0x6f9 + var arabicTypes = "nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111" + function charType(code) { + if (code <= 0xf7) { return lowTypes.charAt(code) } + else if (0x590 <= code && code <= 0x5f4) { return "R" } + else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) } + else if (0x6ee <= code && code <= 0x8ac) { return "r" } + else if (0x2000 <= code && code <= 0x200b) { return "w" } + else if (code == 0x200c) { return "b" } + else { return "L" } + } + + var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/ + var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/ + // Browsers seem to always treat the boundaries of block elements as being L. + var outerType = "L" + + function BidiSpan(level, from, to) { + this.level = level + this.from = from; this.to = to + } + + return function(str) { + if (!bidiRE.test(str)) { return false } + var len = str.length, types = [] + for (var i = 0; i < len; ++i) + { types.push(charType(str.charCodeAt(i))) } + + // W1. Examine each non-spacing mark (NSM) in the level run, and + // change the type of the NSM to the type of the previous + // character. If the NSM is at the start of the level run, it will + // get the type of sor. + for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) { + var type = types[i$1] + if (type == "m") { types[i$1] = prev } + else { prev = type } + } + + // W2. Search backwards from each instance of a European number + // until the first strong type (R, L, AL, or sor) is found. If an + // AL is found, change the type of the European number to Arabic + // number. + // W3. Change all ALs to R. + for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) { + var type$1 = types[i$2] + if (type$1 == "1" && cur == "r") { types[i$2] = "n" } + else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == "r") { types[i$2] = "R" } } + } + + // W4. A single European separator between two European numbers + // changes to a European number. A single common separator between + // two numbers of the same type changes to that type. + for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) { + var type$2 = types[i$3] + if (type$2 == "+" && prev$1 == "1" && types[i$3+1] == "1") { types[i$3] = "1" } + else if (type$2 == "," && prev$1 == types[i$3+1] && + (prev$1 == "1" || prev$1 == "n")) { types[i$3] = prev$1 } + prev$1 = type$2 + } + + // W5. A sequence of European terminators adjacent to European + // numbers changes to all European numbers. + // W6. Otherwise, separators and terminators change to Other + // Neutral. + for (var i$4 = 0; i$4 < len; ++i$4) { + var type$3 = types[i$4] + if (type$3 == ",") { types[i$4] = "N" } + else if (type$3 == "%") { + var end = (void 0) + for (end = i$4 + 1; end < len && types[end] == "%"; ++end) {} + var replace = (i$4 && types[i$4-1] == "!") || (end < len && types[end] == "1") ? "1" : "N" + for (var j = i$4; j < end; ++j) { types[j] = replace } + i$4 = end - 1 + } + } + + // W7. Search backwards from each instance of a European number + // until the first strong type (R, L, or sor) is found. If an L is + // found, then change the type of the European number to L. + for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) { + var type$4 = types[i$5] + if (cur$1 == "L" && type$4 == "1") { types[i$5] = "L" } + else if (isStrong.test(type$4)) { cur$1 = type$4 } + } + + // N1. A sequence of neutrals takes the direction of the + // surrounding strong text if the text on both sides has the same + // direction. European and Arabic numbers act as if they were R in + // terms of their influence on neutrals. Start-of-level-run (sor) + // and end-of-level-run (eor) are used at level run boundaries. + // N2. Any remaining neutrals take the embedding direction. + for (var i$6 = 0; i$6 < len; ++i$6) { + if (isNeutral.test(types[i$6])) { + var end$1 = (void 0) + for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {} + var before = (i$6 ? types[i$6-1] : outerType) == "L" + var after = (end$1 < len ? types[end$1] : outerType) == "L" + var replace$1 = before || after ? "L" : "R" + for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1 } + i$6 = end$1 - 1 + } + } + + // Here we depart from the documented algorithm, in order to avoid + // building up an actual levels array. Since there are only three + // levels (0, 1, 2) in an implementation that doesn't take + // explicit embedding into account, we can build up the order on + // the fly, without following the level-based algorithm. + var order = [], m + for (var i$7 = 0; i$7 < len;) { + if (countsAsLeft.test(types[i$7])) { + var start = i$7 + for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {} + order.push(new BidiSpan(0, start, i$7)) + } else { + var pos = i$7, at = order.length + for (++i$7; i$7 < len && types[i$7] != "L"; ++i$7) {} + for (var j$2 = pos; j$2 < i$7;) { + if (countsAsNum.test(types[j$2])) { + if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)) } + var nstart = j$2 + for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {} + order.splice(at, 0, new BidiSpan(2, nstart, j$2)) + pos = j$2 + } else { ++j$2 } + } + if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)) } + } + } + if (order[0].level == 1 && (m = str.match(/^\s+/))) { + order[0].from = m[0].length + order.unshift(new BidiSpan(0, 0, m[0].length)) + } + if (lst(order).level == 1 && (m = str.match(/\s+$/))) { + lst(order).to -= m[0].length + order.push(new BidiSpan(0, len - m[0].length, len)) + } + if (order[0].level == 2) + { order.unshift(new BidiSpan(1, order[0].to, order[0].to)) } + if (order[0].level != lst(order).level) + { order.push(new BidiSpan(order[0].level, len, len)) } + + return order + } +})() + +// Get the bidi ordering for the given line (and cache it). Returns +// false for lines that are fully left-to-right, and an array of +// BidiSpan objects otherwise. +function getOrder(line) { + var order = line.order + if (order == null) { order = line.order = bidiOrdering(line.text) } + return order +} + +// EVENT HANDLING + +// Lightweight event framework. on/off also work on DOM nodes, +// registering native DOM handlers. + +var noHandlers = [] + +var on = function(emitter, type, f) { + if (emitter.addEventListener) { + emitter.addEventListener(type, f, false) + } else if (emitter.attachEvent) { + emitter.attachEvent("on" + type, f) + } else { + var map = emitter._handlers || (emitter._handlers = {}) + map[type] = (map[type] || noHandlers).concat(f) + } +} + +function getHandlers(emitter, type) { + return emitter._handlers && emitter._handlers[type] || noHandlers +} + +function off(emitter, type, f) { + if (emitter.removeEventListener) { + emitter.removeEventListener(type, f, false) + } else if (emitter.detachEvent) { + emitter.detachEvent("on" + type, f) + } else { + var map = emitter._handlers, arr = map && map[type] + if (arr) { + var index = indexOf(arr, f) + if (index > -1) + { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)) } + } + } +} + +function signal(emitter, type /*, values...*/) { + var handlers = getHandlers(emitter, type) + if (!handlers.length) { return } + var args = Array.prototype.slice.call(arguments, 2) + for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args) } +} + +// The DOM events that CodeMirror handles can be overridden by +// registering a (non-DOM) handler on the editor for the event name, +// and preventDefault-ing the event in that handler. +function signalDOMEvent(cm, e, override) { + if (typeof e == "string") + { e = {type: e, preventDefault: function() { this.defaultPrevented = true }} } + signal(cm, override || e.type, cm, e) + return e_defaultPrevented(e) || e.codemirrorIgnore +} + +function signalCursorActivity(cm) { + var arr = cm._handlers && cm._handlers.cursorActivity + if (!arr) { return } + var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []) + for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1) + { set.push(arr[i]) } } +} + +function hasHandler(emitter, type) { + return getHandlers(emitter, type).length > 0 +} + +// Add on and off methods to a constructor's prototype, to make +// registering events on such objects more convenient. +function eventMixin(ctor) { + ctor.prototype.on = function(type, f) {on(this, type, f)} + ctor.prototype.off = function(type, f) {off(this, type, f)} +} + +// Due to the fact that we still support jurassic IE versions, some +// compatibility wrappers are needed. + +function e_preventDefault(e) { + if (e.preventDefault) { e.preventDefault() } + else { e.returnValue = false } +} +function e_stopPropagation(e) { + if (e.stopPropagation) { e.stopPropagation() } + else { e.cancelBubble = true } +} +function e_defaultPrevented(e) { + return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false +} +function e_stop(e) {e_preventDefault(e); e_stopPropagation(e)} + +function e_target(e) {return e.target || e.srcElement} +function e_button(e) { + var b = e.which + if (b == null) { + if (e.button & 1) { b = 1 } + else if (e.button & 2) { b = 3 } + else if (e.button & 4) { b = 2 } + } + if (mac && e.ctrlKey && b == 1) { b = 3 } + return b +} + +// Detect drag-and-drop +var dragAndDrop = function() { + // There is *some* kind of drag-and-drop support in IE6-8, but I + // couldn't get it to work yet. + if (ie && ie_version < 9) { return false } + var div = elt('div') + return "draggable" in div || "dragDrop" in div +}() + +var zwspSupported +function zeroWidthElement(measure) { + if (zwspSupported == null) { + var test = elt("span", "\u200b") + removeChildrenAndAdd(measure, elt("span", [test, document.createTextNode("x")])) + if (measure.firstChild.offsetHeight != 0) + { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8) } + } + var node = zwspSupported ? elt("span", "\u200b") : + elt("span", "\u00a0", null, "display: inline-block; width: 1px; margin-right: -1px") + node.setAttribute("cm-text", "") + return node +} + +// Feature-detect IE's crummy client rect reporting for bidi text +var badBidiRects +function hasBadBidiRects(measure) { + if (badBidiRects != null) { return badBidiRects } + var txt = removeChildrenAndAdd(measure, document.createTextNode("A\u062eA")) + var r0 = range(txt, 0, 1).getBoundingClientRect() + var r1 = range(txt, 1, 2).getBoundingClientRect() + removeChildren(measure) + if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780) + return badBidiRects = (r1.right - r0.right < 3) +} + +// See if "".split is the broken IE version, if so, provide an +// alternative way to split lines. +var splitLinesAuto = "\n\nb".split(/\n/).length != 3 ? function (string) { + var pos = 0, result = [], l = string.length + while (pos <= l) { + var nl = string.indexOf("\n", pos) + if (nl == -1) { nl = string.length } + var line = string.slice(pos, string.charAt(nl - 1) == "\r" ? nl - 1 : nl) + var rt = line.indexOf("\r") + if (rt != -1) { + result.push(line.slice(0, rt)) + pos += rt + 1 + } else { + result.push(line) + pos = nl + 1 + } + } + return result +} : function (string) { return string.split(/\r\n?|\n/); } + +var hasSelection = window.getSelection ? function (te) { + try { return te.selectionStart != te.selectionEnd } + catch(e) { return false } +} : function (te) { + var range + try {range = te.ownerDocument.selection.createRange()} + catch(e) {} + if (!range || range.parentElement() != te) { return false } + return range.compareEndPoints("StartToEnd", range) != 0 +} + +var hasCopyEvent = (function () { + var e = elt("div") + if ("oncopy" in e) { return true } + e.setAttribute("oncopy", "return;") + return typeof e.oncopy == "function" +})() + +var badZoomedRects = null +function hasBadZoomedRects(measure) { + if (badZoomedRects != null) { return badZoomedRects } + var node = removeChildrenAndAdd(measure, elt("span", "x")) + var normal = node.getBoundingClientRect() + var fromRange = range(node, 0, 1).getBoundingClientRect() + return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1 +} + +var modes = {}; +var mimeModes = {}; +// Extra arguments are stored as the mode's dependencies, which is +// used by (legacy) mechanisms like loadmode.js to automatically +// load a mode. (Preferred mechanism is the require/define calls.) +function defineMode(name, mode) { + if (arguments.length > 2) + { mode.dependencies = Array.prototype.slice.call(arguments, 2) } + modes[name] = mode +} + +function defineMIME(mime, spec) { + mimeModes[mime] = spec +} + +// Given a MIME type, a {name, ...options} config object, or a name +// string, return a mode config object. +function resolveMode(spec) { + if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) { + spec = mimeModes[spec] + } else if (spec && typeof spec.name == "string" && mimeModes.hasOwnProperty(spec.name)) { + var found = mimeModes[spec.name] + if (typeof found == "string") { found = {name: found} } + spec = createObj(found, spec) + spec.name = found.name + } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+xml$/.test(spec)) { + return resolveMode("application/xml") + } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+json$/.test(spec)) { + return resolveMode("application/json") + } + if (typeof spec == "string") { return {name: spec} } + else { return spec || {name: "null"} } +} + +// Given a mode spec (anything that resolveMode accepts), find and +// initialize an actual mode object. +function getMode(options, spec) { + spec = resolveMode(spec) + var mfactory = modes[spec.name] + if (!mfactory) { return getMode(options, "text/plain") } + var modeObj = mfactory(options, spec) + if (modeExtensions.hasOwnProperty(spec.name)) { + var exts = modeExtensions[spec.name] + for (var prop in exts) { + if (!exts.hasOwnProperty(prop)) { continue } + if (modeObj.hasOwnProperty(prop)) { modeObj["_" + prop] = modeObj[prop] } + modeObj[prop] = exts[prop] + } + } + modeObj.name = spec.name + if (spec.helperType) { modeObj.helperType = spec.helperType } + if (spec.modeProps) { for (var prop$1 in spec.modeProps) + { modeObj[prop$1] = spec.modeProps[prop$1] } } + + return modeObj +} + +// This can be used to attach properties to mode objects from +// outside the actual mode definition. +var modeExtensions = {} +function extendMode(mode, properties) { + var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {}) + copyObj(properties, exts) +} + +function copyState(mode, state) { + if (state === true) { return state } + if (mode.copyState) { return mode.copyState(state) } + var nstate = {} + for (var n in state) { + var val = state[n] + if (val instanceof Array) { val = val.concat([]) } + nstate[n] = val + } + return nstate +} + +// Given a mode and a state (for that mode), find the inner mode and +// state at the position that the state refers to. +function innerMode(mode, state) { + var info + while (mode.innerMode) { + info = mode.innerMode(state) + if (!info || info.mode == mode) { break } + state = info.state + mode = info.mode + } + return info || {mode: mode, state: state} +} + +function startState(mode, a1, a2) { + return mode.startState ? mode.startState(a1, a2) : true +} + +// STRING STREAM + +// Fed to the mode parsers, provides helper functions to make +// parsers more succinct. + +var StringStream = function(string, tabSize) { + this.pos = this.start = 0 + this.string = string + this.tabSize = tabSize || 8 + this.lastColumnPos = this.lastColumnValue = 0 + this.lineStart = 0 +} + +StringStream.prototype = { + eol: function() {return this.pos >= this.string.length}, + sol: function() {return this.pos == this.lineStart}, + peek: function() {return this.string.charAt(this.pos) || undefined}, + next: function() { + if (this.pos < this.string.length) + { return this.string.charAt(this.pos++) } + }, + eat: function(match) { + var ch = this.string.charAt(this.pos) + var ok + if (typeof match == "string") { ok = ch == match } + else { ok = ch && (match.test ? match.test(ch) : match(ch)) } + if (ok) {++this.pos; return ch} + }, + eatWhile: function(match) { + var start = this.pos + while (this.eat(match)){} + return this.pos > start + }, + eatSpace: function() { + var this$1 = this; + + var start = this.pos + while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) { ++this$1.pos } + return this.pos > start + }, + skipToEnd: function() {this.pos = this.string.length}, + skipTo: function(ch) { + var found = this.string.indexOf(ch, this.pos) + if (found > -1) {this.pos = found; return true} + }, + backUp: function(n) {this.pos -= n}, + column: function() { + if (this.lastColumnPos < this.start) { + this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue) + this.lastColumnPos = this.start + } + return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0) + }, + indentation: function() { + return countColumn(this.string, null, this.tabSize) - + (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0) + }, + match: function(pattern, consume, caseInsensitive) { + if (typeof pattern == "string") { + var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; } + var substr = this.string.substr(this.pos, pattern.length) + if (cased(substr) == cased(pattern)) { + if (consume !== false) { this.pos += pattern.length } + return true + } + } else { + var match = this.string.slice(this.pos).match(pattern) + if (match && match.index > 0) { return null } + if (match && consume !== false) { this.pos += match[0].length } + return match + } + }, + current: function(){return this.string.slice(this.start, this.pos)}, + hideFirstChars: function(n, inner) { + this.lineStart += n + try { return inner() } + finally { this.lineStart -= n } + } +} + +// Compute a style array (an array starting with a mode generation +// -- for invalidation -- followed by pairs of end positions and +// style strings), which is used to highlight the tokens on the +// line. +function highlightLine(cm, line, state, forceToEnd) { + // A styles array always starts with a number identifying the + // mode/overlays that it is based on (for easy invalidation). + var st = [cm.state.modeGen], lineClasses = {} + // Compute the base array of styles + runMode(cm, line.text, cm.doc.mode, state, function (end, style) { return st.push(end, style); }, + lineClasses, forceToEnd) + + // Run overlays, adjust style array. + var loop = function ( o ) { + var overlay = cm.state.overlays[o], i = 1, at = 0 + runMode(cm, line.text, overlay.mode, true, function (end, style) { + var start = i + // Ensure there's a token end at the current position, and that i points at it + while (at < end) { + var i_end = st[i] + if (i_end > end) + { st.splice(i, 1, end, st[i+1], i_end) } + i += 2 + at = Math.min(end, i_end) + } + if (!style) { return } + if (overlay.opaque) { + st.splice(start, i - start, end, "overlay " + style) + i = start + 2 + } else { + for (; start < i; start += 2) { + var cur = st[start+1] + st[start+1] = (cur ? cur + " " : "") + "overlay " + style + } + } + }, lineClasses) + }; + + for (var o = 0; o < cm.state.overlays.length; ++o) loop( o ); + + return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null} +} + +function getLineStyles(cm, line, updateFrontier) { + if (!line.styles || line.styles[0] != cm.state.modeGen) { + var state = getStateBefore(cm, lineNo(line)) + var result = highlightLine(cm, line, line.text.length > cm.options.maxHighlightLength ? copyState(cm.doc.mode, state) : state) + line.stateAfter = state + line.styles = result.styles + if (result.classes) { line.styleClasses = result.classes } + else if (line.styleClasses) { line.styleClasses = null } + if (updateFrontier === cm.doc.frontier) { cm.doc.frontier++ } + } + return line.styles +} + +function getStateBefore(cm, n, precise) { + var doc = cm.doc, display = cm.display + if (!doc.mode.startState) { return true } + var pos = findStartLine(cm, n, precise), state = pos > doc.first && getLine(doc, pos-1).stateAfter + if (!state) { state = startState(doc.mode) } + else { state = copyState(doc.mode, state) } + doc.iter(pos, n, function (line) { + processLine(cm, line.text, state) + var save = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo + line.stateAfter = save ? copyState(doc.mode, state) : null + ++pos + }) + if (precise) { doc.frontier = pos } + return state +} + +// Lightweight form of highlight -- proceed over this line and +// update state, but don't save a style array. Used for lines that +// aren't currently visible. +function processLine(cm, text, state, startAt) { + var mode = cm.doc.mode + var stream = new StringStream(text, cm.options.tabSize) + stream.start = stream.pos = startAt || 0 + if (text == "") { callBlankLine(mode, state) } + while (!stream.eol()) { + readToken(mode, stream, state) + stream.start = stream.pos + } +} + +function callBlankLine(mode, state) { + if (mode.blankLine) { return mode.blankLine(state) } + if (!mode.innerMode) { return } + var inner = innerMode(mode, state) + if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) } +} + +function readToken(mode, stream, state, inner) { + for (var i = 0; i < 10; i++) { + if (inner) { inner[0] = innerMode(mode, state).mode } + var style = mode.token(stream, state) + if (stream.pos > stream.start) { return style } + } + throw new Error("Mode " + mode.name + " failed to advance stream.") +} + +// Utility for getTokenAt and getLineTokens +function takeToken(cm, pos, precise, asArray) { + var getObj = function (copy) { return ({ + start: stream.start, end: stream.pos, + string: stream.current(), + type: style || null, + state: copy ? copyState(doc.mode, state) : state + }); } + + var doc = cm.doc, mode = doc.mode, style + pos = clipPos(doc, pos) + var line = getLine(doc, pos.line), state = getStateBefore(cm, pos.line, precise) + var stream = new StringStream(line.text, cm.options.tabSize), tokens + if (asArray) { tokens = [] } + while ((asArray || stream.pos < pos.ch) && !stream.eol()) { + stream.start = stream.pos + style = readToken(mode, stream, state) + if (asArray) { tokens.push(getObj(true)) } + } + return asArray ? tokens : getObj() +} + +function extractLineClasses(type, output) { + if (type) { for (;;) { + var lineClass = type.match(/(?:^|\s+)line-(background-)?(\S+)/) + if (!lineClass) { break } + type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length) + var prop = lineClass[1] ? "bgClass" : "textClass" + if (output[prop] == null) + { output[prop] = lineClass[2] } + else if (!(new RegExp("(?:^|\s)" + lineClass[2] + "(?:$|\s)")).test(output[prop])) + { output[prop] += " " + lineClass[2] } + } } + return type +} + +// Run the given mode's parser over a line, calling f for each token. +function runMode(cm, text, mode, state, f, lineClasses, forceToEnd) { + var flattenSpans = mode.flattenSpans + if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans } + var curStart = 0, curStyle = null + var stream = new StringStream(text, cm.options.tabSize), style + var inner = cm.options.addModeClass && [null] + if (text == "") { extractLineClasses(callBlankLine(mode, state), lineClasses) } + while (!stream.eol()) { + if (stream.pos > cm.options.maxHighlightLength) { + flattenSpans = false + if (forceToEnd) { processLine(cm, text, state, stream.pos) } + stream.pos = text.length + style = null + } else { + style = extractLineClasses(readToken(mode, stream, state, inner), lineClasses) + } + if (inner) { + var mName = inner[0].name + if (mName) { style = "m-" + (style ? mName + " " + style : mName) } + } + if (!flattenSpans || curStyle != style) { + while (curStart < stream.start) { + curStart = Math.min(stream.start, curStart + 5000) + f(curStart, curStyle) + } + curStyle = style + } + stream.start = stream.pos + } + while (curStart < stream.pos) { + // Webkit seems to refuse to render text nodes longer than 57444 + // characters, and returns inaccurate measurements in nodes + // starting around 5000 chars. + var pos = Math.min(stream.pos, curStart + 5000) + f(pos, curStyle) + curStart = pos + } +} + +// Finds the line to start with when starting a parse. Tries to +// find a line with a stateAfter, so that it can start with a +// valid state. If that fails, it returns the line with the +// smallest indentation, which tends to need the least context to +// parse correctly. +function findStartLine(cm, n, precise) { + var minindent, minline, doc = cm.doc + var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100) + for (var search = n; search > lim; --search) { + if (search <= doc.first) { return doc.first } + var line = getLine(doc, search - 1) + if (line.stateAfter && (!precise || search <= doc.frontier)) { return search } + var indented = countColumn(line.text, null, cm.options.tabSize) + if (minline == null || minindent > indented) { + minline = search - 1 + minindent = indented + } + } + return minline +} + +// LINE DATA STRUCTURE + +// Line objects. These hold state related to a line, including +// highlighting info (the styles array). +function Line(text, markedSpans, estimateHeight) { + this.text = text + attachMarkedSpans(this, markedSpans) + this.height = estimateHeight ? estimateHeight(this) : 1 +} +eventMixin(Line) +Line.prototype.lineNo = function() { return lineNo(this) } + +// Change the content (text, markers) of a line. Automatically +// invalidates cached information and tries to re-estimate the +// line's height. +function updateLine(line, text, markedSpans, estimateHeight) { + line.text = text + if (line.stateAfter) { line.stateAfter = null } + if (line.styles) { line.styles = null } + if (line.order != null) { line.order = null } + detachMarkedSpans(line) + attachMarkedSpans(line, markedSpans) + var estHeight = estimateHeight ? estimateHeight(line) : 1 + if (estHeight != line.height) { updateLineHeight(line, estHeight) } +} + +// Detach a line from the document tree and its markers. +function cleanUpLine(line) { + line.parent = null + detachMarkedSpans(line) +} + +// Convert a style as returned by a mode (either null, or a string +// containing one or more styles) to a CSS style. This is cached, +// and also looks for line-wide styles. +var styleToClassCache = {}; +var styleToClassCacheWithMode = {}; +function interpretTokenStyle(style, options) { + if (!style || /^\s*$/.test(style)) { return null } + var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache + return cache[style] || + (cache[style] = style.replace(/\S+/g, "cm-$&")) +} + +// Render the DOM representation of the text of a line. Also builds +// up a 'line map', which points at the DOM nodes that represent +// specific stretches of text, and is used by the measuring code. +// The returned object contains the DOM node, this map, and +// information about line-wide styles that were set by the mode. +function buildLineContent(cm, lineView) { + // The padding-right forces the element to have a 'border', which + // is needed on Webkit to be able to get line-level bounding + // rectangles for it (in measureChar). + var content = elt("span", null, null, webkit ? "padding-right: .1px" : null) + var builder = {pre: elt("pre", [content], "CodeMirror-line"), content: content, + col: 0, pos: 0, cm: cm, + trailingSpace: false, + splitSpaces: (ie || webkit) && cm.getOption("lineWrapping")} + // hide from accessibility tree + content.setAttribute("role", "presentation") + builder.pre.setAttribute("role", "presentation") + lineView.measure = {} + + // Iterate over the logical lines that make up this visual line. + for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) { + var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0) + builder.pos = 0 + builder.addToken = buildToken + // Optionally wire in some hacks into the token-rendering + // algorithm, to deal with browser quirks. + if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line))) + { builder.addToken = buildTokenBadBidi(builder.addToken, order) } + builder.map = [] + var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line) + insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate)) + if (line.styleClasses) { + if (line.styleClasses.bgClass) + { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || "") } + if (line.styleClasses.textClass) + { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || "") } + } + + // Ensure at least a single node is present, for measuring. + if (builder.map.length == 0) + { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))) } + + // Store the map and a cache object for the current logical line + if (i == 0) { + lineView.measure.map = builder.map + lineView.measure.cache = {} + } else { + ;(lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map) + ;(lineView.measure.caches || (lineView.measure.caches = [])).push({}) + } + } + + // See issue #2901 + if (webkit) { + var last = builder.content.lastChild + if (/\bcm-tab\b/.test(last.className) || (last.querySelector && last.querySelector(".cm-tab"))) + { builder.content.className = "cm-tab-wrap-hack" } + } + + signal(cm, "renderLine", cm, lineView.line, builder.pre) + if (builder.pre.className) + { builder.textClass = joinClasses(builder.pre.className, builder.textClass || "") } + + return builder +} + +function defaultSpecialCharPlaceholder(ch) { + var token = elt("span", "\u2022", "cm-invalidchar") + token.title = "\\u" + ch.charCodeAt(0).toString(16) + token.setAttribute("aria-label", token.title) + return token +} + +// Build up the DOM representation for a single token, and add it to +// the line map. Takes care to render special characters separately. +function buildToken(builder, text, style, startStyle, endStyle, title, css) { + if (!text) { return } + var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text + var special = builder.cm.state.specialChars, mustWrap = false + var content + if (!special.test(text)) { + builder.col += text.length + content = document.createTextNode(displayText) + builder.map.push(builder.pos, builder.pos + text.length, content) + if (ie && ie_version < 9) { mustWrap = true } + builder.pos += text.length + } else { + content = document.createDocumentFragment() + var pos = 0 + while (true) { + special.lastIndex = pos + var m = special.exec(text) + var skipped = m ? m.index - pos : text.length - pos + if (skipped) { + var txt = document.createTextNode(displayText.slice(pos, pos + skipped)) + if (ie && ie_version < 9) { content.appendChild(elt("span", [txt])) } + else { content.appendChild(txt) } + builder.map.push(builder.pos, builder.pos + skipped, txt) + builder.col += skipped + builder.pos += skipped + } + if (!m) { break } + pos += skipped + 1 + var txt$1 = (void 0) + if (m[0] == "\t") { + var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize + txt$1 = content.appendChild(elt("span", spaceStr(tabWidth), "cm-tab")) + txt$1.setAttribute("role", "presentation") + txt$1.setAttribute("cm-text", "\t") + builder.col += tabWidth + } else if (m[0] == "\r" || m[0] == "\n") { + txt$1 = content.appendChild(elt("span", m[0] == "\r" ? "\u240d" : "\u2424", "cm-invalidchar")) + txt$1.setAttribute("cm-text", m[0]) + builder.col += 1 + } else { + txt$1 = builder.cm.options.specialCharPlaceholder(m[0]) + txt$1.setAttribute("cm-text", m[0]) + if (ie && ie_version < 9) { content.appendChild(elt("span", [txt$1])) } + else { content.appendChild(txt$1) } + builder.col += 1 + } + builder.map.push(builder.pos, builder.pos + 1, txt$1) + builder.pos++ + } + } + builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32 + if (style || startStyle || endStyle || mustWrap || css) { + var fullStyle = style || "" + if (startStyle) { fullStyle += startStyle } + if (endStyle) { fullStyle += endStyle } + var token = elt("span", [content], fullStyle, css) + if (title) { token.title = title } + return builder.content.appendChild(token) + } + builder.content.appendChild(content) +} + +function splitSpaces(text, trailingBefore) { + if (text.length > 1 && !/ /.test(text)) { return text } + var spaceBefore = trailingBefore, result = "" + for (var i = 0; i < text.length; i++) { + var ch = text.charAt(i) + if (ch == " " && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32)) + { ch = "\u00a0" } + result += ch + spaceBefore = ch == " " + } + return result +} + +// Work around nonsense dimensions being reported for stretches of +// right-to-left text. +function buildTokenBadBidi(inner, order) { + return function (builder, text, style, startStyle, endStyle, title, css) { + style = style ? style + " cm-force-border" : "cm-force-border" + var start = builder.pos, end = start + text.length + for (;;) { + // Find the part that overlaps with the start of this text + var part = (void 0) + for (var i = 0; i < order.length; i++) { + part = order[i] + if (part.to > start && part.from <= start) { break } + } + if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, title, css) } + inner(builder, text.slice(0, part.to - start), style, startStyle, null, title, css) + startStyle = null + text = text.slice(part.to - start) + start = part.to + } + } +} + +function buildCollapsedSpan(builder, size, marker, ignoreWidget) { + var widget = !ignoreWidget && marker.widgetNode + if (widget) { builder.map.push(builder.pos, builder.pos + size, widget) } + if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) { + if (!widget) + { widget = builder.content.appendChild(document.createElement("span")) } + widget.setAttribute("cm-marker", marker.id) + } + if (widget) { + builder.cm.display.input.setUneditable(widget) + builder.content.appendChild(widget) + } + builder.pos += size + builder.trailingSpace = false +} + +// Outputs a number of spans to make up a line, taking highlighting +// and marked text into account. +function insertLineContent(line, builder, styles) { + var spans = line.markedSpans, allText = line.text, at = 0 + if (!spans) { + for (var i$1 = 1; i$1 < styles.length; i$1+=2) + { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)) } + return + } + + var len = allText.length, pos = 0, i = 1, text = "", style, css + var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, title, collapsed + for (;;) { + if (nextChange == pos) { // Update current marker set + spanStyle = spanEndStyle = spanStartStyle = title = css = "" + collapsed = null; nextChange = Infinity + var foundBookmarks = [], endStyles = (void 0) + for (var j = 0; j < spans.length; ++j) { + var sp = spans[j], m = sp.marker + if (m.type == "bookmark" && sp.from == pos && m.widgetNode) { + foundBookmarks.push(m) + } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) { + if (sp.to != null && sp.to != pos && nextChange > sp.to) { + nextChange = sp.to + spanEndStyle = "" + } + if (m.className) { spanStyle += " " + m.className } + if (m.css) { css = (css ? css + ";" : "") + m.css } + if (m.startStyle && sp.from == pos) { spanStartStyle += " " + m.startStyle } + if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to) } + if (m.title && !title) { title = m.title } + if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) + { collapsed = sp } + } else if (sp.from > pos && nextChange > sp.from) { + nextChange = sp.from + } + } + if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2) + { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += " " + endStyles[j$1] } } } + + if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2) + { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]) } } + if (collapsed && (collapsed.from || 0) == pos) { + buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, + collapsed.marker, collapsed.from == null) + if (collapsed.to == null) { return } + if (collapsed.to == pos) { collapsed = false } + } + } + if (pos >= len) { break } + + var upto = Math.min(len, nextChange) + while (true) { + if (text) { + var end = pos + text.length + if (!collapsed) { + var tokenText = end > upto ? text.slice(0, upto - pos) : text + builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, + spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : "", title, css) + } + if (end >= upto) {text = text.slice(upto - pos); pos = upto; break} + pos = end + spanStartStyle = "" + } + text = allText.slice(at, at = styles[i++]) + style = interpretTokenStyle(styles[i++], builder.cm.options) + } + } +} + + +// These objects are used to represent the visible (currently drawn) +// part of the document. A LineView may correspond to multiple +// logical lines, if those are connected by collapsed ranges. +function LineView(doc, line, lineN) { + // The starting line + this.line = line + // Continuing lines, if any + this.rest = visualLineContinued(line) + // Number of logical lines in this visual line + this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1 + this.node = this.text = null + this.hidden = lineIsHidden(doc, line) +} + +// Create a range of LineView objects for the given lines. +function buildViewArray(cm, from, to) { + var array = [], nextPos + for (var pos = from; pos < to; pos = nextPos) { + var view = new LineView(cm.doc, getLine(cm.doc, pos), pos) + nextPos = pos + view.size + array.push(view) + } + return array +} + +var operationGroup = null + +function pushOperation(op) { + if (operationGroup) { + operationGroup.ops.push(op) + } else { + op.ownsGroup = operationGroup = { + ops: [op], + delayedCallbacks: [] + } + } +} + +function fireCallbacksForOps(group) { + // Calls delayed callbacks and cursorActivity handlers until no + // new ones appear + var callbacks = group.delayedCallbacks, i = 0 + do { + for (; i < callbacks.length; i++) + { callbacks[i].call(null) } + for (var j = 0; j < group.ops.length; j++) { + var op = group.ops[j] + if (op.cursorActivityHandlers) + { while (op.cursorActivityCalled < op.cursorActivityHandlers.length) + { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm) } } + } + } while (i < callbacks.length) +} + +function finishOperation(op, endCb) { + var group = op.ownsGroup + if (!group) { return } + + try { fireCallbacksForOps(group) } + finally { + operationGroup = null + endCb(group) + } +} + +var orphanDelayedCallbacks = null + +// Often, we want to signal events at a point where we are in the +// middle of some work, but don't want the handler to start calling +// other methods on the editor, which might be in an inconsistent +// state or simply not expect any other events to happen. +// signalLater looks whether there are any handlers, and schedules +// them to be executed when the last operation ends, or, if no +// operation is active, when a timeout fires. +function signalLater(emitter, type /*, values...*/) { + var arr = getHandlers(emitter, type) + if (!arr.length) { return } + var args = Array.prototype.slice.call(arguments, 2), list + if (operationGroup) { + list = operationGroup.delayedCallbacks + } else if (orphanDelayedCallbacks) { + list = orphanDelayedCallbacks + } else { + list = orphanDelayedCallbacks = [] + setTimeout(fireOrphanDelayed, 0) + } + var loop = function ( i ) { + list.push(function () { return arr[i].apply(null, args); }) + }; + + for (var i = 0; i < arr.length; ++i) + loop( i ); +} + +function fireOrphanDelayed() { + var delayed = orphanDelayedCallbacks + orphanDelayedCallbacks = null + for (var i = 0; i < delayed.length; ++i) { delayed[i]() } +} + +// When an aspect of a line changes, a string is added to +// lineView.changes. This updates the relevant part of the line's +// DOM structure. +function updateLineForChanges(cm, lineView, lineN, dims) { + for (var j = 0; j < lineView.changes.length; j++) { + var type = lineView.changes[j] + if (type == "text") { updateLineText(cm, lineView) } + else if (type == "gutter") { updateLineGutter(cm, lineView, lineN, dims) } + else if (type == "class") { updateLineClasses(lineView) } + else if (type == "widget") { updateLineWidgets(cm, lineView, dims) } + } + lineView.changes = null +} + +// Lines with gutter elements, widgets or a background class need to +// be wrapped, and have the extra elements added to the wrapper div +function ensureLineWrapped(lineView) { + if (lineView.node == lineView.text) { + lineView.node = elt("div", null, null, "position: relative") + if (lineView.text.parentNode) + { lineView.text.parentNode.replaceChild(lineView.node, lineView.text) } + lineView.node.appendChild(lineView.text) + if (ie && ie_version < 8) { lineView.node.style.zIndex = 2 } + } + return lineView.node +} + +function updateLineBackground(lineView) { + var cls = lineView.bgClass ? lineView.bgClass + " " + (lineView.line.bgClass || "") : lineView.line.bgClass + if (cls) { cls += " CodeMirror-linebackground" } + if (lineView.background) { + if (cls) { lineView.background.className = cls } + else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null } + } else if (cls) { + var wrap = ensureLineWrapped(lineView) + lineView.background = wrap.insertBefore(elt("div", null, cls), wrap.firstChild) + } +} + +// Wrapper around buildLineContent which will reuse the structure +// in display.externalMeasured when possible. +function getLineContent(cm, lineView) { + var ext = cm.display.externalMeasured + if (ext && ext.line == lineView.line) { + cm.display.externalMeasured = null + lineView.measure = ext.measure + return ext.built + } + return buildLineContent(cm, lineView) +} + +// Redraw the line's text. Interacts with the background and text +// classes because the mode may output tokens that influence these +// classes. +function updateLineText(cm, lineView) { + var cls = lineView.text.className + var built = getLineContent(cm, lineView) + if (lineView.text == lineView.node) { lineView.node = built.pre } + lineView.text.parentNode.replaceChild(built.pre, lineView.text) + lineView.text = built.pre + if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) { + lineView.bgClass = built.bgClass + lineView.textClass = built.textClass + updateLineClasses(lineView) + } else if (cls) { + lineView.text.className = cls + } +} + +function updateLineClasses(lineView) { + updateLineBackground(lineView) + if (lineView.line.wrapClass) + { ensureLineWrapped(lineView).className = lineView.line.wrapClass } + else if (lineView.node != lineView.text) + { lineView.node.className = "" } + var textClass = lineView.textClass ? lineView.textClass + " " + (lineView.line.textClass || "") : lineView.line.textClass + lineView.text.className = textClass || "" +} + +function updateLineGutter(cm, lineView, lineN, dims) { + if (lineView.gutter) { + lineView.node.removeChild(lineView.gutter) + lineView.gutter = null + } + if (lineView.gutterBackground) { + lineView.node.removeChild(lineView.gutterBackground) + lineView.gutterBackground = null + } + if (lineView.line.gutterClass) { + var wrap = ensureLineWrapped(lineView) + lineView.gutterBackground = elt("div", null, "CodeMirror-gutter-background " + lineView.line.gutterClass, + ("left: " + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px; width: " + (dims.gutterTotalWidth) + "px")) + wrap.insertBefore(lineView.gutterBackground, lineView.text) + } + var markers = lineView.line.gutterMarkers + if (cm.options.lineNumbers || markers) { + var wrap$1 = ensureLineWrapped(lineView) + var gutterWrap = lineView.gutter = elt("div", null, "CodeMirror-gutter-wrapper", ("left: " + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px")) + cm.display.input.setUneditable(gutterWrap) + wrap$1.insertBefore(gutterWrap, lineView.text) + if (lineView.line.gutterClass) + { gutterWrap.className += " " + lineView.line.gutterClass } + if (cm.options.lineNumbers && (!markers || !markers["CodeMirror-linenumbers"])) + { lineView.lineNumber = gutterWrap.appendChild( + elt("div", lineNumberFor(cm.options, lineN), + "CodeMirror-linenumber CodeMirror-gutter-elt", + ("left: " + (dims.gutterLeft["CodeMirror-linenumbers"]) + "px; width: " + (cm.display.lineNumInnerWidth) + "px"))) } + if (markers) { for (var k = 0; k < cm.options.gutters.length; ++k) { + var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id] + if (found) + { gutterWrap.appendChild(elt("div", [found], "CodeMirror-gutter-elt", + ("left: " + (dims.gutterLeft[id]) + "px; width: " + (dims.gutterWidth[id]) + "px"))) } + } } + } +} + +function updateLineWidgets(cm, lineView, dims) { + if (lineView.alignable) { lineView.alignable = null } + for (var node = lineView.node.firstChild, next = (void 0); node; node = next) { + next = node.nextSibling + if (node.className == "CodeMirror-linewidget") + { lineView.node.removeChild(node) } + } + insertLineWidgets(cm, lineView, dims) +} + +// Build a line's DOM representation from scratch +function buildLineElement(cm, lineView, lineN, dims) { + var built = getLineContent(cm, lineView) + lineView.text = lineView.node = built.pre + if (built.bgClass) { lineView.bgClass = built.bgClass } + if (built.textClass) { lineView.textClass = built.textClass } + + updateLineClasses(lineView) + updateLineGutter(cm, lineView, lineN, dims) + insertLineWidgets(cm, lineView, dims) + return lineView.node +} + +// A lineView may contain multiple logical lines (when merged by +// collapsed spans). The widgets for all of them need to be drawn. +function insertLineWidgets(cm, lineView, dims) { + insertLineWidgetsFor(cm, lineView.line, lineView, dims, true) + if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++) + { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false) } } +} + +function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) { + if (!line.widgets) { return } + var wrap = ensureLineWrapped(lineView) + for (var i = 0, ws = line.widgets; i < ws.length; ++i) { + var widget = ws[i], node = elt("div", [widget.node], "CodeMirror-linewidget") + if (!widget.handleMouseEvents) { node.setAttribute("cm-ignore-events", "true") } + positionLineWidget(widget, node, lineView, dims) + cm.display.input.setUneditable(node) + if (allowAbove && widget.above) + { wrap.insertBefore(node, lineView.gutter || lineView.text) } + else + { wrap.appendChild(node) } + signalLater(widget, "redraw") + } +} + +function positionLineWidget(widget, node, lineView, dims) { + if (widget.noHScroll) { + ;(lineView.alignable || (lineView.alignable = [])).push(node) + var width = dims.wrapperWidth + node.style.left = dims.fixedPos + "px" + if (!widget.coverGutter) { + width -= dims.gutterTotalWidth + node.style.paddingLeft = dims.gutterTotalWidth + "px" + } + node.style.width = width + "px" + } + if (widget.coverGutter) { + node.style.zIndex = 5 + node.style.position = "relative" + if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + "px" } + } +} + +function widgetHeight(widget) { + if (widget.height != null) { return widget.height } + var cm = widget.doc.cm + if (!cm) { return 0 } + if (!contains(document.body, widget.node)) { + var parentStyle = "position: relative;" + if (widget.coverGutter) + { parentStyle += "margin-left: -" + cm.display.gutters.offsetWidth + "px;" } + if (widget.noHScroll) + { parentStyle += "width: " + cm.display.wrapper.clientWidth + "px;" } + removeChildrenAndAdd(cm.display.measure, elt("div", [widget.node], null, parentStyle)) + } + return widget.height = widget.node.parentNode.offsetHeight +} + +// Return true when the given mouse event happened in a widget +function eventInWidget(display, e) { + for (var n = e_target(e); n != display.wrapper; n = n.parentNode) { + if (!n || (n.nodeType == 1 && n.getAttribute("cm-ignore-events") == "true") || + (n.parentNode == display.sizer && n != display.mover)) + { return true } + } +} + +// POSITION MEASUREMENT + +function paddingTop(display) {return display.lineSpace.offsetTop} +function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight} +function paddingH(display) { + if (display.cachedPaddingH) { return display.cachedPaddingH } + var e = removeChildrenAndAdd(display.measure, elt("pre", "x")) + var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle + var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)} + if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data } + return data +} + +function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth } +function displayWidth(cm) { + return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth +} +function displayHeight(cm) { + return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight +} + +// Ensure the lineView.wrapping.heights array is populated. This is +// an array of bottom offsets for the lines that make up a drawn +// line. When lineWrapping is on, there might be more than one +// height. +function ensureLineHeights(cm, lineView, rect) { + var wrapping = cm.options.lineWrapping + var curWidth = wrapping && displayWidth(cm) + if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) { + var heights = lineView.measure.heights = [] + if (wrapping) { + lineView.measure.width = curWidth + var rects = lineView.text.firstChild.getClientRects() + for (var i = 0; i < rects.length - 1; i++) { + var cur = rects[i], next = rects[i + 1] + if (Math.abs(cur.bottom - next.bottom) > 2) + { heights.push((cur.bottom + next.top) / 2 - rect.top) } + } + } + heights.push(rect.bottom - rect.top) + } +} + +// Find a line map (mapping character offsets to text nodes) and a +// measurement cache for the given line number. (A line view might +// contain multiple lines when collapsed ranges are present.) +function mapFromLineView(lineView, line, lineN) { + if (lineView.line == line) + { return {map: lineView.measure.map, cache: lineView.measure.cache} } + for (var i = 0; i < lineView.rest.length; i++) + { if (lineView.rest[i] == line) + { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } } + for (var i$1 = 0; i$1 < lineView.rest.length; i$1++) + { if (lineNo(lineView.rest[i$1]) > lineN) + { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } } +} + +// Render a line into the hidden node display.externalMeasured. Used +// when measurement is needed for a line that's not in the viewport. +function updateExternalMeasurement(cm, line) { + line = visualLine(line) + var lineN = lineNo(line) + var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN) + view.lineN = lineN + var built = view.built = buildLineContent(cm, view) + view.text = built.pre + removeChildrenAndAdd(cm.display.lineMeasure, built.pre) + return view +} + +// Get a {top, bottom, left, right} box (in line-local coordinates) +// for a given character. +function measureChar(cm, line, ch, bias) { + return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias) +} + +// Find a line view that corresponds to the given line number. +function findViewForLine(cm, lineN) { + if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) + { return cm.display.view[findViewIndex(cm, lineN)] } + var ext = cm.display.externalMeasured + if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) + { return ext } +} + +// Measurement can be split in two steps, the set-up work that +// applies to the whole line, and the measurement of the actual +// character. Functions like coordsChar, that need to do a lot of +// measurements in a row, can thus ensure that the set-up work is +// only done once. +function prepareMeasureForLine(cm, line) { + var lineN = lineNo(line) + var view = findViewForLine(cm, lineN) + if (view && !view.text) { + view = null + } else if (view && view.changes) { + updateLineForChanges(cm, view, lineN, getDimensions(cm)) + cm.curOp.forceUpdate = true + } + if (!view) + { view = updateExternalMeasurement(cm, line) } + + var info = mapFromLineView(view, line, lineN) + return { + line: line, view: view, rect: null, + map: info.map, cache: info.cache, before: info.before, + hasHeights: false + } +} + +// Given a prepared measurement object, measures the position of an +// actual character (or fetches it from the cache). +function measureCharPrepared(cm, prepared, ch, bias, varHeight) { + if (prepared.before) { ch = -1 } + var key = ch + (bias || ""), found + if (prepared.cache.hasOwnProperty(key)) { + found = prepared.cache[key] + } else { + if (!prepared.rect) + { prepared.rect = prepared.view.text.getBoundingClientRect() } + if (!prepared.hasHeights) { + ensureLineHeights(cm, prepared.view, prepared.rect) + prepared.hasHeights = true + } + found = measureCharInner(cm, prepared, ch, bias) + if (!found.bogus) { prepared.cache[key] = found } + } + return {left: found.left, right: found.right, + top: varHeight ? found.rtop : found.top, + bottom: varHeight ? found.rbottom : found.bottom} +} + +var nullRect = {left: 0, right: 0, top: 0, bottom: 0} + +function nodeAndOffsetInLineMap(map, ch, bias) { + var node, start, end, collapse, mStart, mEnd + // First, search the line map for the text node corresponding to, + // or closest to, the target character. + for (var i = 0; i < map.length; i += 3) { + mStart = map[i] + mEnd = map[i + 1] + if (ch < mStart) { + start = 0; end = 1 + collapse = "left" + } else if (ch < mEnd) { + start = ch - mStart + end = start + 1 + } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) { + end = mEnd - mStart + start = end - 1 + if (ch >= mEnd) { collapse = "right" } + } + if (start != null) { + node = map[i + 2] + if (mStart == mEnd && bias == (node.insertLeft ? "left" : "right")) + { collapse = bias } + if (bias == "left" && start == 0) + { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) { + node = map[(i -= 3) + 2] + collapse = "left" + } } + if (bias == "right" && start == mEnd - mStart) + { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) { + node = map[(i += 3) + 2] + collapse = "right" + } } + break + } + } + return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd} +} + +function getUsefulRect(rects, bias) { + var rect = nullRect + if (bias == "left") { for (var i = 0; i < rects.length; i++) { + if ((rect = rects[i]).left != rect.right) { break } + } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) { + if ((rect = rects[i$1]).left != rect.right) { break } + } } + return rect +} + +function measureCharInner(cm, prepared, ch, bias) { + var place = nodeAndOffsetInLineMap(prepared.map, ch, bias) + var node = place.node, start = place.start, end = place.end, collapse = place.collapse + + var rect + if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates. + for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned + while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start } + while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end } + if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart) + { rect = node.parentNode.getBoundingClientRect() } + else + { rect = getUsefulRect(range(node, start, end).getClientRects(), bias) } + if (rect.left || rect.right || start == 0) { break } + end = start + start = start - 1 + collapse = "right" + } + if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect) } + } else { // If it is a widget, simply get the box for the whole widget. + if (start > 0) { collapse = bias = "right" } + var rects + if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) + { rect = rects[bias == "right" ? rects.length - 1 : 0] } + else + { rect = node.getBoundingClientRect() } + } + if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) { + var rSpan = node.parentNode.getClientRects()[0] + if (rSpan) + { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom} } + else + { rect = nullRect } + } + + var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top + var mid = (rtop + rbot) / 2 + var heights = prepared.view.measure.heights + var i = 0 + for (; i < heights.length - 1; i++) + { if (mid < heights[i]) { break } } + var top = i ? heights[i - 1] : 0, bot = heights[i] + var result = {left: (collapse == "right" ? rect.right : rect.left) - prepared.rect.left, + right: (collapse == "left" ? rect.left : rect.right) - prepared.rect.left, + top: top, bottom: bot} + if (!rect.left && !rect.right) { result.bogus = true } + if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot } + + return result +} + +// Work around problem with bounding client rects on ranges being +// returned incorrectly when zoomed on IE10 and below. +function maybeUpdateRectForZooming(measure, rect) { + if (!window.screen || screen.logicalXDPI == null || + screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) + { return rect } + var scaleX = screen.logicalXDPI / screen.deviceXDPI + var scaleY = screen.logicalYDPI / screen.deviceYDPI + return {left: rect.left * scaleX, right: rect.right * scaleX, + top: rect.top * scaleY, bottom: rect.bottom * scaleY} +} + +function clearLineMeasurementCacheFor(lineView) { + if (lineView.measure) { + lineView.measure.cache = {} + lineView.measure.heights = null + if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++) + { lineView.measure.caches[i] = {} } } + } +} + +function clearLineMeasurementCache(cm) { + cm.display.externalMeasure = null + removeChildren(cm.display.lineMeasure) + for (var i = 0; i < cm.display.view.length; i++) + { clearLineMeasurementCacheFor(cm.display.view[i]) } +} + +function clearCaches(cm) { + clearLineMeasurementCache(cm) + cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null + if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true } + cm.display.lineNumChars = null +} + +function pageScrollX() { return window.pageXOffset || (document.documentElement || document.body).scrollLeft } +function pageScrollY() { return window.pageYOffset || (document.documentElement || document.body).scrollTop } + +// Converts a {top, bottom, left, right} box from line-local +// coordinates into another coordinate system. Context may be one of +// "line", "div" (display.lineDiv), "local"./null (editor), "window", +// or "page". +function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) { + if (!includeWidgets && lineObj.widgets) { for (var i = 0; i < lineObj.widgets.length; ++i) { if (lineObj.widgets[i].above) { + var size = widgetHeight(lineObj.widgets[i]) + rect.top += size; rect.bottom += size + } } } + if (context == "line") { return rect } + if (!context) { context = "local" } + var yOff = heightAtLine(lineObj) + if (context == "local") { yOff += paddingTop(cm.display) } + else { yOff -= cm.display.viewOffset } + if (context == "page" || context == "window") { + var lOff = cm.display.lineSpace.getBoundingClientRect() + yOff += lOff.top + (context == "window" ? 0 : pageScrollY()) + var xOff = lOff.left + (context == "window" ? 0 : pageScrollX()) + rect.left += xOff; rect.right += xOff + } + rect.top += yOff; rect.bottom += yOff + return rect +} + +// Coverts a box from "div" coords to another coordinate system. +// Context may be "window", "page", "div", or "local"./null. +function fromCoordSystem(cm, coords, context) { + if (context == "div") { return coords } + var left = coords.left, top = coords.top + // First move into "page" coordinate system + if (context == "page") { + left -= pageScrollX() + top -= pageScrollY() + } else if (context == "local" || !context) { + var localBox = cm.display.sizer.getBoundingClientRect() + left += localBox.left + top += localBox.top + } + + var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect() + return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top} +} + +function charCoords(cm, pos, context, lineObj, bias) { + if (!lineObj) { lineObj = getLine(cm.doc, pos.line) } + return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context) +} + +// Returns a box for a given cursor position, which may have an +// 'other' property containing the position of the secondary cursor +// on a bidi boundary. +function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) { + lineObj = lineObj || getLine(cm.doc, pos.line) + if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj) } + function get(ch, right) { + var m = measureCharPrepared(cm, preparedMeasure, ch, right ? "right" : "left", varHeight) + if (right) { m.left = m.right; } else { m.right = m.left } + return intoCoordSystem(cm, lineObj, m, context) + } + function getBidi(ch, partPos) { + var part = order[partPos], right = part.level % 2 + if (ch == bidiLeft(part) && partPos && part.level < order[partPos - 1].level) { + part = order[--partPos] + ch = bidiRight(part) - (part.level % 2 ? 0 : 1) + right = true + } else if (ch == bidiRight(part) && partPos < order.length - 1 && part.level < order[partPos + 1].level) { + part = order[++partPos] + ch = bidiLeft(part) - part.level % 2 + right = false + } + if (right && ch == part.to && ch > part.from) { return get(ch - 1) } + return get(ch, right) + } + var order = getOrder(lineObj), ch = pos.ch + if (!order) { return get(ch) } + var partPos = getBidiPartAt(order, ch) + var val = getBidi(ch, partPos) + if (bidiOther != null) { val.other = getBidi(ch, bidiOther) } + return val +} + +// Used to cheaply estimate the coordinates for a position. Used for +// intermediate scroll updates. +function estimateCoords(cm, pos) { + var left = 0 + pos = clipPos(cm.doc, pos) + if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch } + var lineObj = getLine(cm.doc, pos.line) + var top = heightAtLine(lineObj) + paddingTop(cm.display) + return {left: left, right: left, top: top, bottom: top + lineObj.height} +} + +// Positions returned by coordsChar contain some extra information. +// xRel is the relative x position of the input coordinates compared +// to the found position (so xRel > 0 means the coordinates are to +// the right of the character position, for example). When outside +// is true, that means the coordinates lie outside the line's +// vertical range. +function PosWithInfo(line, ch, outside, xRel) { + var pos = Pos(line, ch) + pos.xRel = xRel + if (outside) { pos.outside = true } + return pos +} + +// Compute the character position closest to the given coordinates. +// Input must be lineSpace-local ("div" coordinate system). +function coordsChar(cm, x, y) { + var doc = cm.doc + y += cm.display.viewOffset + if (y < 0) { return PosWithInfo(doc.first, 0, true, -1) } + var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1 + if (lineN > last) + { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, true, 1) } + if (x < 0) { x = 0 } + + var lineObj = getLine(doc, lineN) + for (;;) { + var found = coordsCharInner(cm, lineObj, lineN, x, y) + var merged = collapsedSpanAtEnd(lineObj) + var mergedPos = merged && merged.find(0, true) + if (merged && (found.ch > mergedPos.from.ch || found.ch == mergedPos.from.ch && found.xRel > 0)) + { lineN = lineNo(lineObj = mergedPos.to.line) } + else + { return found } + } +} + +function coordsCharInner(cm, lineObj, lineNo, x, y) { + var innerOff = y - heightAtLine(lineObj) + var wrongLine = false, adjust = 2 * cm.display.wrapper.clientWidth + var preparedMeasure = prepareMeasureForLine(cm, lineObj) + + function getX(ch) { + var sp = cursorCoords(cm, Pos(lineNo, ch), "line", lineObj, preparedMeasure) + wrongLine = true + if (innerOff > sp.bottom) { return sp.left - adjust } + else if (innerOff < sp.top) { return sp.left + adjust } + else { wrongLine = false } + return sp.left + } + + var bidi = getOrder(lineObj), dist = lineObj.text.length + var from = lineLeft(lineObj), to = lineRight(lineObj) + var fromX = getX(from), fromOutside = wrongLine, toX = getX(to), toOutside = wrongLine + + if (x > toX) { return PosWithInfo(lineNo, to, toOutside, 1) } + // Do a binary search between these bounds. + for (;;) { + if (bidi ? to == from || to == moveVisually(lineObj, from, 1) : to - from <= 1) { + var ch = x < fromX || x - fromX <= toX - x ? from : to + var outside = ch == from ? fromOutside : toOutside + var xDiff = x - (ch == from ? fromX : toX) + // This is a kludge to handle the case where the coordinates + // are after a line-wrapped line. We should replace it with a + // more general handling of cursor positions around line + // breaks. (Issue #4078) + if (toOutside && !bidi && !/\s/.test(lineObj.text.charAt(ch)) && xDiff > 0 && + ch < lineObj.text.length && preparedMeasure.view.measure.heights.length > 1) { + var charSize = measureCharPrepared(cm, preparedMeasure, ch, "right") + if (innerOff <= charSize.bottom && innerOff >= charSize.top && Math.abs(x - charSize.right) < xDiff) { + outside = false + ch++ + xDiff = x - charSize.right + } + } + while (isExtendingChar(lineObj.text.charAt(ch))) { ++ch } + var pos = PosWithInfo(lineNo, ch, outside, xDiff < -1 ? -1 : xDiff > 1 ? 1 : 0) + return pos + } + var step = Math.ceil(dist / 2), middle = from + step + if (bidi) { + middle = from + for (var i = 0; i < step; ++i) { middle = moveVisually(lineObj, middle, 1) } + } + var middleX = getX(middle) + if (middleX > x) {to = middle; toX = middleX; if (toOutside = wrongLine) { toX += 1000; } dist = step} + else {from = middle; fromX = middleX; fromOutside = wrongLine; dist -= step} + } +} + +var measureText +// Compute the default text height. +function textHeight(display) { + if (display.cachedTextHeight != null) { return display.cachedTextHeight } + if (measureText == null) { + measureText = elt("pre") + // Measure a bunch of lines, for browsers that compute + // fractional heights. + for (var i = 0; i < 49; ++i) { + measureText.appendChild(document.createTextNode("x")) + measureText.appendChild(elt("br")) + } + measureText.appendChild(document.createTextNode("x")) + } + removeChildrenAndAdd(display.measure, measureText) + var height = measureText.offsetHeight / 50 + if (height > 3) { display.cachedTextHeight = height } + removeChildren(display.measure) + return height || 1 +} + +// Compute the default character width. +function charWidth(display) { + if (display.cachedCharWidth != null) { return display.cachedCharWidth } + var anchor = elt("span", "xxxxxxxxxx") + var pre = elt("pre", [anchor]) + removeChildrenAndAdd(display.measure, pre) + var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10 + if (width > 2) { display.cachedCharWidth = width } + return width || 10 +} + +// Do a bulk-read of the DOM positions and sizes needed to draw the +// view, so that we don't interleave reading and writing to the DOM. +function getDimensions(cm) { + var d = cm.display, left = {}, width = {} + var gutterLeft = d.gutters.clientLeft + for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) { + left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft + width[cm.options.gutters[i]] = n.clientWidth + } + return {fixedPos: compensateForHScroll(d), + gutterTotalWidth: d.gutters.offsetWidth, + gutterLeft: left, + gutterWidth: width, + wrapperWidth: d.wrapper.clientWidth} +} + +// Computes display.scroller.scrollLeft + display.gutters.offsetWidth, +// but using getBoundingClientRect to get a sub-pixel-accurate +// result. +function compensateForHScroll(display) { + return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left +} + +// Returns a function that estimates the height of a line, to use as +// first approximation until the line becomes visible (and is thus +// properly measurable). +function estimateHeight(cm) { + var th = textHeight(cm.display), wrapping = cm.options.lineWrapping + var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3) + return function (line) { + if (lineIsHidden(cm.doc, line)) { return 0 } + + var widgetsHeight = 0 + if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) { + if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height } + } } + + if (wrapping) + { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th } + else + { return widgetsHeight + th } + } +} + +function estimateLineHeights(cm) { + var doc = cm.doc, est = estimateHeight(cm) + doc.iter(function (line) { + var estHeight = est(line) + if (estHeight != line.height) { updateLineHeight(line, estHeight) } + }) +} + +// Given a mouse event, find the corresponding position. If liberal +// is false, it checks whether a gutter or scrollbar was clicked, +// and returns null if it was. forRect is used by rectangular +// selections, and tries to estimate a character position even for +// coordinates beyond the right of the text. +function posFromMouse(cm, e, liberal, forRect) { + var display = cm.display + if (!liberal && e_target(e).getAttribute("cm-not-content") == "true") { return null } + + var x, y, space = display.lineSpace.getBoundingClientRect() + // Fails unpredictably on IE[67] when mouse is dragged around quickly. + try { x = e.clientX - space.left; y = e.clientY - space.top } + catch (e) { return null } + var coords = coordsChar(cm, x, y), line + if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) { + var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length + coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff)) + } + return coords +} + +// Find the view element corresponding to a given line. Return null +// when the line isn't visible. +function findViewIndex(cm, n) { + if (n >= cm.display.viewTo) { return null } + n -= cm.display.viewFrom + if (n < 0) { return null } + var view = cm.display.view + for (var i = 0; i < view.length; i++) { + n -= view[i].size + if (n < 0) { return i } + } +} + +function updateSelection(cm) { + cm.display.input.showSelection(cm.display.input.prepareSelection()) +} + +function prepareSelection(cm, primary) { + var doc = cm.doc, result = {} + var curFragment = result.cursors = document.createDocumentFragment() + var selFragment = result.selection = document.createDocumentFragment() + + for (var i = 0; i < doc.sel.ranges.length; i++) { + if (primary === false && i == doc.sel.primIndex) { continue } + var range = doc.sel.ranges[i] + if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue } + var collapsed = range.empty() + if (collapsed || cm.options.showCursorWhenSelecting) + { drawSelectionCursor(cm, range.head, curFragment) } + if (!collapsed) + { drawSelectionRange(cm, range, selFragment) } + } + return result +} + +// Draws a cursor for the given range +function drawSelectionCursor(cm, head, output) { + var pos = cursorCoords(cm, head, "div", null, null, !cm.options.singleCursorHeightPerLine) + + var cursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor")) + cursor.style.left = pos.left + "px" + cursor.style.top = pos.top + "px" + cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + "px" + + if (pos.other) { + // Secondary cursor, shown when on a 'jump' in bi-directional text + var otherCursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor CodeMirror-secondarycursor")) + otherCursor.style.display = "" + otherCursor.style.left = pos.other.left + "px" + otherCursor.style.top = pos.other.top + "px" + otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + "px" + } +} + +// Draws the given range as a highlighted selection +function drawSelectionRange(cm, range, output) { + var display = cm.display, doc = cm.doc + var fragment = document.createDocumentFragment() + var padding = paddingH(cm.display), leftSide = padding.left + var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right + + function add(left, top, width, bottom) { + if (top < 0) { top = 0 } + top = Math.round(top) + bottom = Math.round(bottom) + fragment.appendChild(elt("div", null, "CodeMirror-selected", ("position: absolute; left: " + left + "px;\n top: " + top + "px; width: " + (width == null ? rightSide - left : width) + "px;\n height: " + (bottom - top) + "px"))) + } + + function drawForLine(line, fromArg, toArg) { + var lineObj = getLine(doc, line) + var lineLen = lineObj.text.length + var start, end + function coords(ch, bias) { + return charCoords(cm, Pos(line, ch), "div", lineObj, bias) + } + + iterateBidiSections(getOrder(lineObj), fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir) { + var leftPos = coords(from, "left"), rightPos, left, right + if (from == to) { + rightPos = leftPos + left = right = leftPos.left + } else { + rightPos = coords(to - 1, "right") + if (dir == "rtl") { var tmp = leftPos; leftPos = rightPos; rightPos = tmp } + left = leftPos.left + right = rightPos.right + } + if (fromArg == null && from == 0) { left = leftSide } + if (rightPos.top - leftPos.top > 3) { // Different lines, draw top part + add(left, leftPos.top, null, leftPos.bottom) + left = leftSide + if (leftPos.bottom < rightPos.top) { add(left, leftPos.bottom, null, rightPos.top) } + } + if (toArg == null && to == lineLen) { right = rightSide } + if (!start || leftPos.top < start.top || leftPos.top == start.top && leftPos.left < start.left) + { start = leftPos } + if (!end || rightPos.bottom > end.bottom || rightPos.bottom == end.bottom && rightPos.right > end.right) + { end = rightPos } + if (left < leftSide + 1) { left = leftSide } + add(left, rightPos.top, right - left, rightPos.bottom) + }) + return {start: start, end: end} + } + + var sFrom = range.from(), sTo = range.to() + if (sFrom.line == sTo.line) { + drawForLine(sFrom.line, sFrom.ch, sTo.ch) + } else { + var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line) + var singleVLine = visualLine(fromLine) == visualLine(toLine) + var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end + var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start + if (singleVLine) { + if (leftEnd.top < rightStart.top - 2) { + add(leftEnd.right, leftEnd.top, null, leftEnd.bottom) + add(leftSide, rightStart.top, rightStart.left, rightStart.bottom) + } else { + add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom) + } + } + if (leftEnd.bottom < rightStart.top) + { add(leftSide, leftEnd.bottom, null, rightStart.top) } + } + + output.appendChild(fragment) +} + +// Cursor-blinking +function restartBlink(cm) { + if (!cm.state.focused) { return } + var display = cm.display + clearInterval(display.blinker) + var on = true + display.cursorDiv.style.visibility = "" + if (cm.options.cursorBlinkRate > 0) + { display.blinker = setInterval(function () { return display.cursorDiv.style.visibility = (on = !on) ? "" : "hidden"; }, + cm.options.cursorBlinkRate) } + else if (cm.options.cursorBlinkRate < 0) + { display.cursorDiv.style.visibility = "hidden" } +} + +function ensureFocus(cm) { + if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm) } +} + +function delayBlurEvent(cm) { + cm.state.delayingBlurEvent = true + setTimeout(function () { if (cm.state.delayingBlurEvent) { + cm.state.delayingBlurEvent = false + onBlur(cm) + } }, 100) +} + +function onFocus(cm, e) { + if (cm.state.delayingBlurEvent) { cm.state.delayingBlurEvent = false } + + if (cm.options.readOnly == "nocursor") { return } + if (!cm.state.focused) { + signal(cm, "focus", cm, e) + cm.state.focused = true + addClass(cm.display.wrapper, "CodeMirror-focused") + // This test prevents this from firing when a context + // menu is closed (since the input reset would kill the + // select-all detection hack) + if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) { + cm.display.input.reset() + if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20) } // Issue #1730 + } + cm.display.input.receivedFocus() + } + restartBlink(cm) +} +function onBlur(cm, e) { + if (cm.state.delayingBlurEvent) { return } + + if (cm.state.focused) { + signal(cm, "blur", cm, e) + cm.state.focused = false + rmClass(cm.display.wrapper, "CodeMirror-focused") + } + clearInterval(cm.display.blinker) + setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false } }, 150) +} + +// Re-align line numbers and gutter marks to compensate for +// horizontal scrolling. +function alignHorizontally(cm) { + var display = cm.display, view = display.view + if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return } + var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft + var gutterW = display.gutters.offsetWidth, left = comp + "px" + for (var i = 0; i < view.length; i++) { if (!view[i].hidden) { + if (cm.options.fixedGutter) { + if (view[i].gutter) + { view[i].gutter.style.left = left } + if (view[i].gutterBackground) + { view[i].gutterBackground.style.left = left } + } + var align = view[i].alignable + if (align) { for (var j = 0; j < align.length; j++) + { align[j].style.left = left } } + } } + if (cm.options.fixedGutter) + { display.gutters.style.left = (comp + gutterW) + "px" } +} + +// Used to ensure that the line number gutter is still the right +// size for the current document size. Returns true when an update +// is needed. +function maybeUpdateLineNumberWidth(cm) { + if (!cm.options.lineNumbers) { return false } + var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display + if (last.length != display.lineNumChars) { + var test = display.measure.appendChild(elt("div", [elt("div", last)], + "CodeMirror-linenumber CodeMirror-gutter-elt")) + var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW + display.lineGutter.style.width = "" + display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1 + display.lineNumWidth = display.lineNumInnerWidth + padding + display.lineNumChars = display.lineNumInnerWidth ? last.length : -1 + display.lineGutter.style.width = display.lineNumWidth + "px" + updateGutterSpace(cm) + return true + } + return false +} + +// Read the actual heights of the rendered lines, and update their +// stored heights to match. +function updateHeightsInViewport(cm) { + var display = cm.display + var prevBottom = display.lineDiv.offsetTop + for (var i = 0; i < display.view.length; i++) { + var cur = display.view[i], height = (void 0) + if (cur.hidden) { continue } + if (ie && ie_version < 8) { + var bot = cur.node.offsetTop + cur.node.offsetHeight + height = bot - prevBottom + prevBottom = bot + } else { + var box = cur.node.getBoundingClientRect() + height = box.bottom - box.top + } + var diff = cur.line.height - height + if (height < 2) { height = textHeight(display) } + if (diff > .001 || diff < -.001) { + updateLineHeight(cur.line, height) + updateWidgetHeight(cur.line) + if (cur.rest) { for (var j = 0; j < cur.rest.length; j++) + { updateWidgetHeight(cur.rest[j]) } } + } + } +} + +// Read and store the height of line widgets associated with the +// given line. +function updateWidgetHeight(line) { + if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) + { line.widgets[i].height = line.widgets[i].node.parentNode.offsetHeight } } +} + +// Compute the lines that are visible in a given viewport (defaults +// the the current scroll position). viewport may contain top, +// height, and ensure (see op.scrollToPos) properties. +function visibleLines(display, doc, viewport) { + var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop + top = Math.floor(top - paddingTop(display)) + var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight + + var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom) + // Ensure is a {from: {line, ch}, to: {line, ch}} object, and + // forces those lines into the viewport (if possible). + if (viewport && viewport.ensure) { + var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line + if (ensureFrom < from) { + from = ensureFrom + to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight) + } else if (Math.min(ensureTo, doc.lastLine()) >= to) { + from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight) + to = ensureTo + } + } + return {from: from, to: Math.max(to, from + 1)} +} + +// Sync the scrollable area and scrollbars, ensure the viewport +// covers the visible area. +function setScrollTop(cm, val) { + if (Math.abs(cm.doc.scrollTop - val) < 2) { return } + cm.doc.scrollTop = val + if (!gecko) { updateDisplaySimple(cm, {top: val}) } + if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val } + cm.display.scrollbars.setScrollTop(val) + if (gecko) { updateDisplaySimple(cm) } + startWorker(cm, 100) +} +// Sync scroller and scrollbar, ensure the gutter elements are +// aligned. +function setScrollLeft(cm, val, isScroller) { + if (isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) { return } + val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth) + cm.doc.scrollLeft = val + alignHorizontally(cm) + if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val } + cm.display.scrollbars.setScrollLeft(val) +} + +// Since the delta values reported on mouse wheel events are +// unstandardized between browsers and even browser versions, and +// generally horribly unpredictable, this code starts by measuring +// the scroll effect that the first few mouse wheel events have, +// and, from that, detects the way it can convert deltas to pixel +// offsets afterwards. +// +// The reason we want to know the amount a wheel event will scroll +// is that it gives us a chance to update the display before the +// actual scrolling happens, reducing flickering. + +var wheelSamples = 0; +var wheelPixelsPerUnit = null; +// Fill in a browser-detected starting value on browsers where we +// know one. These don't have to be accurate -- the result of them +// being wrong would just be a slight flicker on the first wheel +// scroll (if it is large enough). +if (ie) { wheelPixelsPerUnit = -.53 } +else if (gecko) { wheelPixelsPerUnit = 15 } +else if (chrome) { wheelPixelsPerUnit = -.7 } +else if (safari) { wheelPixelsPerUnit = -1/3 } + +function wheelEventDelta(e) { + var dx = e.wheelDeltaX, dy = e.wheelDeltaY + if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail } + if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail } + else if (dy == null) { dy = e.wheelDelta } + return {x: dx, y: dy} +} +function wheelEventPixels(e) { + var delta = wheelEventDelta(e) + delta.x *= wheelPixelsPerUnit + delta.y *= wheelPixelsPerUnit + return delta +} + +function onScrollWheel(cm, e) { + var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y + + var display = cm.display, scroll = display.scroller + // Quit if there's nothing to scroll here + var canScrollX = scroll.scrollWidth > scroll.clientWidth + var canScrollY = scroll.scrollHeight > scroll.clientHeight + if (!(dx && canScrollX || dy && canScrollY)) { return } + + // Webkit browsers on OS X abort momentum scrolls when the target + // of the scroll event is removed from the scrollable element. + // This hack (see related code in patchDisplay) makes sure the + // element is kept around. + if (dy && mac && webkit) { + outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) { + for (var i = 0; i < view.length; i++) { + if (view[i].node == cur) { + cm.display.currentWheelTarget = cur + break outer + } + } + } + } + + // On some browsers, horizontal scrolling will cause redraws to + // happen before the gutter has been realigned, causing it to + // wriggle around in a most unseemly way. When we have an + // estimated pixels/delta value, we just handle horizontal + // scrolling entirely here. It'll be slightly off from native, but + // better than glitching out. + if (dx && !gecko && !presto && wheelPixelsPerUnit != null) { + if (dy && canScrollY) + { setScrollTop(cm, Math.max(0, Math.min(scroll.scrollTop + dy * wheelPixelsPerUnit, scroll.scrollHeight - scroll.clientHeight))) } + setScrollLeft(cm, Math.max(0, Math.min(scroll.scrollLeft + dx * wheelPixelsPerUnit, scroll.scrollWidth - scroll.clientWidth))) + // Only prevent default scrolling if vertical scrolling is + // actually possible. Otherwise, it causes vertical scroll + // jitter on OSX trackpads when deltaX is small and deltaY + // is large (issue #3579) + if (!dy || (dy && canScrollY)) + { e_preventDefault(e) } + display.wheelStartX = null // Abort measurement, if in progress + return + } + + // 'Project' the visible viewport to cover the area that is being + // scrolled into view (if we know enough to estimate it). + if (dy && wheelPixelsPerUnit != null) { + var pixels = dy * wheelPixelsPerUnit + var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight + if (pixels < 0) { top = Math.max(0, top + pixels - 50) } + else { bot = Math.min(cm.doc.height, bot + pixels + 50) } + updateDisplaySimple(cm, {top: top, bottom: bot}) + } + + if (wheelSamples < 20) { + if (display.wheelStartX == null) { + display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop + display.wheelDX = dx; display.wheelDY = dy + setTimeout(function () { + if (display.wheelStartX == null) { return } + var movedX = scroll.scrollLeft - display.wheelStartX + var movedY = scroll.scrollTop - display.wheelStartY + var sample = (movedY && display.wheelDY && movedY / display.wheelDY) || + (movedX && display.wheelDX && movedX / display.wheelDX) + display.wheelStartX = display.wheelStartY = null + if (!sample) { return } + wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1) + ++wheelSamples + }, 200) + } else { + display.wheelDX += dx; display.wheelDY += dy + } + } +} + +// SCROLLBARS + +// Prepare DOM reads needed to update the scrollbars. Done in one +// shot to minimize update/measure roundtrips. +function measureForScrollbars(cm) { + var d = cm.display, gutterW = d.gutters.offsetWidth + var docH = Math.round(cm.doc.height + paddingVert(cm.display)) + return { + clientHeight: d.scroller.clientHeight, + viewHeight: d.wrapper.clientHeight, + scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth, + viewWidth: d.wrapper.clientWidth, + barLeft: cm.options.fixedGutter ? gutterW : 0, + docHeight: docH, + scrollHeight: docH + scrollGap(cm) + d.barHeight, + nativeBarWidth: d.nativeBarWidth, + gutterWidth: gutterW + } +} + +var NativeScrollbars = function(place, scroll, cm) { + this.cm = cm + var vert = this.vert = elt("div", [elt("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar") + var horiz = this.horiz = elt("div", [elt("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar") + place(vert); place(horiz) + + on(vert, "scroll", function () { + if (vert.clientHeight) { scroll(vert.scrollTop, "vertical") } + }) + on(horiz, "scroll", function () { + if (horiz.clientWidth) { scroll(horiz.scrollLeft, "horizontal") } + }) + + this.checkedZeroWidth = false + // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8). + if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = "18px" } +}; + +NativeScrollbars.prototype.update = function (measure) { + var needsH = measure.scrollWidth > measure.clientWidth + 1 + var needsV = measure.scrollHeight > measure.clientHeight + 1 + var sWidth = measure.nativeBarWidth + + if (needsV) { + this.vert.style.display = "block" + this.vert.style.bottom = needsH ? sWidth + "px" : "0" + var totalHeight = measure.viewHeight - (needsH ? sWidth : 0) + // A bug in IE8 can cause this value to be negative, so guard it. + this.vert.firstChild.style.height = + Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + "px" + } else { + this.vert.style.display = "" + this.vert.firstChild.style.height = "0" + } + + if (needsH) { + this.horiz.style.display = "block" + this.horiz.style.right = needsV ? sWidth + "px" : "0" + this.horiz.style.left = measure.barLeft + "px" + var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0) + this.horiz.firstChild.style.width = + (measure.scrollWidth - measure.clientWidth + totalWidth) + "px" + } else { + this.horiz.style.display = "" + this.horiz.firstChild.style.width = "0" + } + + if (!this.checkedZeroWidth && measure.clientHeight > 0) { + if (sWidth == 0) { this.zeroWidthHack() } + this.checkedZeroWidth = true + } + + return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0} +}; + +NativeScrollbars.prototype.setScrollLeft = function (pos) { + if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos } + if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz) } +}; + +NativeScrollbars.prototype.setScrollTop = function (pos) { + if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos } + if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert) } +}; + +NativeScrollbars.prototype.zeroWidthHack = function () { + var w = mac && !mac_geMountainLion ? "12px" : "18px" + this.horiz.style.height = this.vert.style.width = w + this.horiz.style.pointerEvents = this.vert.style.pointerEvents = "none" + this.disableHoriz = new Delayed + this.disableVert = new Delayed +}; + +NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay) { + bar.style.pointerEvents = "auto" + function maybeDisable() { + // To find out whether the scrollbar is still visible, we + // check whether the element under the pixel in the bottom + // left corner of the scrollbar box is the scrollbar box + // itself (when the bar is still visible) or its filler child + // (when the bar is hidden). If it is still visible, we keep + // it enabled, if it's hidden, we disable pointer events. + var box = bar.getBoundingClientRect() + var elt = document.elementFromPoint(box.left + 1, box.bottom - 1) + if (elt != bar) { bar.style.pointerEvents = "none" } + else { delay.set(1000, maybeDisable) } + } + delay.set(1000, maybeDisable) +}; + +NativeScrollbars.prototype.clear = function () { + var parent = this.horiz.parentNode + parent.removeChild(this.horiz) + parent.removeChild(this.vert) +}; + +var NullScrollbars = function () {}; + +NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} }; +NullScrollbars.prototype.setScrollLeft = function () {}; +NullScrollbars.prototype.setScrollTop = function () {}; +NullScrollbars.prototype.clear = function () {}; + +function updateScrollbars(cm, measure) { + if (!measure) { measure = measureForScrollbars(cm) } + var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight + updateScrollbarsInner(cm, measure) + for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) { + if (startWidth != cm.display.barWidth && cm.options.lineWrapping) + { updateHeightsInViewport(cm) } + updateScrollbarsInner(cm, measureForScrollbars(cm)) + startWidth = cm.display.barWidth; startHeight = cm.display.barHeight + } +} + +// Re-synchronize the fake scrollbars with the actual size of the +// content. +function updateScrollbarsInner(cm, measure) { + var d = cm.display + var sizes = d.scrollbars.update(measure) + + d.sizer.style.paddingRight = (d.barWidth = sizes.right) + "px" + d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + "px" + d.heightForcer.style.borderBottom = sizes.bottom + "px solid transparent" + + if (sizes.right && sizes.bottom) { + d.scrollbarFiller.style.display = "block" + d.scrollbarFiller.style.height = sizes.bottom + "px" + d.scrollbarFiller.style.width = sizes.right + "px" + } else { d.scrollbarFiller.style.display = "" } + if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) { + d.gutterFiller.style.display = "block" + d.gutterFiller.style.height = sizes.bottom + "px" + d.gutterFiller.style.width = measure.gutterWidth + "px" + } else { d.gutterFiller.style.display = "" } +} + +var scrollbarModel = {"native": NativeScrollbars, "null": NullScrollbars} + +function initScrollbars(cm) { + if (cm.display.scrollbars) { + cm.display.scrollbars.clear() + if (cm.display.scrollbars.addClass) + { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass) } + } + + cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) { + cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller) + // Prevent clicks in the scrollbars from killing focus + on(node, "mousedown", function () { + if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0) } + }) + node.setAttribute("cm-not-content", "true") + }, function (pos, axis) { + if (axis == "horizontal") { setScrollLeft(cm, pos) } + else { setScrollTop(cm, pos) } + }, cm) + if (cm.display.scrollbars.addClass) + { addClass(cm.display.wrapper, cm.display.scrollbars.addClass) } +} + +// SCROLLING THINGS INTO VIEW + +// If an editor sits on the top or bottom of the window, partially +// scrolled out of view, this ensures that the cursor is visible. +function maybeScrollWindow(cm, coords) { + if (signalDOMEvent(cm, "scrollCursorIntoView")) { return } + + var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null + if (coords.top + box.top < 0) { doScroll = true } + else if (coords.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false } + if (doScroll != null && !phantom) { + var scrollNode = elt("div", "\u200b", null, ("position: absolute;\n top: " + (coords.top - display.viewOffset - paddingTop(cm.display)) + "px;\n height: " + (coords.bottom - coords.top + scrollGap(cm) + display.barHeight) + "px;\n left: " + (coords.left) + "px; width: 2px;")) + cm.display.lineSpace.appendChild(scrollNode) + scrollNode.scrollIntoView(doScroll) + cm.display.lineSpace.removeChild(scrollNode) + } +} + +// Scroll a given position into view (immediately), verifying that +// it actually became visible (as line heights are accurately +// measured, the position of something may 'drift' during drawing). +function scrollPosIntoView(cm, pos, end, margin) { + if (margin == null) { margin = 0 } + var coords + for (var limit = 0; limit < 5; limit++) { + var changed = false + coords = cursorCoords(cm, pos) + var endCoords = !end || end == pos ? coords : cursorCoords(cm, end) + var scrollPos = calculateScrollPos(cm, Math.min(coords.left, endCoords.left), + Math.min(coords.top, endCoords.top) - margin, + Math.max(coords.left, endCoords.left), + Math.max(coords.bottom, endCoords.bottom) + margin) + var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft + if (scrollPos.scrollTop != null) { + setScrollTop(cm, scrollPos.scrollTop) + if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true } + } + if (scrollPos.scrollLeft != null) { + setScrollLeft(cm, scrollPos.scrollLeft) + if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true } + } + if (!changed) { break } + } + return coords +} + +// Scroll a given set of coordinates into view (immediately). +function scrollIntoView(cm, x1, y1, x2, y2) { + var scrollPos = calculateScrollPos(cm, x1, y1, x2, y2) + if (scrollPos.scrollTop != null) { setScrollTop(cm, scrollPos.scrollTop) } + if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft) } +} + +// Calculate a new scroll position needed to scroll the given +// rectangle into view. Returns an object with scrollTop and +// scrollLeft properties. When these are undefined, the +// vertical/horizontal position does not need to be adjusted. +function calculateScrollPos(cm, x1, y1, x2, y2) { + var display = cm.display, snapMargin = textHeight(cm.display) + if (y1 < 0) { y1 = 0 } + var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop + var screen = displayHeight(cm), result = {} + if (y2 - y1 > screen) { y2 = y1 + screen } + var docBottom = cm.doc.height + paddingVert(display) + var atTop = y1 < snapMargin, atBottom = y2 > docBottom - snapMargin + if (y1 < screentop) { + result.scrollTop = atTop ? 0 : y1 + } else if (y2 > screentop + screen) { + var newTop = Math.min(y1, (atBottom ? docBottom : y2) - screen) + if (newTop != screentop) { result.scrollTop = newTop } + } + + var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft + var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0) + var tooWide = x2 - x1 > screenw + if (tooWide) { x2 = x1 + screenw } + if (x1 < 10) + { result.scrollLeft = 0 } + else if (x1 < screenleft) + { result.scrollLeft = Math.max(0, x1 - (tooWide ? 0 : 10)) } + else if (x2 > screenw + screenleft - 3) + { result.scrollLeft = x2 + (tooWide ? 0 : 10) - screenw } + return result +} + +// Store a relative adjustment to the scroll position in the current +// operation (to be applied when the operation finishes). +function addToScrollPos(cm, left, top) { + if (left != null || top != null) { resolveScrollToPos(cm) } + if (left != null) + { cm.curOp.scrollLeft = (cm.curOp.scrollLeft == null ? cm.doc.scrollLeft : cm.curOp.scrollLeft) + left } + if (top != null) + { cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top } +} + +// Make sure that at the end of the operation the current cursor is +// shown. +function ensureCursorVisible(cm) { + resolveScrollToPos(cm) + var cur = cm.getCursor(), from = cur, to = cur + if (!cm.options.lineWrapping) { + from = cur.ch ? Pos(cur.line, cur.ch - 1) : cur + to = Pos(cur.line, cur.ch + 1) + } + cm.curOp.scrollToPos = {from: from, to: to, margin: cm.options.cursorScrollMargin, isCursor: true} +} + +// When an operation has its scrollToPos property set, and another +// scroll action is applied before the end of the operation, this +// 'simulates' scrolling that position into view in a cheap way, so +// that the effect of intermediate scroll commands is not ignored. +function resolveScrollToPos(cm) { + var range = cm.curOp.scrollToPos + if (range) { + cm.curOp.scrollToPos = null + var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to) + var sPos = calculateScrollPos(cm, Math.min(from.left, to.left), + Math.min(from.top, to.top) - range.margin, + Math.max(from.right, to.right), + Math.max(from.bottom, to.bottom) + range.margin) + cm.scrollTo(sPos.scrollLeft, sPos.scrollTop) + } +} + +// Operations are used to wrap a series of changes to the editor +// state in such a way that each change won't have to update the +// cursor and display (which would be awkward, slow, and +// error-prone). Instead, display updates are batched and then all +// combined and executed at once. + +var nextOpId = 0 +// Start a new operation. +function startOperation(cm) { + cm.curOp = { + cm: cm, + viewChanged: false, // Flag that indicates that lines might need to be redrawn + startHeight: cm.doc.height, // Used to detect need to update scrollbar + forceUpdate: false, // Used to force a redraw + updateInput: null, // Whether to reset the input textarea + typing: false, // Whether this reset should be careful to leave existing text (for compositing) + changeObjs: null, // Accumulated changes, for firing change events + cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on + cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already + selectionChanged: false, // Whether the selection needs to be redrawn + updateMaxLine: false, // Set when the widest line needs to be determined anew + scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet + scrollToPos: null, // Used to scroll to a specific position + focus: false, + id: ++nextOpId // Unique ID + } + pushOperation(cm.curOp) +} + +// Finish an operation, updating the display and signalling delayed events +function endOperation(cm) { + var op = cm.curOp + finishOperation(op, function (group) { + for (var i = 0; i < group.ops.length; i++) + { group.ops[i].cm.curOp = null } + endOperations(group) + }) +} + +// The DOM updates done when an operation finishes are batched so +// that the minimum number of relayouts are required. +function endOperations(group) { + var ops = group.ops + for (var i = 0; i < ops.length; i++) // Read DOM + { endOperation_R1(ops[i]) } + for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe) + { endOperation_W1(ops[i$1]) } + for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM + { endOperation_R2(ops[i$2]) } + for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe) + { endOperation_W2(ops[i$3]) } + for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM + { endOperation_finish(ops[i$4]) } +} + +function endOperation_R1(op) { + var cm = op.cm, display = cm.display + maybeClipScrollbars(cm) + if (op.updateMaxLine) { findMaxLine(cm) } + + op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || + op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || + op.scrollToPos.to.line >= display.viewTo) || + display.maxLineChanged && cm.options.lineWrapping + op.update = op.mustUpdate && + new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate) +} + +function endOperation_W1(op) { + op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update) +} + +function endOperation_R2(op) { + var cm = op.cm, display = cm.display + if (op.updatedDisplay) { updateHeightsInViewport(cm) } + + op.barMeasure = measureForScrollbars(cm) + + // If the max line changed since it was last measured, measure it, + // and ensure the document's width matches it. + // updateDisplay_W2 will use these properties to do the actual resizing + if (display.maxLineChanged && !cm.options.lineWrapping) { + op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3 + cm.display.sizerWidth = op.adjustWidthTo + op.barMeasure.scrollWidth = + Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth) + op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm)) + } + + if (op.updatedDisplay || op.selectionChanged) + { op.preparedSelection = display.input.prepareSelection(op.focus) } +} + +function endOperation_W2(op) { + var cm = op.cm + + if (op.adjustWidthTo != null) { + cm.display.sizer.style.minWidth = op.adjustWidthTo + "px" + if (op.maxScrollLeft < cm.doc.scrollLeft) + { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true) } + cm.display.maxLineChanged = false + } + + var takeFocus = op.focus && op.focus == activeElt() && (!document.hasFocus || document.hasFocus()) + if (op.preparedSelection) + { cm.display.input.showSelection(op.preparedSelection, takeFocus) } + if (op.updatedDisplay || op.startHeight != cm.doc.height) + { updateScrollbars(cm, op.barMeasure) } + if (op.updatedDisplay) + { setDocumentHeight(cm, op.barMeasure) } + + if (op.selectionChanged) { restartBlink(cm) } + + if (cm.state.focused && op.updateInput) + { cm.display.input.reset(op.typing) } + if (takeFocus) { ensureFocus(op.cm) } +} + +function endOperation_finish(op) { + var cm = op.cm, display = cm.display, doc = cm.doc + + if (op.updatedDisplay) { postUpdateDisplay(cm, op.update) } + + // Abort mouse wheel delta measurement, when scrolling explicitly + if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) + { display.wheelStartX = display.wheelStartY = null } + + // Propagate the scroll position to the actual DOM scroller + if (op.scrollTop != null && (display.scroller.scrollTop != op.scrollTop || op.forceScroll)) { + doc.scrollTop = Math.max(0, Math.min(display.scroller.scrollHeight - display.scroller.clientHeight, op.scrollTop)) + display.scrollbars.setScrollTop(doc.scrollTop) + display.scroller.scrollTop = doc.scrollTop + } + if (op.scrollLeft != null && (display.scroller.scrollLeft != op.scrollLeft || op.forceScroll)) { + doc.scrollLeft = Math.max(0, Math.min(display.scroller.scrollWidth - display.scroller.clientWidth, op.scrollLeft)) + display.scrollbars.setScrollLeft(doc.scrollLeft) + display.scroller.scrollLeft = doc.scrollLeft + alignHorizontally(cm) + } + // If we need to scroll a specific position into view, do so. + if (op.scrollToPos) { + var coords = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from), + clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin) + if (op.scrollToPos.isCursor && cm.state.focused) { maybeScrollWindow(cm, coords) } + } + + // Fire events for markers that are hidden/unidden by editing or + // undoing + var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers + if (hidden) { for (var i = 0; i < hidden.length; ++i) + { if (!hidden[i].lines.length) { signal(hidden[i], "hide") } } } + if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1) + { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], "unhide") } } } + + if (display.wrapper.offsetHeight) + { doc.scrollTop = cm.display.scroller.scrollTop } + + // Fire change events, and delayed event handlers + if (op.changeObjs) + { signal(cm, "changes", cm, op.changeObjs) } + if (op.update) + { op.update.finish() } +} + +// Run the given function in an operation +function runInOp(cm, f) { + if (cm.curOp) { return f() } + startOperation(cm) + try { return f() } + finally { endOperation(cm) } +} +// Wraps a function in an operation. Returns the wrapped function. +function operation(cm, f) { + return function() { + if (cm.curOp) { return f.apply(cm, arguments) } + startOperation(cm) + try { return f.apply(cm, arguments) } + finally { endOperation(cm) } + } +} +// Used to add methods to editor and doc instances, wrapping them in +// operations. +function methodOp(f) { + return function() { + if (this.curOp) { return f.apply(this, arguments) } + startOperation(this) + try { return f.apply(this, arguments) } + finally { endOperation(this) } + } +} +function docMethodOp(f) { + return function() { + var cm = this.cm + if (!cm || cm.curOp) { return f.apply(this, arguments) } + startOperation(cm) + try { return f.apply(this, arguments) } + finally { endOperation(cm) } + } +} + +// Updates the display.view data structure for a given change to the +// document. From and to are in pre-change coordinates. Lendiff is +// the amount of lines added or subtracted by the change. This is +// used for changes that span multiple lines, or change the way +// lines are divided into visual lines. regLineChange (below) +// registers single-line changes. +function regChange(cm, from, to, lendiff) { + if (from == null) { from = cm.doc.first } + if (to == null) { to = cm.doc.first + cm.doc.size } + if (!lendiff) { lendiff = 0 } + + var display = cm.display + if (lendiff && to < display.viewTo && + (display.updateLineNumbers == null || display.updateLineNumbers > from)) + { display.updateLineNumbers = from } + + cm.curOp.viewChanged = true + + if (from >= display.viewTo) { // Change after + if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) + { resetView(cm) } + } else if (to <= display.viewFrom) { // Change before + if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) { + resetView(cm) + } else { + display.viewFrom += lendiff + display.viewTo += lendiff + } + } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap + resetView(cm) + } else if (from <= display.viewFrom) { // Top overlap + var cut = viewCuttingPoint(cm, to, to + lendiff, 1) + if (cut) { + display.view = display.view.slice(cut.index) + display.viewFrom = cut.lineN + display.viewTo += lendiff + } else { + resetView(cm) + } + } else if (to >= display.viewTo) { // Bottom overlap + var cut$1 = viewCuttingPoint(cm, from, from, -1) + if (cut$1) { + display.view = display.view.slice(0, cut$1.index) + display.viewTo = cut$1.lineN + } else { + resetView(cm) + } + } else { // Gap in the middle + var cutTop = viewCuttingPoint(cm, from, from, -1) + var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1) + if (cutTop && cutBot) { + display.view = display.view.slice(0, cutTop.index) + .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)) + .concat(display.view.slice(cutBot.index)) + display.viewTo += lendiff + } else { + resetView(cm) + } + } + + var ext = display.externalMeasured + if (ext) { + if (to < ext.lineN) + { ext.lineN += lendiff } + else if (from < ext.lineN + ext.size) + { display.externalMeasured = null } + } +} + +// Register a change to a single line. Type must be one of "text", +// "gutter", "class", "widget" +function regLineChange(cm, line, type) { + cm.curOp.viewChanged = true + var display = cm.display, ext = cm.display.externalMeasured + if (ext && line >= ext.lineN && line < ext.lineN + ext.size) + { display.externalMeasured = null } + + if (line < display.viewFrom || line >= display.viewTo) { return } + var lineView = display.view[findViewIndex(cm, line)] + if (lineView.node == null) { return } + var arr = lineView.changes || (lineView.changes = []) + if (indexOf(arr, type) == -1) { arr.push(type) } +} + +// Clear the view. +function resetView(cm) { + cm.display.viewFrom = cm.display.viewTo = cm.doc.first + cm.display.view = [] + cm.display.viewOffset = 0 +} + +function viewCuttingPoint(cm, oldN, newN, dir) { + var index = findViewIndex(cm, oldN), diff, view = cm.display.view + if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) + { return {index: index, lineN: newN} } + var n = cm.display.viewFrom + for (var i = 0; i < index; i++) + { n += view[i].size } + if (n != oldN) { + if (dir > 0) { + if (index == view.length - 1) { return null } + diff = (n + view[index].size) - oldN + index++ + } else { + diff = n - oldN + } + oldN += diff; newN += diff + } + while (visualLineNo(cm.doc, newN) != newN) { + if (index == (dir < 0 ? 0 : view.length - 1)) { return null } + newN += dir * view[index - (dir < 0 ? 1 : 0)].size + index += dir + } + return {index: index, lineN: newN} +} + +// Force the view to cover a given range, adding empty view element +// or clipping off existing ones as needed. +function adjustView(cm, from, to) { + var display = cm.display, view = display.view + if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) { + display.view = buildViewArray(cm, from, to) + display.viewFrom = from + } else { + if (display.viewFrom > from) + { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view) } + else if (display.viewFrom < from) + { display.view = display.view.slice(findViewIndex(cm, from)) } + display.viewFrom = from + if (display.viewTo < to) + { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)) } + else if (display.viewTo > to) + { display.view = display.view.slice(0, findViewIndex(cm, to)) } + } + display.viewTo = to +} + +// Count the number of lines in the view whose DOM representation is +// out of date (or nonexistent). +function countDirtyView(cm) { + var view = cm.display.view, dirty = 0 + for (var i = 0; i < view.length; i++) { + var lineView = view[i] + if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty } + } + return dirty +} + +// HIGHLIGHT WORKER + +function startWorker(cm, time) { + if (cm.doc.mode.startState && cm.doc.frontier < cm.display.viewTo) + { cm.state.highlight.set(time, bind(highlightWorker, cm)) } +} + +function highlightWorker(cm) { + var doc = cm.doc + if (doc.frontier < doc.first) { doc.frontier = doc.first } + if (doc.frontier >= cm.display.viewTo) { return } + var end = +new Date + cm.options.workTime + var state = copyState(doc.mode, getStateBefore(cm, doc.frontier)) + var changedLines = [] + + doc.iter(doc.frontier, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) { + if (doc.frontier >= cm.display.viewFrom) { // Visible + var oldStyles = line.styles, tooLong = line.text.length > cm.options.maxHighlightLength + var highlighted = highlightLine(cm, line, tooLong ? copyState(doc.mode, state) : state, true) + line.styles = highlighted.styles + var oldCls = line.styleClasses, newCls = highlighted.classes + if (newCls) { line.styleClasses = newCls } + else if (oldCls) { line.styleClasses = null } + var ischange = !oldStyles || oldStyles.length != line.styles.length || + oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass) + for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i] } + if (ischange) { changedLines.push(doc.frontier) } + line.stateAfter = tooLong ? state : copyState(doc.mode, state) + } else { + if (line.text.length <= cm.options.maxHighlightLength) + { processLine(cm, line.text, state) } + line.stateAfter = doc.frontier % 5 == 0 ? copyState(doc.mode, state) : null + } + ++doc.frontier + if (+new Date > end) { + startWorker(cm, cm.options.workDelay) + return true + } + }) + if (changedLines.length) { runInOp(cm, function () { + for (var i = 0; i < changedLines.length; i++) + { regLineChange(cm, changedLines[i], "text") } + }) } +} + +// DISPLAY DRAWING + +var DisplayUpdate = function(cm, viewport, force) { + var display = cm.display + + this.viewport = viewport + // Store some values that we'll need later (but don't want to force a relayout for) + this.visible = visibleLines(display, cm.doc, viewport) + this.editorIsHidden = !display.wrapper.offsetWidth + this.wrapperHeight = display.wrapper.clientHeight + this.wrapperWidth = display.wrapper.clientWidth + this.oldDisplayWidth = displayWidth(cm) + this.force = force + this.dims = getDimensions(cm) + this.events = [] +}; + +DisplayUpdate.prototype.signal = function (emitter, type) { + if (hasHandler(emitter, type)) + { this.events.push(arguments) } +}; +DisplayUpdate.prototype.finish = function () { + var this$1 = this; + + for (var i = 0; i < this.events.length; i++) + { signal.apply(null, this$1.events[i]) } +}; + +function maybeClipScrollbars(cm) { + var display = cm.display + if (!display.scrollbarsClipped && display.scroller.offsetWidth) { + display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth + display.heightForcer.style.height = scrollGap(cm) + "px" + display.sizer.style.marginBottom = -display.nativeBarWidth + "px" + display.sizer.style.borderRightWidth = scrollGap(cm) + "px" + display.scrollbarsClipped = true + } +} + +// Does the actual updating of the line display. Bails out +// (returning false) when there is nothing to be done and forced is +// false. +function updateDisplayIfNeeded(cm, update) { + var display = cm.display, doc = cm.doc + + if (update.editorIsHidden) { + resetView(cm) + return false + } + + // Bail out if the visible area is already rendered and nothing changed. + if (!update.force && + update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && + (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && + display.renderedView == display.view && countDirtyView(cm) == 0) + { return false } + + if (maybeUpdateLineNumberWidth(cm)) { + resetView(cm) + update.dims = getDimensions(cm) + } + + // Compute a suitable new viewport (from & to) + var end = doc.first + doc.size + var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first) + var to = Math.min(end, update.visible.to + cm.options.viewportMargin) + if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom) } + if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo) } + if (sawCollapsedSpans) { + from = visualLineNo(cm.doc, from) + to = visualLineEndNo(cm.doc, to) + } + + var different = from != display.viewFrom || to != display.viewTo || + display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth + adjustView(cm, from, to) + + display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom)) + // Position the mover div to align with the current scroll position + cm.display.mover.style.top = display.viewOffset + "px" + + var toUpdate = countDirtyView(cm) + if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view && + (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) + { return false } + + // For big changes, we hide the enclosing element during the + // update, since that speeds up the operations on most browsers. + var focused = activeElt() + if (toUpdate > 4) { display.lineDiv.style.display = "none" } + patchDisplay(cm, display.updateLineNumbers, update.dims) + if (toUpdate > 4) { display.lineDiv.style.display = "" } + display.renderedView = display.view + // There might have been a widget with a focused element that got + // hidden or updated, if so re-focus it. + if (focused && activeElt() != focused && focused.offsetHeight) { focused.focus() } + + // Prevent selection and cursors from interfering with the scroll + // width and height. + removeChildren(display.cursorDiv) + removeChildren(display.selectionDiv) + display.gutters.style.height = display.sizer.style.minHeight = 0 + + if (different) { + display.lastWrapHeight = update.wrapperHeight + display.lastWrapWidth = update.wrapperWidth + startWorker(cm, 400) + } + + display.updateLineNumbers = null + + return true +} + +function postUpdateDisplay(cm, update) { + var viewport = update.viewport + + for (var first = true;; first = false) { + if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) { + // Clip forced viewport to actual scrollable area. + if (viewport && viewport.top != null) + { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)} } + // Updated line heights might result in the drawn area not + // actually covering the viewport. Keep looping until it does. + update.visible = visibleLines(cm.display, cm.doc, viewport) + if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) + { break } + } + if (!updateDisplayIfNeeded(cm, update)) { break } + updateHeightsInViewport(cm) + var barMeasure = measureForScrollbars(cm) + updateSelection(cm) + updateScrollbars(cm, barMeasure) + setDocumentHeight(cm, barMeasure) + } + + update.signal(cm, "update", cm) + if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) { + update.signal(cm, "viewportChange", cm, cm.display.viewFrom, cm.display.viewTo) + cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo + } +} + +function updateDisplaySimple(cm, viewport) { + var update = new DisplayUpdate(cm, viewport) + if (updateDisplayIfNeeded(cm, update)) { + updateHeightsInViewport(cm) + postUpdateDisplay(cm, update) + var barMeasure = measureForScrollbars(cm) + updateSelection(cm) + updateScrollbars(cm, barMeasure) + setDocumentHeight(cm, barMeasure) + update.finish() + } +} + +// Sync the actual display DOM structure with display.view, removing +// nodes for lines that are no longer in view, and creating the ones +// that are not there yet, and updating the ones that are out of +// date. +function patchDisplay(cm, updateNumbersFrom, dims) { + var display = cm.display, lineNumbers = cm.options.lineNumbers + var container = display.lineDiv, cur = container.firstChild + + function rm(node) { + var next = node.nextSibling + // Works around a throw-scroll bug in OS X Webkit + if (webkit && mac && cm.display.currentWheelTarget == node) + { node.style.display = "none" } + else + { node.parentNode.removeChild(node) } + return next + } + + var view = display.view, lineN = display.viewFrom + // Loop over the elements in the view, syncing cur (the DOM nodes + // in display.lineDiv) with the view as we go. + for (var i = 0; i < view.length; i++) { + var lineView = view[i] + if (lineView.hidden) { + } else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet + var node = buildLineElement(cm, lineView, lineN, dims) + container.insertBefore(node, cur) + } else { // Already drawn + while (cur != lineView.node) { cur = rm(cur) } + var updateNumber = lineNumbers && updateNumbersFrom != null && + updateNumbersFrom <= lineN && lineView.lineNumber + if (lineView.changes) { + if (indexOf(lineView.changes, "gutter") > -1) { updateNumber = false } + updateLineForChanges(cm, lineView, lineN, dims) + } + if (updateNumber) { + removeChildren(lineView.lineNumber) + lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN))) + } + cur = lineView.node.nextSibling + } + lineN += lineView.size + } + while (cur) { cur = rm(cur) } +} + +function updateGutterSpace(cm) { + var width = cm.display.gutters.offsetWidth + cm.display.sizer.style.marginLeft = width + "px" +} + +function setDocumentHeight(cm, measure) { + cm.display.sizer.style.minHeight = measure.docHeight + "px" + cm.display.heightForcer.style.top = measure.docHeight + "px" + cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + "px" +} + +// Rebuild the gutter elements, ensure the margin to the left of the +// code matches their width. +function updateGutters(cm) { + var gutters = cm.display.gutters, specs = cm.options.gutters + removeChildren(gutters) + var i = 0 + for (; i < specs.length; ++i) { + var gutterClass = specs[i] + var gElt = gutters.appendChild(elt("div", null, "CodeMirror-gutter " + gutterClass)) + if (gutterClass == "CodeMirror-linenumbers") { + cm.display.lineGutter = gElt + gElt.style.width = (cm.display.lineNumWidth || 1) + "px" + } + } + gutters.style.display = i ? "" : "none" + updateGutterSpace(cm) +} + +// Make sure the gutters options contains the element +// "CodeMirror-linenumbers" when the lineNumbers option is true. +function setGuttersForLineNumbers(options) { + var found = indexOf(options.gutters, "CodeMirror-linenumbers") + if (found == -1 && options.lineNumbers) { + options.gutters = options.gutters.concat(["CodeMirror-linenumbers"]) + } else if (found > -1 && !options.lineNumbers) { + options.gutters = options.gutters.slice(0) + options.gutters.splice(found, 1) + } +} + +// Selection objects are immutable. A new one is created every time +// the selection changes. A selection is one or more non-overlapping +// (and non-touching) ranges, sorted, and an integer that indicates +// which one is the primary selection (the one that's scrolled into +// view, that getCursor returns, etc). +function Selection(ranges, primIndex) { + this.ranges = ranges + this.primIndex = primIndex +} + +Selection.prototype = { + primary: function() { return this.ranges[this.primIndex] }, + equals: function(other) { + var this$1 = this; + + if (other == this) { return true } + if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false } + for (var i = 0; i < this.ranges.length; i++) { + var here = this$1.ranges[i], there = other.ranges[i] + if (cmp(here.anchor, there.anchor) != 0 || cmp(here.head, there.head) != 0) { return false } + } + return true + }, + deepCopy: function() { + var this$1 = this; + + var out = [] + for (var i = 0; i < this.ranges.length; i++) + { out[i] = new Range(copyPos(this$1.ranges[i].anchor), copyPos(this$1.ranges[i].head)) } + return new Selection(out, this.primIndex) + }, + somethingSelected: function() { + var this$1 = this; + + for (var i = 0; i < this.ranges.length; i++) + { if (!this$1.ranges[i].empty()) { return true } } + return false + }, + contains: function(pos, end) { + var this$1 = this; + + if (!end) { end = pos } + for (var i = 0; i < this.ranges.length; i++) { + var range = this$1.ranges[i] + if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) + { return i } + } + return -1 + } +} + +function Range(anchor, head) { + this.anchor = anchor; this.head = head +} + +Range.prototype = { + from: function() { return minPos(this.anchor, this.head) }, + to: function() { return maxPos(this.anchor, this.head) }, + empty: function() { + return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch + } +} + +// Take an unsorted, potentially overlapping set of ranges, and +// build a selection out of it. 'Consumes' ranges array (modifying +// it). +function normalizeSelection(ranges, primIndex) { + var prim = ranges[primIndex] + ranges.sort(function (a, b) { return cmp(a.from(), b.from()); }) + primIndex = indexOf(ranges, prim) + for (var i = 1; i < ranges.length; i++) { + var cur = ranges[i], prev = ranges[i - 1] + if (cmp(prev.to(), cur.from()) >= 0) { + var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to()) + var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head + if (i <= primIndex) { --primIndex } + ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to)) + } + } + return new Selection(ranges, primIndex) +} + +function simpleSelection(anchor, head) { + return new Selection([new Range(anchor, head || anchor)], 0) +} + +// Compute the position of the end of a change (its 'to' property +// refers to the pre-change end). +function changeEnd(change) { + if (!change.text) { return change.to } + return Pos(change.from.line + change.text.length - 1, + lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0)) +} + +// Adjust a position to refer to the post-change position of the +// same text, or the end of the change if the change covers it. +function adjustForChange(pos, change) { + if (cmp(pos, change.from) < 0) { return pos } + if (cmp(pos, change.to) <= 0) { return changeEnd(change) } + + var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch + if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch } + return Pos(line, ch) +} + +function computeSelAfterChange(doc, change) { + var out = [] + for (var i = 0; i < doc.sel.ranges.length; i++) { + var range = doc.sel.ranges[i] + out.push(new Range(adjustForChange(range.anchor, change), + adjustForChange(range.head, change))) + } + return normalizeSelection(out, doc.sel.primIndex) +} + +function offsetPos(pos, old, nw) { + if (pos.line == old.line) + { return Pos(nw.line, pos.ch - old.ch + nw.ch) } + else + { return Pos(nw.line + (pos.line - old.line), pos.ch) } +} + +// Used by replaceSelections to allow moving the selection to the +// start or around the replaced test. Hint may be "start" or "around". +function computeReplacedSel(doc, changes, hint) { + var out = [] + var oldPrev = Pos(doc.first, 0), newPrev = oldPrev + for (var i = 0; i < changes.length; i++) { + var change = changes[i] + var from = offsetPos(change.from, oldPrev, newPrev) + var to = offsetPos(changeEnd(change), oldPrev, newPrev) + oldPrev = change.to + newPrev = to + if (hint == "around") { + var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0 + out[i] = new Range(inv ? to : from, inv ? from : to) + } else { + out[i] = new Range(from, from) + } + } + return new Selection(out, doc.sel.primIndex) +} + +// Used to get the editor into a consistent state again when options change. + +function loadMode(cm) { + cm.doc.mode = getMode(cm.options, cm.doc.modeOption) + resetModeState(cm) +} + +function resetModeState(cm) { + cm.doc.iter(function (line) { + if (line.stateAfter) { line.stateAfter = null } + if (line.styles) { line.styles = null } + }) + cm.doc.frontier = cm.doc.first + startWorker(cm, 100) + cm.state.modeGen++ + if (cm.curOp) { regChange(cm) } +} + +// DOCUMENT DATA STRUCTURE + +// By default, updates that start and end at the beginning of a line +// are treated specially, in order to make the association of line +// widgets and marker elements with the text behave more intuitive. +function isWholeLineUpdate(doc, change) { + return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == "" && + (!doc.cm || doc.cm.options.wholeLineUpdateBefore) +} + +// Perform a change on the document data structure. +function updateDoc(doc, change, markedSpans, estimateHeight) { + function spansFor(n) {return markedSpans ? markedSpans[n] : null} + function update(line, text, spans) { + updateLine(line, text, spans, estimateHeight) + signalLater(line, "change", line, change) + } + function linesFor(start, end) { + var result = [] + for (var i = start; i < end; ++i) + { result.push(new Line(text[i], spansFor(i), estimateHeight)) } + return result + } + + var from = change.from, to = change.to, text = change.text + var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line) + var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line + + // Adjust the line structure + if (change.full) { + doc.insert(0, linesFor(0, text.length)) + doc.remove(text.length, doc.size - text.length) + } else if (isWholeLineUpdate(doc, change)) { + // This is a whole-line replace. Treated specially to make + // sure line objects move the way they are supposed to. + var added = linesFor(0, text.length - 1) + update(lastLine, lastLine.text, lastSpans) + if (nlines) { doc.remove(from.line, nlines) } + if (added.length) { doc.insert(from.line, added) } + } else if (firstLine == lastLine) { + if (text.length == 1) { + update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans) + } else { + var added$1 = linesFor(1, text.length - 1) + added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight)) + update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)) + doc.insert(from.line + 1, added$1) + } + } else if (text.length == 1) { + update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0)) + doc.remove(from.line + 1, nlines) + } else { + update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)) + update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans) + var added$2 = linesFor(1, text.length - 1) + if (nlines > 1) { doc.remove(from.line + 1, nlines - 1) } + doc.insert(from.line + 1, added$2) + } + + signalLater(doc, "change", doc, change) +} + +// Call f for all linked documents. +function linkedDocs(doc, f, sharedHistOnly) { + function propagate(doc, skip, sharedHist) { + if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) { + var rel = doc.linked[i] + if (rel.doc == skip) { continue } + var shared = sharedHist && rel.sharedHist + if (sharedHistOnly && !shared) { continue } + f(rel.doc, shared) + propagate(rel.doc, doc, shared) + } } + } + propagate(doc, null, true) +} + +// Attach a document to an editor. +function attachDoc(cm, doc) { + if (doc.cm) { throw new Error("This document is already in use.") } + cm.doc = doc + doc.cm = cm + estimateLineHeights(cm) + loadMode(cm) + if (!cm.options.lineWrapping) { findMaxLine(cm) } + cm.options.mode = doc.modeOption + regChange(cm) +} + +function History(startGen) { + // Arrays of change events and selections. Doing something adds an + // event to done and clears undo. Undoing moves events from done + // to undone, redoing moves them in the other direction. + this.done = []; this.undone = [] + this.undoDepth = Infinity + // Used to track when changes can be merged into a single undo + // event + this.lastModTime = this.lastSelTime = 0 + this.lastOp = this.lastSelOp = null + this.lastOrigin = this.lastSelOrigin = null + // Used by the isClean() method + this.generation = this.maxGeneration = startGen || 1 +} + +// Create a history change event from an updateDoc-style change +// object. +function historyChangeFromChange(doc, change) { + var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)} + attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1) + linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true) + return histChange +} + +// Pop all selection events off the end of a history array. Stop at +// a change event. +function clearSelectionEvents(array) { + while (array.length) { + var last = lst(array) + if (last.ranges) { array.pop() } + else { break } + } +} + +// Find the top change event in the history. Pop off selection +// events that are in the way. +function lastChangeEvent(hist, force) { + if (force) { + clearSelectionEvents(hist.done) + return lst(hist.done) + } else if (hist.done.length && !lst(hist.done).ranges) { + return lst(hist.done) + } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) { + hist.done.pop() + return lst(hist.done) + } +} + +// Register a change in the history. Merges changes that are within +// a single operation, or are close together with an origin that +// allows merging (starting with "+") into a single event. +function addChangeToHistory(doc, change, selAfter, opId) { + var hist = doc.history + hist.undone.length = 0 + var time = +new Date, cur + var last + + if ((hist.lastOp == opId || + hist.lastOrigin == change.origin && change.origin && + ((change.origin.charAt(0) == "+" && doc.cm && hist.lastModTime > time - doc.cm.options.historyEventDelay) || + change.origin.charAt(0) == "*")) && + (cur = lastChangeEvent(hist, hist.lastOp == opId))) { + // Merge this change into the last event + last = lst(cur.changes) + if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) { + // Optimized case for simple insertion -- don't want to add + // new changesets for every character typed + last.to = changeEnd(change) + } else { + // Add new sub-event + cur.changes.push(historyChangeFromChange(doc, change)) + } + } else { + // Can not be merged, start a new event. + var before = lst(hist.done) + if (!before || !before.ranges) + { pushSelectionToHistory(doc.sel, hist.done) } + cur = {changes: [historyChangeFromChange(doc, change)], + generation: hist.generation} + hist.done.push(cur) + while (hist.done.length > hist.undoDepth) { + hist.done.shift() + if (!hist.done[0].ranges) { hist.done.shift() } + } + } + hist.done.push(selAfter) + hist.generation = ++hist.maxGeneration + hist.lastModTime = hist.lastSelTime = time + hist.lastOp = hist.lastSelOp = opId + hist.lastOrigin = hist.lastSelOrigin = change.origin + + if (!last) { signal(doc, "historyAdded") } +} + +function selectionEventCanBeMerged(doc, origin, prev, sel) { + var ch = origin.charAt(0) + return ch == "*" || + ch == "+" && + prev.ranges.length == sel.ranges.length && + prev.somethingSelected() == sel.somethingSelected() && + new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500) +} + +// Called whenever the selection changes, sets the new selection as +// the pending selection in the history, and pushes the old pending +// selection into the 'done' array when it was significantly +// different (in number of selected ranges, emptiness, or time). +function addSelectionToHistory(doc, sel, opId, options) { + var hist = doc.history, origin = options && options.origin + + // A new event is started when the previous origin does not match + // the current, or the origins don't allow matching. Origins + // starting with * are always merged, those starting with + are + // merged when similar and close together in time. + if (opId == hist.lastSelOp || + (origin && hist.lastSelOrigin == origin && + (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || + selectionEventCanBeMerged(doc, origin, lst(hist.done), sel)))) + { hist.done[hist.done.length - 1] = sel } + else + { pushSelectionToHistory(sel, hist.done) } + + hist.lastSelTime = +new Date + hist.lastSelOrigin = origin + hist.lastSelOp = opId + if (options && options.clearRedo !== false) + { clearSelectionEvents(hist.undone) } +} + +function pushSelectionToHistory(sel, dest) { + var top = lst(dest) + if (!(top && top.ranges && top.equals(sel))) + { dest.push(sel) } +} + +// Used to store marked span information in the history. +function attachLocalSpans(doc, change, from, to) { + var existing = change["spans_" + doc.id], n = 0 + doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) { + if (line.markedSpans) + { (existing || (existing = change["spans_" + doc.id] = {}))[n] = line.markedSpans } + ++n + }) +} + +// When un/re-doing restores text containing marked spans, those +// that have been explicitly cleared should not be restored. +function removeClearedSpans(spans) { + if (!spans) { return null } + var out + for (var i = 0; i < spans.length; ++i) { + if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i) } } + else if (out) { out.push(spans[i]) } + } + return !out ? spans : out.length ? out : null +} + +// Retrieve and filter the old marked spans stored in a change event. +function getOldSpans(doc, change) { + var found = change["spans_" + doc.id] + if (!found) { return null } + var nw = [] + for (var i = 0; i < change.text.length; ++i) + { nw.push(removeClearedSpans(found[i])) } + return nw +} + +// Used for un/re-doing changes from the history. Combines the +// result of computing the existing spans with the set of spans that +// existed in the history (so that deleting around a span and then +// undoing brings back the span). +function mergeOldSpans(doc, change) { + var old = getOldSpans(doc, change) + var stretched = stretchSpansOverChange(doc, change) + if (!old) { return stretched } + if (!stretched) { return old } + + for (var i = 0; i < old.length; ++i) { + var oldCur = old[i], stretchCur = stretched[i] + if (oldCur && stretchCur) { + spans: for (var j = 0; j < stretchCur.length; ++j) { + var span = stretchCur[j] + for (var k = 0; k < oldCur.length; ++k) + { if (oldCur[k].marker == span.marker) { continue spans } } + oldCur.push(span) + } + } else if (stretchCur) { + old[i] = stretchCur + } + } + return old +} + +// Used both to provide a JSON-safe object in .getHistory, and, when +// detaching a document, to split the history in two +function copyHistoryArray(events, newGroup, instantiateSel) { + var copy = [] + for (var i = 0; i < events.length; ++i) { + var event = events[i] + if (event.ranges) { + copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event) + continue + } + var changes = event.changes, newChanges = [] + copy.push({changes: newChanges}) + for (var j = 0; j < changes.length; ++j) { + var change = changes[j], m = (void 0) + newChanges.push({from: change.from, to: change.to, text: change.text}) + if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\d+)$/)) { + if (indexOf(newGroup, Number(m[1])) > -1) { + lst(newChanges)[prop] = change[prop] + delete change[prop] + } + } } } + } + } + return copy +} + +// The 'scroll' parameter given to many of these indicated whether +// the new cursor position should be scrolled into view after +// modifying the selection. + +// If shift is held or the extend flag is set, extends a range to +// include a given position (and optionally a second position). +// Otherwise, simply returns the range between the given positions. +// Used for cursor motion and such. +function extendRange(doc, range, head, other) { + if (doc.cm && doc.cm.display.shift || doc.extend) { + var anchor = range.anchor + if (other) { + var posBefore = cmp(head, anchor) < 0 + if (posBefore != (cmp(other, anchor) < 0)) { + anchor = head + head = other + } else if (posBefore != (cmp(head, other) < 0)) { + head = other + } + } + return new Range(anchor, head) + } else { + return new Range(other || head, head) + } +} + +// Extend the primary selection range, discard the rest. +function extendSelection(doc, head, other, options) { + setSelection(doc, new Selection([extendRange(doc, doc.sel.primary(), head, other)], 0), options) +} + +// Extend all selections (pos is an array of selections with length +// equal the number of selections) +function extendSelections(doc, heads, options) { + var out = [] + for (var i = 0; i < doc.sel.ranges.length; i++) + { out[i] = extendRange(doc, doc.sel.ranges[i], heads[i], null) } + var newSel = normalizeSelection(out, doc.sel.primIndex) + setSelection(doc, newSel, options) +} + +// Updates a single range in the selection. +function replaceOneSelection(doc, i, range, options) { + var ranges = doc.sel.ranges.slice(0) + ranges[i] = range + setSelection(doc, normalizeSelection(ranges, doc.sel.primIndex), options) +} + +// Reset the selection to a single range. +function setSimpleSelection(doc, anchor, head, options) { + setSelection(doc, simpleSelection(anchor, head), options) +} + +// Give beforeSelectionChange handlers a change to influence a +// selection update. +function filterSelectionChange(doc, sel, options) { + var obj = { + ranges: sel.ranges, + update: function(ranges) { + var this$1 = this; + + this.ranges = [] + for (var i = 0; i < ranges.length; i++) + { this$1.ranges[i] = new Range(clipPos(doc, ranges[i].anchor), + clipPos(doc, ranges[i].head)) } + }, + origin: options && options.origin + } + signal(doc, "beforeSelectionChange", doc, obj) + if (doc.cm) { signal(doc.cm, "beforeSelectionChange", doc.cm, obj) } + if (obj.ranges != sel.ranges) { return normalizeSelection(obj.ranges, obj.ranges.length - 1) } + else { return sel } +} + +function setSelectionReplaceHistory(doc, sel, options) { + var done = doc.history.done, last = lst(done) + if (last && last.ranges) { + done[done.length - 1] = sel + setSelectionNoUndo(doc, sel, options) + } else { + setSelection(doc, sel, options) + } +} + +// Set a new selection. +function setSelection(doc, sel, options) { + setSelectionNoUndo(doc, sel, options) + addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options) +} + +function setSelectionNoUndo(doc, sel, options) { + if (hasHandler(doc, "beforeSelectionChange") || doc.cm && hasHandler(doc.cm, "beforeSelectionChange")) + { sel = filterSelectionChange(doc, sel, options) } + + var bias = options && options.bias || + (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1) + setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true)) + + if (!(options && options.scroll === false) && doc.cm) + { ensureCursorVisible(doc.cm) } +} + +function setSelectionInner(doc, sel) { + if (sel.equals(doc.sel)) { return } + + doc.sel = sel + + if (doc.cm) { + doc.cm.curOp.updateInput = doc.cm.curOp.selectionChanged = true + signalCursorActivity(doc.cm) + } + signalLater(doc, "cursorActivity", doc) +} + +// Verify that the selection does not partially select any atomic +// marked ranges. +function reCheckSelection(doc) { + setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false), sel_dontScroll) +} + +// Return a selection that does not partially select any atomic +// ranges. +function skipAtomicInSelection(doc, sel, bias, mayClear) { + var out + for (var i = 0; i < sel.ranges.length; i++) { + var range = sel.ranges[i] + var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i] + var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear) + var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear) + if (out || newAnchor != range.anchor || newHead != range.head) { + if (!out) { out = sel.ranges.slice(0, i) } + out[i] = new Range(newAnchor, newHead) + } + } + return out ? normalizeSelection(out, sel.primIndex) : sel +} + +function skipAtomicInner(doc, pos, oldPos, dir, mayClear) { + var line = getLine(doc, pos.line) + if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) { + var sp = line.markedSpans[i], m = sp.marker + if ((sp.from == null || (m.inclusiveLeft ? sp.from <= pos.ch : sp.from < pos.ch)) && + (sp.to == null || (m.inclusiveRight ? sp.to >= pos.ch : sp.to > pos.ch))) { + if (mayClear) { + signal(m, "beforeCursorEnter") + if (m.explicitlyCleared) { + if (!line.markedSpans) { break } + else {--i; continue} + } + } + if (!m.atomic) { continue } + + if (oldPos) { + var near = m.find(dir < 0 ? 1 : -1), diff = (void 0) + if (dir < 0 ? m.inclusiveRight : m.inclusiveLeft) + { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null) } + if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0)) + { return skipAtomicInner(doc, near, pos, dir, mayClear) } + } + + var far = m.find(dir < 0 ? -1 : 1) + if (dir < 0 ? m.inclusiveLeft : m.inclusiveRight) + { far = movePos(doc, far, dir, far.line == pos.line ? line : null) } + return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null + } + } } + return pos +} + +// Ensure a given position is not inside an atomic range. +function skipAtomic(doc, pos, oldPos, bias, mayClear) { + var dir = bias || 1 + var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) || + (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) || + skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || + (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true)) + if (!found) { + doc.cantEdit = true + return Pos(doc.first, 0) + } + return found +} + +function movePos(doc, pos, dir, line) { + if (dir < 0 && pos.ch == 0) { + if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) } + else { return null } + } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) { + if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) } + else { return null } + } else { + return new Pos(pos.line, pos.ch + dir) + } +} + +function selectAll(cm) { + cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll) +} + +// UPDATING + +// Allow "beforeChange" event handlers to influence a change +function filterChange(doc, change, update) { + var obj = { + canceled: false, + from: change.from, + to: change.to, + text: change.text, + origin: change.origin, + cancel: function () { return obj.canceled = true; } + } + if (update) { obj.update = function (from, to, text, origin) { + if (from) { obj.from = clipPos(doc, from) } + if (to) { obj.to = clipPos(doc, to) } + if (text) { obj.text = text } + if (origin !== undefined) { obj.origin = origin } + } } + signal(doc, "beforeChange", doc, obj) + if (doc.cm) { signal(doc.cm, "beforeChange", doc.cm, obj) } + + if (obj.canceled) { return null } + return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin} +} + +// Apply a change to a document, and add it to the document's +// history, and propagating it to all linked documents. +function makeChange(doc, change, ignoreReadOnly) { + if (doc.cm) { + if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) } + if (doc.cm.state.suppressEdits) { return } + } + + if (hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange")) { + change = filterChange(doc, change, true) + if (!change) { return } + } + + // Possibly split or suppress the update based on the presence + // of read-only spans in its range. + var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to) + if (split) { + for (var i = split.length - 1; i >= 0; --i) + { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [""] : change.text}) } + } else { + makeChangeInner(doc, change) + } +} + +function makeChangeInner(doc, change) { + if (change.text.length == 1 && change.text[0] == "" && cmp(change.from, change.to) == 0) { return } + var selAfter = computeSelAfterChange(doc, change) + addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN) + + makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change)) + var rebased = [] + + linkedDocs(doc, function (doc, sharedHist) { + if (!sharedHist && indexOf(rebased, doc.history) == -1) { + rebaseHist(doc.history, change) + rebased.push(doc.history) + } + makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change)) + }) +} + +// Revert a change stored in a document's history. +function makeChangeFromHistory(doc, type, allowSelectionOnly) { + if (doc.cm && doc.cm.state.suppressEdits && !allowSelectionOnly) { return } + + var hist = doc.history, event, selAfter = doc.sel + var source = type == "undo" ? hist.done : hist.undone, dest = type == "undo" ? hist.undone : hist.done + + // Verify that there is a useable event (so that ctrl-z won't + // needlessly clear selection events) + var i = 0 + for (; i < source.length; i++) { + event = source[i] + if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) + { break } + } + if (i == source.length) { return } + hist.lastOrigin = hist.lastSelOrigin = null + + for (;;) { + event = source.pop() + if (event.ranges) { + pushSelectionToHistory(event, dest) + if (allowSelectionOnly && !event.equals(doc.sel)) { + setSelection(doc, event, {clearRedo: false}) + return + } + selAfter = event + } + else { break } + } + + // Build up a reverse change object to add to the opposite history + // stack (redo when undoing, and vice versa). + var antiChanges = [] + pushSelectionToHistory(selAfter, dest) + dest.push({changes: antiChanges, generation: hist.generation}) + hist.generation = event.generation || ++hist.maxGeneration + + var filter = hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange") + + var loop = function ( i ) { + var change = event.changes[i] + change.origin = type + if (filter && !filterChange(doc, change, false)) { + source.length = 0 + return {} + } + + antiChanges.push(historyChangeFromChange(doc, change)) + + var after = i ? computeSelAfterChange(doc, change) : lst(source) + makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change)) + if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}) } + var rebased = [] + + // Propagate to the linked documents + linkedDocs(doc, function (doc, sharedHist) { + if (!sharedHist && indexOf(rebased, doc.history) == -1) { + rebaseHist(doc.history, change) + rebased.push(doc.history) + } + makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change)) + }) + }; + + for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) { + var returned = loop( i$1 ); + + if ( returned ) return returned.v; + } +} + +// Sub-views need their line numbers shifted when text is added +// above or below them in the parent document. +function shiftDoc(doc, distance) { + if (distance == 0) { return } + doc.first += distance + doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range( + Pos(range.anchor.line + distance, range.anchor.ch), + Pos(range.head.line + distance, range.head.ch) + ); }), doc.sel.primIndex) + if (doc.cm) { + regChange(doc.cm, doc.first, doc.first - distance, distance) + for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) + { regLineChange(doc.cm, l, "gutter") } + } +} + +// More lower-level change function, handling only a single document +// (not linked ones). +function makeChangeSingleDoc(doc, change, selAfter, spans) { + if (doc.cm && !doc.cm.curOp) + { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) } + + if (change.to.line < doc.first) { + shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line)) + return + } + if (change.from.line > doc.lastLine()) { return } + + // Clip the change to the size of this doc + if (change.from.line < doc.first) { + var shift = change.text.length - 1 - (doc.first - change.from.line) + shiftDoc(doc, shift) + change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch), + text: [lst(change.text)], origin: change.origin} + } + var last = doc.lastLine() + if (change.to.line > last) { + change = {from: change.from, to: Pos(last, getLine(doc, last).text.length), + text: [change.text[0]], origin: change.origin} + } + + change.removed = getBetween(doc, change.from, change.to) + + if (!selAfter) { selAfter = computeSelAfterChange(doc, change) } + if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans) } + else { updateDoc(doc, change, spans) } + setSelectionNoUndo(doc, selAfter, sel_dontScroll) +} + +// Handle the interaction of a change to a document with the editor +// that this document is part of. +function makeChangeSingleDocInEditor(cm, change, spans) { + var doc = cm.doc, display = cm.display, from = change.from, to = change.to + + var recomputeMaxLength = false, checkWidthStart = from.line + if (!cm.options.lineWrapping) { + checkWidthStart = lineNo(visualLine(getLine(doc, from.line))) + doc.iter(checkWidthStart, to.line + 1, function (line) { + if (line == display.maxLine) { + recomputeMaxLength = true + return true + } + }) + } + + if (doc.sel.contains(change.from, change.to) > -1) + { signalCursorActivity(cm) } + + updateDoc(doc, change, spans, estimateHeight(cm)) + + if (!cm.options.lineWrapping) { + doc.iter(checkWidthStart, from.line + change.text.length, function (line) { + var len = lineLength(line) + if (len > display.maxLineLength) { + display.maxLine = line + display.maxLineLength = len + display.maxLineChanged = true + recomputeMaxLength = false + } + }) + if (recomputeMaxLength) { cm.curOp.updateMaxLine = true } + } + + // Adjust frontier, schedule worker + doc.frontier = Math.min(doc.frontier, from.line) + startWorker(cm, 400) + + var lendiff = change.text.length - (to.line - from.line) - 1 + // Remember that these lines changed, for updating the display + if (change.full) + { regChange(cm) } + else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) + { regLineChange(cm, from.line, "text") } + else + { regChange(cm, from.line, to.line + 1, lendiff) } + + var changesHandler = hasHandler(cm, "changes"), changeHandler = hasHandler(cm, "change") + if (changeHandler || changesHandler) { + var obj = { + from: from, to: to, + text: change.text, + removed: change.removed, + origin: change.origin + } + if (changeHandler) { signalLater(cm, "change", cm, obj) } + if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj) } + } + cm.display.selForContextMenu = null +} + +function replaceRange(doc, code, from, to, origin) { + if (!to) { to = from } + if (cmp(to, from) < 0) { var tmp = to; to = from; from = tmp } + if (typeof code == "string") { code = doc.splitLines(code) } + makeChange(doc, {from: from, to: to, text: code, origin: origin}) +} + +// Rebasing/resetting history to deal with externally-sourced changes + +function rebaseHistSelSingle(pos, from, to, diff) { + if (to < pos.line) { + pos.line += diff + } else if (from < pos.line) { + pos.line = from + pos.ch = 0 + } +} + +// Tries to rebase an array of history events given a change in the +// document. If the change touches the same lines as the event, the +// event, and everything 'behind' it, is discarded. If the change is +// before the event, the event's positions are updated. Uses a +// copy-on-write scheme for the positions, to avoid having to +// reallocate them all on every rebase, but also avoid problems with +// shared position objects being unsafely updated. +function rebaseHistArray(array, from, to, diff) { + for (var i = 0; i < array.length; ++i) { + var sub = array[i], ok = true + if (sub.ranges) { + if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true } + for (var j = 0; j < sub.ranges.length; j++) { + rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff) + rebaseHistSelSingle(sub.ranges[j].head, from, to, diff) + } + continue + } + for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) { + var cur = sub.changes[j$1] + if (to < cur.from.line) { + cur.from = Pos(cur.from.line + diff, cur.from.ch) + cur.to = Pos(cur.to.line + diff, cur.to.ch) + } else if (from <= cur.to.line) { + ok = false + break + } + } + if (!ok) { + array.splice(0, i + 1) + i = 0 + } + } +} + +function rebaseHist(hist, change) { + var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1 + rebaseHistArray(hist.done, from, to, diff) + rebaseHistArray(hist.undone, from, to, diff) +} + +// Utility for applying a change to a line by handle or number, +// returning the number and optionally registering the line as +// changed. +function changeLine(doc, handle, changeType, op) { + var no = handle, line = handle + if (typeof handle == "number") { line = getLine(doc, clipLine(doc, handle)) } + else { no = lineNo(handle) } + if (no == null) { return null } + if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType) } + return line +} + +// The document is represented as a BTree consisting of leaves, with +// chunk of lines in them, and branches, with up to ten leaves or +// other branch nodes below them. The top node is always a branch +// node, and is the document object itself (meaning it has +// additional methods and properties). +// +// All nodes have parent links. The tree is used both to go from +// line numbers to line objects, and to go from objects to numbers. +// It also indexes by height, and is used to convert between height +// and line object, and to find the total height of the document. +// +// See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html + +function LeafChunk(lines) { + var this$1 = this; + + this.lines = lines + this.parent = null + var height = 0 + for (var i = 0; i < lines.length; ++i) { + lines[i].parent = this$1 + height += lines[i].height + } + this.height = height +} + +LeafChunk.prototype = { + chunkSize: function() { return this.lines.length }, + // Remove the n lines at offset 'at'. + removeInner: function(at, n) { + var this$1 = this; + + for (var i = at, e = at + n; i < e; ++i) { + var line = this$1.lines[i] + this$1.height -= line.height + cleanUpLine(line) + signalLater(line, "delete") + } + this.lines.splice(at, n) + }, + // Helper used to collapse a small branch into a single leaf. + collapse: function(lines) { + lines.push.apply(lines, this.lines) + }, + // Insert the given array of lines at offset 'at', count them as + // having the given height. + insertInner: function(at, lines, height) { + var this$1 = this; + + this.height += height + this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at)) + for (var i = 0; i < lines.length; ++i) { lines[i].parent = this$1 } + }, + // Used to iterate over a part of the tree. + iterN: function(at, n, op) { + var this$1 = this; + + for (var e = at + n; at < e; ++at) + { if (op(this$1.lines[at])) { return true } } + } +} + +function BranchChunk(children) { + var this$1 = this; + + this.children = children + var size = 0, height = 0 + for (var i = 0; i < children.length; ++i) { + var ch = children[i] + size += ch.chunkSize(); height += ch.height + ch.parent = this$1 + } + this.size = size + this.height = height + this.parent = null +} + +BranchChunk.prototype = { + chunkSize: function() { return this.size }, + removeInner: function(at, n) { + var this$1 = this; + + this.size -= n + for (var i = 0; i < this.children.length; ++i) { + var child = this$1.children[i], sz = child.chunkSize() + if (at < sz) { + var rm = Math.min(n, sz - at), oldHeight = child.height + child.removeInner(at, rm) + this$1.height -= oldHeight - child.height + if (sz == rm) { this$1.children.splice(i--, 1); child.parent = null } + if ((n -= rm) == 0) { break } + at = 0 + } else { at -= sz } + } + // If the result is smaller than 25 lines, ensure that it is a + // single leaf node. + if (this.size - n < 25 && + (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) { + var lines = [] + this.collapse(lines) + this.children = [new LeafChunk(lines)] + this.children[0].parent = this + } + }, + collapse: function(lines) { + var this$1 = this; + + for (var i = 0; i < this.children.length; ++i) { this$1.children[i].collapse(lines) } + }, + insertInner: function(at, lines, height) { + var this$1 = this; + + this.size += lines.length + this.height += height + for (var i = 0; i < this.children.length; ++i) { + var child = this$1.children[i], sz = child.chunkSize() + if (at <= sz) { + child.insertInner(at, lines, height) + if (child.lines && child.lines.length > 50) { + // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced. + // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest. + var remaining = child.lines.length % 25 + 25 + for (var pos = remaining; pos < child.lines.length;) { + var leaf = new LeafChunk(child.lines.slice(pos, pos += 25)) + child.height -= leaf.height + this$1.children.splice(++i, 0, leaf) + leaf.parent = this$1 + } + child.lines = child.lines.slice(0, remaining) + this$1.maybeSpill() + } + break + } + at -= sz + } + }, + // When a node has grown, check whether it should be split. + maybeSpill: function() { + if (this.children.length <= 10) { return } + var me = this + do { + var spilled = me.children.splice(me.children.length - 5, 5) + var sibling = new BranchChunk(spilled) + if (!me.parent) { // Become the parent node + var copy = new BranchChunk(me.children) + copy.parent = me + me.children = [copy, sibling] + me = copy + } else { + me.size -= sibling.size + me.height -= sibling.height + var myIndex = indexOf(me.parent.children, me) + me.parent.children.splice(myIndex + 1, 0, sibling) + } + sibling.parent = me.parent + } while (me.children.length > 10) + me.parent.maybeSpill() + }, + iterN: function(at, n, op) { + var this$1 = this; + + for (var i = 0; i < this.children.length; ++i) { + var child = this$1.children[i], sz = child.chunkSize() + if (at < sz) { + var used = Math.min(n, sz - at) + if (child.iterN(at, used, op)) { return true } + if ((n -= used) == 0) { break } + at = 0 + } else { at -= sz } + } + } +} + +// Line widgets are block elements displayed above or below a line. + +function LineWidget(doc, node, options) { + var this$1 = this; + + if (options) { for (var opt in options) { if (options.hasOwnProperty(opt)) + { this$1[opt] = options[opt] } } } + this.doc = doc + this.node = node +} +eventMixin(LineWidget) + +function adjustScrollWhenAboveVisible(cm, line, diff) { + if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop)) + { addToScrollPos(cm, null, diff) } +} + +LineWidget.prototype.clear = function() { + var this$1 = this; + + var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line) + if (no == null || !ws) { return } + for (var i = 0; i < ws.length; ++i) { if (ws[i] == this$1) { ws.splice(i--, 1) } } + if (!ws.length) { line.widgets = null } + var height = widgetHeight(this) + updateLineHeight(line, Math.max(0, line.height - height)) + if (cm) { runInOp(cm, function () { + adjustScrollWhenAboveVisible(cm, line, -height) + regLineChange(cm, no, "widget") + }) } +} +LineWidget.prototype.changed = function() { + var oldH = this.height, cm = this.doc.cm, line = this.line + this.height = null + var diff = widgetHeight(this) - oldH + if (!diff) { return } + updateLineHeight(line, line.height + diff) + if (cm) { runInOp(cm, function () { + cm.curOp.forceUpdate = true + adjustScrollWhenAboveVisible(cm, line, diff) + }) } +} + +function addLineWidget(doc, handle, node, options) { + var widget = new LineWidget(doc, node, options) + var cm = doc.cm + if (cm && widget.noHScroll) { cm.display.alignWidgets = true } + changeLine(doc, handle, "widget", function (line) { + var widgets = line.widgets || (line.widgets = []) + if (widget.insertAt == null) { widgets.push(widget) } + else { widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget) } + widget.line = line + if (cm && !lineIsHidden(doc, line)) { + var aboveVisible = heightAtLine(line) < doc.scrollTop + updateLineHeight(line, line.height + widgetHeight(widget)) + if (aboveVisible) { addToScrollPos(cm, null, widget.height) } + cm.curOp.forceUpdate = true + } + return true + }) + return widget +} + +// TEXTMARKERS + +// Created with markText and setBookmark methods. A TextMarker is a +// handle that can be used to clear or find a marked position in the +// document. Line objects hold arrays (markedSpans) containing +// {from, to, marker} object pointing to such marker objects, and +// indicating that such a marker is present on that line. Multiple +// lines may point to the same marker when it spans across lines. +// The spans will have null for their from/to properties when the +// marker continues beyond the start/end of the line. Markers have +// links back to the lines they currently touch. + +// Collapsed markers have unique ids, in order to be able to order +// them, which is needed for uniquely determining an outer marker +// when they overlap (they may nest, but not partially overlap). +var nextMarkerId = 0 + +function TextMarker(doc, type) { + this.lines = [] + this.type = type + this.doc = doc + this.id = ++nextMarkerId +} +eventMixin(TextMarker) + +// Clear the marker. +TextMarker.prototype.clear = function() { + var this$1 = this; + + if (this.explicitlyCleared) { return } + var cm = this.doc.cm, withOp = cm && !cm.curOp + if (withOp) { startOperation(cm) } + if (hasHandler(this, "clear")) { + var found = this.find() + if (found) { signalLater(this, "clear", found.from, found.to) } + } + var min = null, max = null + for (var i = 0; i < this.lines.length; ++i) { + var line = this$1.lines[i] + var span = getMarkedSpanFor(line.markedSpans, this$1) + if (cm && !this$1.collapsed) { regLineChange(cm, lineNo(line), "text") } + else if (cm) { + if (span.to != null) { max = lineNo(line) } + if (span.from != null) { min = lineNo(line) } + } + line.markedSpans = removeMarkedSpan(line.markedSpans, span) + if (span.from == null && this$1.collapsed && !lineIsHidden(this$1.doc, line) && cm) + { updateLineHeight(line, textHeight(cm.display)) } + } + if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) { + var visual = visualLine(this$1.lines[i$1]), len = lineLength(visual) + if (len > cm.display.maxLineLength) { + cm.display.maxLine = visual + cm.display.maxLineLength = len + cm.display.maxLineChanged = true + } + } } + + if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1) } + this.lines.length = 0 + this.explicitlyCleared = true + if (this.atomic && this.doc.cantEdit) { + this.doc.cantEdit = false + if (cm) { reCheckSelection(cm.doc) } + } + if (cm) { signalLater(cm, "markerCleared", cm, this) } + if (withOp) { endOperation(cm) } + if (this.parent) { this.parent.clear() } +} + +// Find the position of the marker in the document. Returns a {from, +// to} object by default. Side can be passed to get a specific side +// -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the +// Pos objects returned contain a line object, rather than a line +// number (used to prevent looking up the same line twice). +TextMarker.prototype.find = function(side, lineObj) { + var this$1 = this; + + if (side == null && this.type == "bookmark") { side = 1 } + var from, to + for (var i = 0; i < this.lines.length; ++i) { + var line = this$1.lines[i] + var span = getMarkedSpanFor(line.markedSpans, this$1) + if (span.from != null) { + from = Pos(lineObj ? line : lineNo(line), span.from) + if (side == -1) { return from } + } + if (span.to != null) { + to = Pos(lineObj ? line : lineNo(line), span.to) + if (side == 1) { return to } + } + } + return from && {from: from, to: to} +} + +// Signals that the marker's widget changed, and surrounding layout +// should be recomputed. +TextMarker.prototype.changed = function() { + var pos = this.find(-1, true), widget = this, cm = this.doc.cm + if (!pos || !cm) { return } + runInOp(cm, function () { + var line = pos.line, lineN = lineNo(pos.line) + var view = findViewForLine(cm, lineN) + if (view) { + clearLineMeasurementCacheFor(view) + cm.curOp.selectionChanged = cm.curOp.forceUpdate = true + } + cm.curOp.updateMaxLine = true + if (!lineIsHidden(widget.doc, line) && widget.height != null) { + var oldHeight = widget.height + widget.height = null + var dHeight = widgetHeight(widget) - oldHeight + if (dHeight) + { updateLineHeight(line, line.height + dHeight) } + } + }) +} + +TextMarker.prototype.attachLine = function(line) { + if (!this.lines.length && this.doc.cm) { + var op = this.doc.cm.curOp + if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) + { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this) } + } + this.lines.push(line) +} +TextMarker.prototype.detachLine = function(line) { + this.lines.splice(indexOf(this.lines, line), 1) + if (!this.lines.length && this.doc.cm) { + var op = this.doc.cm.curOp + ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this) + } +} + +// Create a marker, wire it up to the right lines, and +function markText(doc, from, to, options, type) { + // Shared markers (across linked documents) are handled separately + // (markTextShared will call out to this again, once per + // document). + if (options && options.shared) { return markTextShared(doc, from, to, options, type) } + // Ensure we are in an operation. + if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) } + + var marker = new TextMarker(doc, type), diff = cmp(from, to) + if (options) { copyObj(options, marker, false) } + // Don't connect empty markers unless clearWhenEmpty is false + if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) + { return marker } + if (marker.replacedWith) { + // Showing up as a widget implies collapsed (widget replaces text) + marker.collapsed = true + marker.widgetNode = elt("span", [marker.replacedWith], "CodeMirror-widget") + marker.widgetNode.setAttribute("role", "presentation") // hide from accessibility tree + if (!options.handleMouseEvents) { marker.widgetNode.setAttribute("cm-ignore-events", "true") } + if (options.insertLeft) { marker.widgetNode.insertLeft = true } + } + if (marker.collapsed) { + if (conflictingCollapsedRange(doc, from.line, from, to, marker) || + from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) + { throw new Error("Inserting collapsed marker partially overlapping an existing one") } + seeCollapsedSpans() + } + + if (marker.addToHistory) + { addChangeToHistory(doc, {from: from, to: to, origin: "markText"}, doc.sel, NaN) } + + var curLine = from.line, cm = doc.cm, updateMaxLine + doc.iter(curLine, to.line + 1, function (line) { + if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) + { updateMaxLine = true } + if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0) } + addMarkedSpan(line, new MarkedSpan(marker, + curLine == from.line ? from.ch : null, + curLine == to.line ? to.ch : null)) + ++curLine + }) + // lineIsHidden depends on the presence of the spans, so needs a second pass + if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) { + if (lineIsHidden(doc, line)) { updateLineHeight(line, 0) } + }) } + + if (marker.clearOnEnter) { on(marker, "beforeCursorEnter", function () { return marker.clear(); }) } + + if (marker.readOnly) { + seeReadOnlySpans() + if (doc.history.done.length || doc.history.undone.length) + { doc.clearHistory() } + } + if (marker.collapsed) { + marker.id = ++nextMarkerId + marker.atomic = true + } + if (cm) { + // Sync editor state + if (updateMaxLine) { cm.curOp.updateMaxLine = true } + if (marker.collapsed) + { regChange(cm, from.line, to.line + 1) } + else if (marker.className || marker.title || marker.startStyle || marker.endStyle || marker.css) + { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, "text") } } + if (marker.atomic) { reCheckSelection(cm.doc) } + signalLater(cm, "markerAdded", cm, marker) + } + return marker +} + +// SHARED TEXTMARKERS + +// A shared marker spans multiple linked documents. It is +// implemented as a meta-marker-object controlling multiple normal +// markers. +function SharedTextMarker(markers, primary) { + var this$1 = this; + + this.markers = markers + this.primary = primary + for (var i = 0; i < markers.length; ++i) + { markers[i].parent = this$1 } +} +eventMixin(SharedTextMarker) + +SharedTextMarker.prototype.clear = function() { + var this$1 = this; + + if (this.explicitlyCleared) { return } + this.explicitlyCleared = true + for (var i = 0; i < this.markers.length; ++i) + { this$1.markers[i].clear() } + signalLater(this, "clear") +} +SharedTextMarker.prototype.find = function(side, lineObj) { + return this.primary.find(side, lineObj) +} + +function markTextShared(doc, from, to, options, type) { + options = copyObj(options) + options.shared = false + var markers = [markText(doc, from, to, options, type)], primary = markers[0] + var widget = options.widgetNode + linkedDocs(doc, function (doc) { + if (widget) { options.widgetNode = widget.cloneNode(true) } + markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type)) + for (var i = 0; i < doc.linked.length; ++i) + { if (doc.linked[i].isParent) { return } } + primary = lst(markers) + }) + return new SharedTextMarker(markers, primary) +} + +function findSharedMarkers(doc) { + return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; }) +} + +function copySharedMarkers(doc, markers) { + for (var i = 0; i < markers.length; i++) { + var marker = markers[i], pos = marker.find() + var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to) + if (cmp(mFrom, mTo)) { + var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type) + marker.markers.push(subMark) + subMark.parent = marker + } + } +} + +function detachSharedMarkers(markers) { + var loop = function ( i ) { + var marker = markers[i], linked = [marker.primary.doc] + linkedDocs(marker.primary.doc, function (d) { return linked.push(d); }) + for (var j = 0; j < marker.markers.length; j++) { + var subMarker = marker.markers[j] + if (indexOf(linked, subMarker.doc) == -1) { + subMarker.parent = null + marker.markers.splice(j--, 1) + } + } + }; + + for (var i = 0; i < markers.length; i++) loop( i ); +} + +var nextDocId = 0 +var Doc = function(text, mode, firstLine, lineSep) { + if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep) } + if (firstLine == null) { firstLine = 0 } + + BranchChunk.call(this, [new LeafChunk([new Line("", null)])]) + this.first = firstLine + this.scrollTop = this.scrollLeft = 0 + this.cantEdit = false + this.cleanGeneration = 1 + this.frontier = firstLine + var start = Pos(firstLine, 0) + this.sel = simpleSelection(start) + this.history = new History(null) + this.id = ++nextDocId + this.modeOption = mode + this.lineSep = lineSep + this.extend = false + + if (typeof text == "string") { text = this.splitLines(text) } + updateDoc(this, {from: start, to: start, text: text}) + setSelection(this, simpleSelection(start), sel_dontScroll) +} + +Doc.prototype = createObj(BranchChunk.prototype, { + constructor: Doc, + // Iterate over the document. Supports two forms -- with only one + // argument, it calls that for each line in the document. With + // three, it iterates over the range given by the first two (with + // the second being non-inclusive). + iter: function(from, to, op) { + if (op) { this.iterN(from - this.first, to - from, op) } + else { this.iterN(this.first, this.first + this.size, from) } + }, + + // Non-public interface for adding and removing lines. + insert: function(at, lines) { + var height = 0 + for (var i = 0; i < lines.length; ++i) { height += lines[i].height } + this.insertInner(at - this.first, lines, height) + }, + remove: function(at, n) { this.removeInner(at - this.first, n) }, + + // From here, the methods are part of the public interface. Most + // are also available from CodeMirror (editor) instances. + + getValue: function(lineSep) { + var lines = getLines(this, this.first, this.first + this.size) + if (lineSep === false) { return lines } + return lines.join(lineSep || this.lineSeparator()) + }, + setValue: docMethodOp(function(code) { + var top = Pos(this.first, 0), last = this.first + this.size - 1 + makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length), + text: this.splitLines(code), origin: "setValue", full: true}, true) + setSelection(this, simpleSelection(top)) + }), + replaceRange: function(code, from, to, origin) { + from = clipPos(this, from) + to = to ? clipPos(this, to) : from + replaceRange(this, code, from, to, origin) + }, + getRange: function(from, to, lineSep) { + var lines = getBetween(this, clipPos(this, from), clipPos(this, to)) + if (lineSep === false) { return lines } + return lines.join(lineSep || this.lineSeparator()) + }, + + getLine: function(line) {var l = this.getLineHandle(line); return l && l.text}, + + getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }}, + getLineNumber: function(line) {return lineNo(line)}, + + getLineHandleVisualStart: function(line) { + if (typeof line == "number") { line = getLine(this, line) } + return visualLine(line) + }, + + lineCount: function() {return this.size}, + firstLine: function() {return this.first}, + lastLine: function() {return this.first + this.size - 1}, + + clipPos: function(pos) {return clipPos(this, pos)}, + + getCursor: function(start) { + var range = this.sel.primary(), pos + if (start == null || start == "head") { pos = range.head } + else if (start == "anchor") { pos = range.anchor } + else if (start == "end" || start == "to" || start === false) { pos = range.to() } + else { pos = range.from() } + return pos + }, + listSelections: function() { return this.sel.ranges }, + somethingSelected: function() {return this.sel.somethingSelected()}, + + setCursor: docMethodOp(function(line, ch, options) { + setSimpleSelection(this, clipPos(this, typeof line == "number" ? Pos(line, ch || 0) : line), null, options) + }), + setSelection: docMethodOp(function(anchor, head, options) { + setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options) + }), + extendSelection: docMethodOp(function(head, other, options) { + extendSelection(this, clipPos(this, head), other && clipPos(this, other), options) + }), + extendSelections: docMethodOp(function(heads, options) { + extendSelections(this, clipPosArray(this, heads), options) + }), + extendSelectionsBy: docMethodOp(function(f, options) { + var heads = map(this.sel.ranges, f) + extendSelections(this, clipPosArray(this, heads), options) + }), + setSelections: docMethodOp(function(ranges, primary, options) { + var this$1 = this; + + if (!ranges.length) { return } + var out = [] + for (var i = 0; i < ranges.length; i++) + { out[i] = new Range(clipPos(this$1, ranges[i].anchor), + clipPos(this$1, ranges[i].head)) } + if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex) } + setSelection(this, normalizeSelection(out, primary), options) + }), + addSelection: docMethodOp(function(anchor, head, options) { + var ranges = this.sel.ranges.slice(0) + ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor))) + setSelection(this, normalizeSelection(ranges, ranges.length - 1), options) + }), + + getSelection: function(lineSep) { + var this$1 = this; + + var ranges = this.sel.ranges, lines + for (var i = 0; i < ranges.length; i++) { + var sel = getBetween(this$1, ranges[i].from(), ranges[i].to()) + lines = lines ? lines.concat(sel) : sel + } + if (lineSep === false) { return lines } + else { return lines.join(lineSep || this.lineSeparator()) } + }, + getSelections: function(lineSep) { + var this$1 = this; + + var parts = [], ranges = this.sel.ranges + for (var i = 0; i < ranges.length; i++) { + var sel = getBetween(this$1, ranges[i].from(), ranges[i].to()) + if (lineSep !== false) { sel = sel.join(lineSep || this$1.lineSeparator()) } + parts[i] = sel + } + return parts + }, + replaceSelection: function(code, collapse, origin) { + var dup = [] + for (var i = 0; i < this.sel.ranges.length; i++) + { dup[i] = code } + this.replaceSelections(dup, collapse, origin || "+input") + }, + replaceSelections: docMethodOp(function(code, collapse, origin) { + var this$1 = this; + + var changes = [], sel = this.sel + for (var i = 0; i < sel.ranges.length; i++) { + var range = sel.ranges[i] + changes[i] = {from: range.from(), to: range.to(), text: this$1.splitLines(code[i]), origin: origin} + } + var newSel = collapse && collapse != "end" && computeReplacedSel(this, changes, collapse) + for (var i$1 = changes.length - 1; i$1 >= 0; i$1--) + { makeChange(this$1, changes[i$1]) } + if (newSel) { setSelectionReplaceHistory(this, newSel) } + else if (this.cm) { ensureCursorVisible(this.cm) } + }), + undo: docMethodOp(function() {makeChangeFromHistory(this, "undo")}), + redo: docMethodOp(function() {makeChangeFromHistory(this, "redo")}), + undoSelection: docMethodOp(function() {makeChangeFromHistory(this, "undo", true)}), + redoSelection: docMethodOp(function() {makeChangeFromHistory(this, "redo", true)}), + + setExtending: function(val) {this.extend = val}, + getExtending: function() {return this.extend}, + + historySize: function() { + var hist = this.history, done = 0, undone = 0 + for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done } } + for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone } } + return {undo: done, redo: undone} + }, + clearHistory: function() {this.history = new History(this.history.maxGeneration)}, + + markClean: function() { + this.cleanGeneration = this.changeGeneration(true) + }, + changeGeneration: function(forceSplit) { + if (forceSplit) + { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null } + return this.history.generation + }, + isClean: function (gen) { + return this.history.generation == (gen || this.cleanGeneration) + }, + + getHistory: function() { + return {done: copyHistoryArray(this.history.done), + undone: copyHistoryArray(this.history.undone)} + }, + setHistory: function(histData) { + var hist = this.history = new History(this.history.maxGeneration) + hist.done = copyHistoryArray(histData.done.slice(0), null, true) + hist.undone = copyHistoryArray(histData.undone.slice(0), null, true) + }, + + setGutterMarker: docMethodOp(function(line, gutterID, value) { + return changeLine(this, line, "gutter", function (line) { + var markers = line.gutterMarkers || (line.gutterMarkers = {}) + markers[gutterID] = value + if (!value && isEmpty(markers)) { line.gutterMarkers = null } + return true + }) + }), + + clearGutter: docMethodOp(function(gutterID) { + var this$1 = this; + + this.iter(function (line) { + if (line.gutterMarkers && line.gutterMarkers[gutterID]) { + changeLine(this$1, line, "gutter", function () { + line.gutterMarkers[gutterID] = null + if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null } + return true + }) + } + }) + }), + + lineInfo: function(line) { + var n + if (typeof line == "number") { + if (!isLine(this, line)) { return null } + n = line + line = getLine(this, line) + if (!line) { return null } + } else { + n = lineNo(line) + if (n == null) { return null } + } + return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers, + textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass, + widgets: line.widgets} + }, + + addLineClass: docMethodOp(function(handle, where, cls) { + return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function (line) { + var prop = where == "text" ? "textClass" + : where == "background" ? "bgClass" + : where == "gutter" ? "gutterClass" : "wrapClass" + if (!line[prop]) { line[prop] = cls } + else if (classTest(cls).test(line[prop])) { return false } + else { line[prop] += " " + cls } + return true + }) + }), + removeLineClass: docMethodOp(function(handle, where, cls) { + return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function (line) { + var prop = where == "text" ? "textClass" + : where == "background" ? "bgClass" + : where == "gutter" ? "gutterClass" : "wrapClass" + var cur = line[prop] + if (!cur) { return false } + else if (cls == null) { line[prop] = null } + else { + var found = cur.match(classTest(cls)) + if (!found) { return false } + var end = found.index + found[0].length + line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? "" : " ") + cur.slice(end) || null + } + return true + }) + }), + + addLineWidget: docMethodOp(function(handle, node, options) { + return addLineWidget(this, handle, node, options) + }), + removeLineWidget: function(widget) { widget.clear() }, + + markText: function(from, to, options) { + return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || "range") + }, + setBookmark: function(pos, options) { + var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options), + insertLeft: options && options.insertLeft, + clearWhenEmpty: false, shared: options && options.shared, + handleMouseEvents: options && options.handleMouseEvents} + pos = clipPos(this, pos) + return markText(this, pos, pos, realOpts, "bookmark") + }, + findMarksAt: function(pos) { + pos = clipPos(this, pos) + var markers = [], spans = getLine(this, pos.line).markedSpans + if (spans) { for (var i = 0; i < spans.length; ++i) { + var span = spans[i] + if ((span.from == null || span.from <= pos.ch) && + (span.to == null || span.to >= pos.ch)) + { markers.push(span.marker.parent || span.marker) } + } } + return markers + }, + findMarks: function(from, to, filter) { + from = clipPos(this, from); to = clipPos(this, to) + var found = [], lineNo = from.line + this.iter(from.line, to.line + 1, function (line) { + var spans = line.markedSpans + if (spans) { for (var i = 0; i < spans.length; i++) { + var span = spans[i] + if (!(span.to != null && lineNo == from.line && from.ch >= span.to || + span.from == null && lineNo != from.line || + span.from != null && lineNo == to.line && span.from >= to.ch) && + (!filter || filter(span.marker))) + { found.push(span.marker.parent || span.marker) } + } } + ++lineNo + }) + return found + }, + getAllMarks: function() { + var markers = [] + this.iter(function (line) { + var sps = line.markedSpans + if (sps) { for (var i = 0; i < sps.length; ++i) + { if (sps[i].from != null) { markers.push(sps[i].marker) } } } + }) + return markers + }, + + posFromIndex: function(off) { + var ch, lineNo = this.first, sepSize = this.lineSeparator().length + this.iter(function (line) { + var sz = line.text.length + sepSize + if (sz > off) { ch = off; return true } + off -= sz + ++lineNo + }) + return clipPos(this, Pos(lineNo, ch)) + }, + indexFromPos: function (coords) { + coords = clipPos(this, coords) + var index = coords.ch + if (coords.line < this.first || coords.ch < 0) { return 0 } + var sepSize = this.lineSeparator().length + this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value + index += line.text.length + sepSize + }) + return index + }, + + copy: function(copyHistory) { + var doc = new Doc(getLines(this, this.first, this.first + this.size), + this.modeOption, this.first, this.lineSep) + doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft + doc.sel = this.sel + doc.extend = false + if (copyHistory) { + doc.history.undoDepth = this.history.undoDepth + doc.setHistory(this.getHistory()) + } + return doc + }, + + linkedDoc: function(options) { + if (!options) { options = {} } + var from = this.first, to = this.first + this.size + if (options.from != null && options.from > from) { from = options.from } + if (options.to != null && options.to < to) { to = options.to } + var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep) + if (options.sharedHist) { copy.history = this.history + ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist}) + copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}] + copySharedMarkers(copy, findSharedMarkers(this)) + return copy + }, + unlinkDoc: function(other) { + var this$1 = this; + + if (other instanceof CodeMirror) { other = other.doc } + if (this.linked) { for (var i = 0; i < this.linked.length; ++i) { + var link = this$1.linked[i] + if (link.doc != other) { continue } + this$1.linked.splice(i, 1) + other.unlinkDoc(this$1) + detachSharedMarkers(findSharedMarkers(this$1)) + break + } } + // If the histories were shared, split them again + if (other.history == this.history) { + var splitIds = [other.id] + linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true) + other.history = new History(null) + other.history.done = copyHistoryArray(this.history.done, splitIds) + other.history.undone = copyHistoryArray(this.history.undone, splitIds) + } + }, + iterLinkedDocs: function(f) {linkedDocs(this, f)}, + + getMode: function() {return this.mode}, + getEditor: function() {return this.cm}, + + splitLines: function(str) { + if (this.lineSep) { return str.split(this.lineSep) } + return splitLinesAuto(str) + }, + lineSeparator: function() { return this.lineSep || "\n" } +}) + +// Public alias. +Doc.prototype.eachLine = Doc.prototype.iter + +// Kludge to work around strange IE behavior where it'll sometimes +// re-fire a series of drag-related events right after the drop (#1551) +var lastDrop = 0 + +function onDrop(e) { + var cm = this + clearDragCursor(cm) + if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) + { return } + e_preventDefault(e) + if (ie) { lastDrop = +new Date } + var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files + if (!pos || cm.isReadOnly()) { return } + // Might be a file drop, in which case we simply extract the text + // and insert it. + if (files && files.length && window.FileReader && window.File) { + var n = files.length, text = Array(n), read = 0 + var loadFile = function (file, i) { + if (cm.options.allowDropFileTypes && + indexOf(cm.options.allowDropFileTypes, file.type) == -1) + { return } + + var reader = new FileReader + reader.onload = operation(cm, function () { + var content = reader.result + if (/[\x00-\x08\x0e-\x1f]{2}/.test(content)) { content = "" } + text[i] = content + if (++read == n) { + pos = clipPos(cm.doc, pos) + var change = {from: pos, to: pos, + text: cm.doc.splitLines(text.join(cm.doc.lineSeparator())), + origin: "paste"} + makeChange(cm.doc, change) + setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change))) + } + }) + reader.readAsText(file) + } + for (var i = 0; i < n; ++i) { loadFile(files[i], i) } + } else { // Normal drop + // Don't do a replace if the drop happened inside of the selected text. + if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) { + cm.state.draggingText(e) + // Ensure the editor is re-focused + setTimeout(function () { return cm.display.input.focus(); }, 20) + return + } + try { + var text$1 = e.dataTransfer.getData("Text") + if (text$1) { + var selected + if (cm.state.draggingText && !cm.state.draggingText.copy) + { selected = cm.listSelections() } + setSelectionNoUndo(cm.doc, simpleSelection(pos, pos)) + if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1) + { replaceRange(cm.doc, "", selected[i$1].anchor, selected[i$1].head, "drag") } } + cm.replaceSelection(text$1, "around", "paste") + cm.display.input.focus() + } + } + catch(e){} + } +} + +function onDragStart(cm, e) { + if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return } + if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return } + + e.dataTransfer.setData("Text", cm.getSelection()) + e.dataTransfer.effectAllowed = "copyMove" + + // Use dummy image instead of default browsers image. + // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there. + if (e.dataTransfer.setDragImage && !safari) { + var img = elt("img", null, null, "position: fixed; left: 0; top: 0;") + img.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" + if (presto) { + img.width = img.height = 1 + cm.display.wrapper.appendChild(img) + // Force a relayout, or Opera won't use our image for some obscure reason + img._top = img.offsetTop + } + e.dataTransfer.setDragImage(img, 0, 0) + if (presto) { img.parentNode.removeChild(img) } + } +} + +function onDragOver(cm, e) { + var pos = posFromMouse(cm, e) + if (!pos) { return } + var frag = document.createDocumentFragment() + drawSelectionCursor(cm, pos, frag) + if (!cm.display.dragCursor) { + cm.display.dragCursor = elt("div", null, "CodeMirror-cursors CodeMirror-dragcursors") + cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv) + } + removeChildrenAndAdd(cm.display.dragCursor, frag) +} + +function clearDragCursor(cm) { + if (cm.display.dragCursor) { + cm.display.lineSpace.removeChild(cm.display.dragCursor) + cm.display.dragCursor = null + } +} + +// These must be handled carefully, because naively registering a +// handler for each editor will cause the editors to never be +// garbage collected. + +function forEachCodeMirror(f) { + if (!document.body.getElementsByClassName) { return } + var byClass = document.body.getElementsByClassName("CodeMirror") + for (var i = 0; i < byClass.length; i++) { + var cm = byClass[i].CodeMirror + if (cm) { f(cm) } + } +} + +var globalsRegistered = false +function ensureGlobalHandlers() { + if (globalsRegistered) { return } + registerGlobalHandlers() + globalsRegistered = true +} +function registerGlobalHandlers() { + // When the window resizes, we need to refresh active editors. + var resizeTimer + on(window, "resize", function () { + if (resizeTimer == null) { resizeTimer = setTimeout(function () { + resizeTimer = null + forEachCodeMirror(onResize) + }, 100) } + }) + // When the window loses focus, we want to show the editor as blurred + on(window, "blur", function () { return forEachCodeMirror(onBlur); }) +} +// Called when the window resizes +function onResize(cm) { + var d = cm.display + if (d.lastWrapHeight == d.wrapper.clientHeight && d.lastWrapWidth == d.wrapper.clientWidth) + { return } + // Might be a text scaling operation, clear size caches. + d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null + d.scrollbarsClipped = false + cm.setSize() +} + +var keyNames = { + 3: "Enter", 8: "Backspace", 9: "Tab", 13: "Enter", 16: "Shift", 17: "Ctrl", 18: "Alt", + 19: "Pause", 20: "CapsLock", 27: "Esc", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End", + 36: "Home", 37: "Left", 38: "Up", 39: "Right", 40: "Down", 44: "PrintScrn", 45: "Insert", + 46: "Delete", 59: ";", 61: "=", 91: "Mod", 92: "Mod", 93: "Mod", + 106: "*", 107: "=", 109: "-", 110: ".", 111: "/", 127: "Delete", + 173: "-", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", + 221: "]", 222: "'", 63232: "Up", 63233: "Down", 63234: "Left", 63235: "Right", 63272: "Delete", + 63273: "Home", 63275: "End", 63276: "PageUp", 63277: "PageDown", 63302: "Insert" +} + +// Number keys +for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i) } +// Alphabetic keys +for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1) } +// Function keys +for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = "F" + i$2 } + +var keyMap = {} + +keyMap.basic = { + "Left": "goCharLeft", "Right": "goCharRight", "Up": "goLineUp", "Down": "goLineDown", + "End": "goLineEnd", "Home": "goLineStartSmart", "PageUp": "goPageUp", "PageDown": "goPageDown", + "Delete": "delCharAfter", "Backspace": "delCharBefore", "Shift-Backspace": "delCharBefore", + "Tab": "defaultTab", "Shift-Tab": "indentAuto", + "Enter": "newlineAndIndent", "Insert": "toggleOverwrite", + "Esc": "singleSelection" +} +// Note that the save and find-related commands aren't defined by +// default. User code or addons can define them. Unknown commands +// are simply ignored. +keyMap.pcDefault = { + "Ctrl-A": "selectAll", "Ctrl-D": "deleteLine", "Ctrl-Z": "undo", "Shift-Ctrl-Z": "redo", "Ctrl-Y": "redo", + "Ctrl-Home": "goDocStart", "Ctrl-End": "goDocEnd", "Ctrl-Up": "goLineUp", "Ctrl-Down": "goLineDown", + "Ctrl-Left": "goGroupLeft", "Ctrl-Right": "goGroupRight", "Alt-Left": "goLineStart", "Alt-Right": "goLineEnd", + "Ctrl-Backspace": "delGroupBefore", "Ctrl-Delete": "delGroupAfter", "Ctrl-S": "save", "Ctrl-F": "find", + "Ctrl-G": "findNext", "Shift-Ctrl-G": "findPrev", "Shift-Ctrl-F": "replace", "Shift-Ctrl-R": "replaceAll", + "Ctrl-[": "indentLess", "Ctrl-]": "indentMore", + "Ctrl-U": "undoSelection", "Shift-Ctrl-U": "redoSelection", "Alt-U": "redoSelection", + fallthrough: "basic" +} +// Very basic readline/emacs-style bindings, which are standard on Mac. +keyMap.emacsy = { + "Ctrl-F": "goCharRight", "Ctrl-B": "goCharLeft", "Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown", + "Alt-F": "goWordRight", "Alt-B": "goWordLeft", "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd", + "Ctrl-V": "goPageDown", "Shift-Ctrl-V": "goPageUp", "Ctrl-D": "delCharAfter", "Ctrl-H": "delCharBefore", + "Alt-D": "delWordAfter", "Alt-Backspace": "delWordBefore", "Ctrl-K": "killLine", "Ctrl-T": "transposeChars", + "Ctrl-O": "openLine" +} +keyMap.macDefault = { + "Cmd-A": "selectAll", "Cmd-D": "deleteLine", "Cmd-Z": "undo", "Shift-Cmd-Z": "redo", "Cmd-Y": "redo", + "Cmd-Home": "goDocStart", "Cmd-Up": "goDocStart", "Cmd-End": "goDocEnd", "Cmd-Down": "goDocEnd", "Alt-Left": "goGroupLeft", + "Alt-Right": "goGroupRight", "Cmd-Left": "goLineLeft", "Cmd-Right": "goLineRight", "Alt-Backspace": "delGroupBefore", + "Ctrl-Alt-Backspace": "delGroupAfter", "Alt-Delete": "delGroupAfter", "Cmd-S": "save", "Cmd-F": "find", + "Cmd-G": "findNext", "Shift-Cmd-G": "findPrev", "Cmd-Alt-F": "replace", "Shift-Cmd-Alt-F": "replaceAll", + "Cmd-[": "indentLess", "Cmd-]": "indentMore", "Cmd-Backspace": "delWrappedLineLeft", "Cmd-Delete": "delWrappedLineRight", + "Cmd-U": "undoSelection", "Shift-Cmd-U": "redoSelection", "Ctrl-Up": "goDocStart", "Ctrl-Down": "goDocEnd", + fallthrough: ["basic", "emacsy"] +} +keyMap["default"] = mac ? keyMap.macDefault : keyMap.pcDefault + +// KEYMAP DISPATCH + +function normalizeKeyName(name) { + var parts = name.split(/-(?!$)/) + name = parts[parts.length - 1] + var alt, ctrl, shift, cmd + for (var i = 0; i < parts.length - 1; i++) { + var mod = parts[i] + if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true } + else if (/^a(lt)?$/i.test(mod)) { alt = true } + else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true } + else if (/^s(hift)?$/i.test(mod)) { shift = true } + else { throw new Error("Unrecognized modifier name: " + mod) } + } + if (alt) { name = "Alt-" + name } + if (ctrl) { name = "Ctrl-" + name } + if (cmd) { name = "Cmd-" + name } + if (shift) { name = "Shift-" + name } + return name +} + +// This is a kludge to keep keymaps mostly working as raw objects +// (backwards compatibility) while at the same time support features +// like normalization and multi-stroke key bindings. It compiles a +// new normalized keymap, and then updates the old object to reflect +// this. +function normalizeKeyMap(keymap) { + var copy = {} + for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) { + var value = keymap[keyname] + if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue } + if (value == "...") { delete keymap[keyname]; continue } + + var keys = map(keyname.split(" "), normalizeKeyName) + for (var i = 0; i < keys.length; i++) { + var val = (void 0), name = (void 0) + if (i == keys.length - 1) { + name = keys.join(" ") + val = value + } else { + name = keys.slice(0, i + 1).join(" ") + val = "..." + } + var prev = copy[name] + if (!prev) { copy[name] = val } + else if (prev != val) { throw new Error("Inconsistent bindings for " + name) } + } + delete keymap[keyname] + } } + for (var prop in copy) { keymap[prop] = copy[prop] } + return keymap +} + +function lookupKey(key, map, handle, context) { + map = getKeyMap(map) + var found = map.call ? map.call(key, context) : map[key] + if (found === false) { return "nothing" } + if (found === "...") { return "multi" } + if (found != null && handle(found)) { return "handled" } + + if (map.fallthrough) { + if (Object.prototype.toString.call(map.fallthrough) != "[object Array]") + { return lookupKey(key, map.fallthrough, handle, context) } + for (var i = 0; i < map.fallthrough.length; i++) { + var result = lookupKey(key, map.fallthrough[i], handle, context) + if (result) { return result } + } + } +} + +// Modifier key presses don't count as 'real' key presses for the +// purpose of keymap fallthrough. +function isModifierKey(value) { + var name = typeof value == "string" ? value : keyNames[value.keyCode] + return name == "Ctrl" || name == "Alt" || name == "Shift" || name == "Mod" +} + +// Look up the name of a key as indicated by an event object. +function keyName(event, noShift) { + if (presto && event.keyCode == 34 && event["char"]) { return false } + var base = keyNames[event.keyCode], name = base + if (name == null || event.altGraphKey) { return false } + if (event.altKey && base != "Alt") { name = "Alt-" + name } + if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != "Ctrl") { name = "Ctrl-" + name } + if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != "Cmd") { name = "Cmd-" + name } + if (!noShift && event.shiftKey && base != "Shift") { name = "Shift-" + name } + return name +} + +function getKeyMap(val) { + return typeof val == "string" ? keyMap[val] : val +} + +// Helper for deleting text near the selection(s), used to implement +// backspace, delete, and similar functionality. +function deleteNearSelection(cm, compute) { + var ranges = cm.doc.sel.ranges, kill = [] + // Build up a set of ranges to kill first, merging overlapping + // ranges. + for (var i = 0; i < ranges.length; i++) { + var toKill = compute(ranges[i]) + while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) { + var replaced = kill.pop() + if (cmp(replaced.from, toKill.from) < 0) { + toKill.from = replaced.from + break + } + } + kill.push(toKill) + } + // Next, remove those actual ranges. + runInOp(cm, function () { + for (var i = kill.length - 1; i >= 0; i--) + { replaceRange(cm.doc, "", kill[i].from, kill[i].to, "+delete") } + ensureCursorVisible(cm) + }) +} + +// Commands are parameter-less actions that can be performed on an +// editor, mostly used for keybindings. +var commands = { + selectAll: selectAll, + singleSelection: function (cm) { return cm.setSelection(cm.getCursor("anchor"), cm.getCursor("head"), sel_dontScroll); }, + killLine: function (cm) { return deleteNearSelection(cm, function (range) { + if (range.empty()) { + var len = getLine(cm.doc, range.head.line).text.length + if (range.head.ch == len && range.head.line < cm.lastLine()) + { return {from: range.head, to: Pos(range.head.line + 1, 0)} } + else + { return {from: range.head, to: Pos(range.head.line, len)} } + } else { + return {from: range.from(), to: range.to()} + } + }); }, + deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({ + from: Pos(range.from().line, 0), + to: clipPos(cm.doc, Pos(range.to().line + 1, 0)) + }); }); }, + delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({ + from: Pos(range.from().line, 0), to: range.from() + }); }); }, + delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { + var top = cm.charCoords(range.head, "div").top + 5 + var leftPos = cm.coordsChar({left: 0, top: top}, "div") + return {from: leftPos, to: range.from()} + }); }, + delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) { + var top = cm.charCoords(range.head, "div").top + 5 + var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div") + return {from: range.from(), to: rightPos } + }); }, + undo: function (cm) { return cm.undo(); }, + redo: function (cm) { return cm.redo(); }, + undoSelection: function (cm) { return cm.undoSelection(); }, + redoSelection: function (cm) { return cm.redoSelection(); }, + goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); }, + goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); }, + goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); }, + {origin: "+move", bias: 1} + ); }, + goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); }, + {origin: "+move", bias: 1} + ); }, + goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); }, + {origin: "+move", bias: -1} + ); }, + goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) { + var top = cm.charCoords(range.head, "div").top + 5 + return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div") + }, sel_move); }, + goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) { + var top = cm.charCoords(range.head, "div").top + 5 + return cm.coordsChar({left: 0, top: top}, "div") + }, sel_move); }, + goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) { + var top = cm.charCoords(range.head, "div").top + 5 + var pos = cm.coordsChar({left: 0, top: top}, "div") + if (pos.ch < cm.getLine(pos.line).search(/\S/)) { return lineStartSmart(cm, range.head) } + return pos + }, sel_move); }, + goLineUp: function (cm) { return cm.moveV(-1, "line"); }, + goLineDown: function (cm) { return cm.moveV(1, "line"); }, + goPageUp: function (cm) { return cm.moveV(-1, "page"); }, + goPageDown: function (cm) { return cm.moveV(1, "page"); }, + goCharLeft: function (cm) { return cm.moveH(-1, "char"); }, + goCharRight: function (cm) { return cm.moveH(1, "char"); }, + goColumnLeft: function (cm) { return cm.moveH(-1, "column"); }, + goColumnRight: function (cm) { return cm.moveH(1, "column"); }, + goWordLeft: function (cm) { return cm.moveH(-1, "word"); }, + goGroupRight: function (cm) { return cm.moveH(1, "group"); }, + goGroupLeft: function (cm) { return cm.moveH(-1, "group"); }, + goWordRight: function (cm) { return cm.moveH(1, "word"); }, + delCharBefore: function (cm) { return cm.deleteH(-1, "char"); }, + delCharAfter: function (cm) { return cm.deleteH(1, "char"); }, + delWordBefore: function (cm) { return cm.deleteH(-1, "word"); }, + delWordAfter: function (cm) { return cm.deleteH(1, "word"); }, + delGroupBefore: function (cm) { return cm.deleteH(-1, "group"); }, + delGroupAfter: function (cm) { return cm.deleteH(1, "group"); }, + indentAuto: function (cm) { return cm.indentSelection("smart"); }, + indentMore: function (cm) { return cm.indentSelection("add"); }, + indentLess: function (cm) { return cm.indentSelection("subtract"); }, + insertTab: function (cm) { return cm.replaceSelection("\t"); }, + insertSoftTab: function (cm) { + var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize + for (var i = 0; i < ranges.length; i++) { + var pos = ranges[i].from() + var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize) + spaces.push(spaceStr(tabSize - col % tabSize)) + } + cm.replaceSelections(spaces) + }, + defaultTab: function (cm) { + if (cm.somethingSelected()) { cm.indentSelection("add") } + else { cm.execCommand("insertTab") } + }, + // Swap the two chars left and right of each selection's head. + // Move cursor behind the two swapped characters afterwards. + // + // Doesn't consider line feeds a character. + // Doesn't scan more than one line above to find a character. + // Doesn't do anything on an empty line. + // Doesn't do anything with non-empty selections. + transposeChars: function (cm) { return runInOp(cm, function () { + var ranges = cm.listSelections(), newSel = [] + for (var i = 0; i < ranges.length; i++) { + if (!ranges[i].empty()) { continue } + var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text + if (line) { + if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1) } + if (cur.ch > 0) { + cur = new Pos(cur.line, cur.ch + 1) + cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2), + Pos(cur.line, cur.ch - 2), cur, "+transpose") + } else if (cur.line > cm.doc.first) { + var prev = getLine(cm.doc, cur.line - 1).text + if (prev) { + cur = new Pos(cur.line, 1) + cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() + + prev.charAt(prev.length - 1), + Pos(cur.line - 1, prev.length - 1), cur, "+transpose") + } + } + } + newSel.push(new Range(cur, cur)) + } + cm.setSelections(newSel) + }); }, + newlineAndIndent: function (cm) { return runInOp(cm, function () { + var sels = cm.listSelections() + for (var i = sels.length - 1; i >= 0; i--) + { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, "+input") } + sels = cm.listSelections() + for (var i$1 = 0; i$1 < sels.length; i$1++) + { cm.indentLine(sels[i$1].from().line, null, true) } + ensureCursorVisible(cm) + }); }, + openLine: function (cm) { return cm.replaceSelection("\n", "start"); }, + toggleOverwrite: function (cm) { return cm.toggleOverwrite(); } +} + + +function lineStart(cm, lineN) { + var line = getLine(cm.doc, lineN) + var visual = visualLine(line) + if (visual != line) { lineN = lineNo(visual) } + var order = getOrder(visual) + var ch = !order ? 0 : order[0].level % 2 ? lineRight(visual) : lineLeft(visual) + return Pos(lineN, ch) +} +function lineEnd(cm, lineN) { + var merged, line = getLine(cm.doc, lineN) + while (merged = collapsedSpanAtEnd(line)) { + line = merged.find(1, true).line + lineN = null + } + var order = getOrder(line) + var ch = !order ? line.text.length : order[0].level % 2 ? lineLeft(line) : lineRight(line) + return Pos(lineN == null ? lineNo(line) : lineN, ch) +} +function lineStartSmart(cm, pos) { + var start = lineStart(cm, pos.line) + var line = getLine(cm.doc, start.line) + var order = getOrder(line) + if (!order || order[0].level == 0) { + var firstNonWS = Math.max(0, line.text.search(/\S/)) + var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch + return Pos(start.line, inWS ? 0 : firstNonWS) + } + return start +} + +// Run a handler that was bound to a key. +function doHandleBinding(cm, bound, dropShift) { + if (typeof bound == "string") { + bound = commands[bound] + if (!bound) { return false } + } + // Ensure previous input has been read, so that the handler sees a + // consistent view of the document + cm.display.input.ensurePolled() + var prevShift = cm.display.shift, done = false + try { + if (cm.isReadOnly()) { cm.state.suppressEdits = true } + if (dropShift) { cm.display.shift = false } + done = bound(cm) != Pass + } finally { + cm.display.shift = prevShift + cm.state.suppressEdits = false + } + return done +} + +function lookupKeyForEditor(cm, name, handle) { + for (var i = 0; i < cm.state.keyMaps.length; i++) { + var result = lookupKey(name, cm.state.keyMaps[i], handle, cm) + if (result) { return result } + } + return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm)) + || lookupKey(name, cm.options.keyMap, handle, cm) +} + +var stopSeq = new Delayed +function dispatchKey(cm, name, e, handle) { + var seq = cm.state.keySeq + if (seq) { + if (isModifierKey(name)) { return "handled" } + stopSeq.set(50, function () { + if (cm.state.keySeq == seq) { + cm.state.keySeq = null + cm.display.input.reset() + } + }) + name = seq + " " + name + } + var result = lookupKeyForEditor(cm, name, handle) + + if (result == "multi") + { cm.state.keySeq = name } + if (result == "handled") + { signalLater(cm, "keyHandled", cm, name, e) } + + if (result == "handled" || result == "multi") { + e_preventDefault(e) + restartBlink(cm) + } + + if (seq && !result && /\'$/.test(name)) { + e_preventDefault(e) + return true + } + return !!result +} + +// Handle a key from the keydown event. +function handleKeyBinding(cm, e) { + var name = keyName(e, true) + if (!name) { return false } + + if (e.shiftKey && !cm.state.keySeq) { + // First try to resolve full name (including 'Shift-'). Failing + // that, see if there is a cursor-motion command (starting with + // 'go') bound to the keyname without 'Shift-'. + return dispatchKey(cm, "Shift-" + name, e, function (b) { return doHandleBinding(cm, b, true); }) + || dispatchKey(cm, name, e, function (b) { + if (typeof b == "string" ? /^go[A-Z]/.test(b) : b.motion) + { return doHandleBinding(cm, b) } + }) + } else { + return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); }) + } +} + +// Handle a key from the keypress event +function handleCharBinding(cm, e, ch) { + return dispatchKey(cm, "'" + ch + "'", e, function (b) { return doHandleBinding(cm, b, true); }) +} + +var lastStoppedKey = null +function onKeyDown(e) { + var cm = this + cm.curOp.focus = activeElt() + if (signalDOMEvent(cm, e)) { return } + // IE does strange things with escape. + if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false } + var code = e.keyCode + cm.display.shift = code == 16 || e.shiftKey + var handled = handleKeyBinding(cm, e) + if (presto) { + lastStoppedKey = handled ? code : null + // Opera has no cut event... we try to at least catch the key combo + if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) + { cm.replaceSelection("", null, "cut") } + } + + // Turn mouse into crosshair when Alt is held on Mac. + if (code == 18 && !/\bCodeMirror-crosshair\b/.test(cm.display.lineDiv.className)) + { showCrossHair(cm) } +} + +function showCrossHair(cm) { + var lineDiv = cm.display.lineDiv + addClass(lineDiv, "CodeMirror-crosshair") + + function up(e) { + if (e.keyCode == 18 || !e.altKey) { + rmClass(lineDiv, "CodeMirror-crosshair") + off(document, "keyup", up) + off(document, "mouseover", up) + } + } + on(document, "keyup", up) + on(document, "mouseover", up) +} + +function onKeyUp(e) { + if (e.keyCode == 16) { this.doc.sel.shift = false } + signalDOMEvent(this, e) +} + +function onKeyPress(e) { + var cm = this + if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return } + var keyCode = e.keyCode, charCode = e.charCode + if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return} + if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return } + var ch = String.fromCharCode(charCode == null ? keyCode : charCode) + // Some browsers fire keypress events for backspace + if (ch == "\x08") { return } + if (handleCharBinding(cm, e, ch)) { return } + cm.display.input.onKeyPress(e) +} + +// A mouse down can be a single click, double click, triple click, +// start of selection drag, start of text drag, new cursor +// (ctrl-click), rectangle drag (alt-drag), or xwin +// middle-click-paste. Or it might be a click on something we should +// not interfere with, such as a scrollbar or widget. +function onMouseDown(e) { + var cm = this, display = cm.display + if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return } + display.input.ensurePolled() + display.shift = e.shiftKey + + if (eventInWidget(display, e)) { + if (!webkit) { + // Briefly turn off draggability, to allow widgets to do + // normal dragging things. + display.scroller.draggable = false + setTimeout(function () { return display.scroller.draggable = true; }, 100) + } + return + } + if (clickInGutter(cm, e)) { return } + var start = posFromMouse(cm, e) + window.focus() + + switch (e_button(e)) { + case 1: + // #3261: make sure, that we're not starting a second selection + if (cm.state.selectingText) + { cm.state.selectingText(e) } + else if (start) + { leftButtonDown(cm, e, start) } + else if (e_target(e) == display.scroller) + { e_preventDefault(e) } + break + case 2: + if (webkit) { cm.state.lastMiddleDown = +new Date } + if (start) { extendSelection(cm.doc, start) } + setTimeout(function () { return display.input.focus(); }, 20) + e_preventDefault(e) + break + case 3: + if (captureRightClick) { onContextMenu(cm, e) } + else { delayBlurEvent(cm) } + break + } +} + +var lastClick; +var lastDoubleClick; +function leftButtonDown(cm, e, start) { + if (ie) { setTimeout(bind(ensureFocus, cm), 0) } + else { cm.curOp.focus = activeElt() } + + var now = +new Date, type + if (lastDoubleClick && lastDoubleClick.time > now - 400 && cmp(lastDoubleClick.pos, start) == 0) { + type = "triple" + } else if (lastClick && lastClick.time > now - 400 && cmp(lastClick.pos, start) == 0) { + type = "double" + lastDoubleClick = {time: now, pos: start} + } else { + type = "single" + lastClick = {time: now, pos: start} + } + + var sel = cm.doc.sel, modifier = mac ? e.metaKey : e.ctrlKey, contained + if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() && + type == "single" && (contained = sel.contains(start)) > -1 && + (cmp((contained = sel.ranges[contained]).from(), start) < 0 || start.xRel > 0) && + (cmp(contained.to(), start) > 0 || start.xRel < 0)) + { leftButtonStartDrag(cm, e, start, modifier) } + else + { leftButtonSelect(cm, e, start, type, modifier) } +} + +// Start a text drag. When it ends, see if any dragging actually +// happen, and treat as a click if it didn't. +function leftButtonStartDrag(cm, e, start, modifier) { + var display = cm.display, startTime = +new Date + var dragEnd = operation(cm, function (e2) { + if (webkit) { display.scroller.draggable = false } + cm.state.draggingText = false + off(document, "mouseup", dragEnd) + off(display.scroller, "drop", dragEnd) + if (Math.abs(e.clientX - e2.clientX) + Math.abs(e.clientY - e2.clientY) < 10) { + e_preventDefault(e2) + if (!modifier && +new Date - 200 < startTime) + { extendSelection(cm.doc, start) } + // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081) + if (webkit || ie && ie_version == 9) + { setTimeout(function () {document.body.focus(); display.input.focus()}, 20) } + else + { display.input.focus() } + } + }) + // Let the drag handler handle this. + if (webkit) { display.scroller.draggable = true } + cm.state.draggingText = dragEnd + dragEnd.copy = mac ? e.altKey : e.ctrlKey + // IE's approach to draggable + if (display.scroller.dragDrop) { display.scroller.dragDrop() } + on(document, "mouseup", dragEnd) + on(display.scroller, "drop", dragEnd) +} + +// Normal selection, as opposed to text dragging. +function leftButtonSelect(cm, e, start, type, addNew) { + var display = cm.display, doc = cm.doc + e_preventDefault(e) + + var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges + if (addNew && !e.shiftKey) { + ourIndex = doc.sel.contains(start) + if (ourIndex > -1) + { ourRange = ranges[ourIndex] } + else + { ourRange = new Range(start, start) } + } else { + ourRange = doc.sel.primary() + ourIndex = doc.sel.primIndex + } + + if (chromeOS ? e.shiftKey && e.metaKey : e.altKey) { + type = "rect" + if (!addNew) { ourRange = new Range(start, start) } + start = posFromMouse(cm, e, true, true) + ourIndex = -1 + } else if (type == "double") { + var word = cm.findWordAt(start) + if (cm.display.shift || doc.extend) + { ourRange = extendRange(doc, ourRange, word.anchor, word.head) } + else + { ourRange = word } + } else if (type == "triple") { + var line = new Range(Pos(start.line, 0), clipPos(doc, Pos(start.line + 1, 0))) + if (cm.display.shift || doc.extend) + { ourRange = extendRange(doc, ourRange, line.anchor, line.head) } + else + { ourRange = line } + } else { + ourRange = extendRange(doc, ourRange, start) + } + + if (!addNew) { + ourIndex = 0 + setSelection(doc, new Selection([ourRange], 0), sel_mouse) + startSel = doc.sel + } else if (ourIndex == -1) { + ourIndex = ranges.length + setSelection(doc, normalizeSelection(ranges.concat([ourRange]), ourIndex), + {scroll: false, origin: "*mouse"}) + } else if (ranges.length > 1 && ranges[ourIndex].empty() && type == "single" && !e.shiftKey) { + setSelection(doc, normalizeSelection(ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0), + {scroll: false, origin: "*mouse"}) + startSel = doc.sel + } else { + replaceOneSelection(doc, ourIndex, ourRange, sel_mouse) + } + + var lastPos = start + function extendTo(pos) { + if (cmp(lastPos, pos) == 0) { return } + lastPos = pos + + if (type == "rect") { + var ranges = [], tabSize = cm.options.tabSize + var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize) + var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize) + var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol) + for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); + line <= end; line++) { + var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize) + if (left == right) + { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))) } + else if (text.length > leftPos) + { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))) } + } + if (!ranges.length) { ranges.push(new Range(start, start)) } + setSelection(doc, normalizeSelection(startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), + {origin: "*mouse", scroll: false}) + cm.scrollIntoView(pos) + } else { + var oldRange = ourRange + var anchor = oldRange.anchor, head = pos + if (type != "single") { + var range + if (type == "double") + { range = cm.findWordAt(pos) } + else + { range = new Range(Pos(pos.line, 0), clipPos(doc, Pos(pos.line + 1, 0))) } + if (cmp(range.anchor, anchor) > 0) { + head = range.head + anchor = minPos(oldRange.from(), range.anchor) + } else { + head = range.anchor + anchor = maxPos(oldRange.to(), range.head) + } + } + var ranges$1 = startSel.ranges.slice(0) + ranges$1[ourIndex] = new Range(clipPos(doc, anchor), head) + setSelection(doc, normalizeSelection(ranges$1, ourIndex), sel_mouse) + } + } + + var editorSize = display.wrapper.getBoundingClientRect() + // Used to ensure timeout re-tries don't fire when another extend + // happened in the meantime (clearTimeout isn't reliable -- at + // least on Chrome, the timeouts still happen even when cleared, + // if the clear happens after their scheduled firing time). + var counter = 0 + + function extend(e) { + var curCount = ++counter + var cur = posFromMouse(cm, e, true, type == "rect") + if (!cur) { return } + if (cmp(cur, lastPos) != 0) { + cm.curOp.focus = activeElt() + extendTo(cur) + var visible = visibleLines(display, doc) + if (cur.line >= visible.to || cur.line < visible.from) + { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e) }}), 150) } + } else { + var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0 + if (outside) { setTimeout(operation(cm, function () { + if (counter != curCount) { return } + display.scroller.scrollTop += outside + extend(e) + }), 50) } + } + } + + function done(e) { + cm.state.selectingText = false + counter = Infinity + e_preventDefault(e) + display.input.focus() + off(document, "mousemove", move) + off(document, "mouseup", up) + doc.history.lastSelOrigin = null + } + + var move = operation(cm, function (e) { + if (!e_button(e)) { done(e) } + else { extend(e) } + }) + var up = operation(cm, done) + cm.state.selectingText = up + on(document, "mousemove", move) + on(document, "mouseup", up) +} + + +// Determines whether an event happened in the gutter, and fires the +// handlers for the corresponding event. +function gutterEvent(cm, e, type, prevent) { + var mX, mY + try { mX = e.clientX; mY = e.clientY } + catch(e) { return false } + if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false } + if (prevent) { e_preventDefault(e) } + + var display = cm.display + var lineBox = display.lineDiv.getBoundingClientRect() + + if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) } + mY -= lineBox.top - display.viewOffset + + for (var i = 0; i < cm.options.gutters.length; ++i) { + var g = display.gutters.childNodes[i] + if (g && g.getBoundingClientRect().right >= mX) { + var line = lineAtHeight(cm.doc, mY) + var gutter = cm.options.gutters[i] + signal(cm, type, cm, line, gutter, e) + return e_defaultPrevented(e) + } + } +} + +function clickInGutter(cm, e) { + return gutterEvent(cm, e, "gutterClick", true) +} + +// CONTEXT MENU HANDLING + +// To make the context menu work, we need to briefly unhide the +// textarea (making it as unobtrusive as possible) to let the +// right-click take effect on it. +function onContextMenu(cm, e) { + if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return } + if (signalDOMEvent(cm, e, "contextmenu")) { return } + cm.display.input.onContextMenu(e) +} + +function contextMenuInGutter(cm, e) { + if (!hasHandler(cm, "gutterContextMenu")) { return false } + return gutterEvent(cm, e, "gutterContextMenu", false) +} + +function themeChanged(cm) { + cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") + + cm.options.theme.replace(/(^|\s)\s*/g, " cm-s-") + clearCaches(cm) +} + +var Init = {toString: function(){return "CodeMirror.Init"}} + +var defaults = {} +var optionHandlers = {} + +function defineOptions(CodeMirror) { + var optionHandlers = CodeMirror.optionHandlers + + function option(name, deflt, handle, notOnInit) { + CodeMirror.defaults[name] = deflt + if (handle) { optionHandlers[name] = + notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old) }} : handle } + } + + CodeMirror.defineOption = option + + // Passed to option handlers when there is no old value. + CodeMirror.Init = Init + + // These two are, on init, called from the constructor because they + // have to be initialized before the editor can start at all. + option("value", "", function (cm, val) { return cm.setValue(val); }, true) + option("mode", null, function (cm, val) { + cm.doc.modeOption = val + loadMode(cm) + }, true) + + option("indentUnit", 2, loadMode, true) + option("indentWithTabs", false) + option("smartIndent", true) + option("tabSize", 4, function (cm) { + resetModeState(cm) + clearCaches(cm) + regChange(cm) + }, true) + option("lineSeparator", null, function (cm, val) { + cm.doc.lineSep = val + if (!val) { return } + var newBreaks = [], lineNo = cm.doc.first + cm.doc.iter(function (line) { + for (var pos = 0;;) { + var found = line.text.indexOf(val, pos) + if (found == -1) { break } + pos = found + val.length + newBreaks.push(Pos(lineNo, found)) + } + lineNo++ + }) + for (var i = newBreaks.length - 1; i >= 0; i--) + { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)) } + }) + option("specialChars", /[\u0000-\u001f\u007f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff]/g, function (cm, val, old) { + cm.state.specialChars = new RegExp(val.source + (val.test("\t") ? "" : "|\t"), "g") + if (old != Init) { cm.refresh() } + }) + option("specialCharPlaceholder", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true) + option("electricChars", true) + option("inputStyle", mobile ? "contenteditable" : "textarea", function () { + throw new Error("inputStyle can not (yet) be changed in a running editor") // FIXME + }, true) + option("spellcheck", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true) + option("rtlMoveVisually", !windows) + option("wholeLineUpdateBefore", true) + + option("theme", "default", function (cm) { + themeChanged(cm) + guttersChanged(cm) + }, true) + option("keyMap", "default", function (cm, val, old) { + var next = getKeyMap(val) + var prev = old != Init && getKeyMap(old) + if (prev && prev.detach) { prev.detach(cm, next) } + if (next.attach) { next.attach(cm, prev || null) } + }) + option("extraKeys", null) + + option("lineWrapping", false, wrappingChanged, true) + option("gutters", [], function (cm) { + setGuttersForLineNumbers(cm.options) + guttersChanged(cm) + }, true) + option("fixedGutter", true, function (cm, val) { + cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + "px" : "0" + cm.refresh() + }, true) + option("coverGutterNextToScrollbar", false, function (cm) { return updateScrollbars(cm); }, true) + option("scrollbarStyle", "native", function (cm) { + initScrollbars(cm) + updateScrollbars(cm) + cm.display.scrollbars.setScrollTop(cm.doc.scrollTop) + cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft) + }, true) + option("lineNumbers", false, function (cm) { + setGuttersForLineNumbers(cm.options) + guttersChanged(cm) + }, true) + option("firstLineNumber", 1, guttersChanged, true) + option("lineNumberFormatter", function (integer) { return integer; }, guttersChanged, true) + option("showCursorWhenSelecting", false, updateSelection, true) + + option("resetSelectionOnContextMenu", true) + option("lineWiseCopyCut", true) + + option("readOnly", false, function (cm, val) { + if (val == "nocursor") { + onBlur(cm) + cm.display.input.blur() + cm.display.disabled = true + } else { + cm.display.disabled = false + } + cm.display.input.readOnlyChanged(val) + }) + option("disableInput", false, function (cm, val) {if (!val) { cm.display.input.reset() }}, true) + option("dragDrop", true, dragDropChanged) + option("allowDropFileTypes", null) + + option("cursorBlinkRate", 530) + option("cursorScrollMargin", 0) + option("cursorHeight", 1, updateSelection, true) + option("singleCursorHeightPerLine", true, updateSelection, true) + option("workTime", 100) + option("workDelay", 100) + option("flattenSpans", true, resetModeState, true) + option("addModeClass", false, resetModeState, true) + option("pollInterval", 100) + option("undoDepth", 200, function (cm, val) { return cm.doc.history.undoDepth = val; }) + option("historyEventDelay", 1250) + option("viewportMargin", 10, function (cm) { return cm.refresh(); }, true) + option("maxHighlightLength", 10000, resetModeState, true) + option("moveInputWithCursor", true, function (cm, val) { + if (!val) { cm.display.input.resetPosition() } + }) + + option("tabindex", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || ""; }) + option("autofocus", null) +} + +function guttersChanged(cm) { + updateGutters(cm) + regChange(cm) + alignHorizontally(cm) +} + +function dragDropChanged(cm, value, old) { + var wasOn = old && old != Init + if (!value != !wasOn) { + var funcs = cm.display.dragFunctions + var toggle = value ? on : off + toggle(cm.display.scroller, "dragstart", funcs.start) + toggle(cm.display.scroller, "dragenter", funcs.enter) + toggle(cm.display.scroller, "dragover", funcs.over) + toggle(cm.display.scroller, "dragleave", funcs.leave) + toggle(cm.display.scroller, "drop", funcs.drop) + } +} + +function wrappingChanged(cm) { + if (cm.options.lineWrapping) { + addClass(cm.display.wrapper, "CodeMirror-wrap") + cm.display.sizer.style.minWidth = "" + cm.display.sizerWidth = null + } else { + rmClass(cm.display.wrapper, "CodeMirror-wrap") + findMaxLine(cm) + } + estimateLineHeights(cm) + regChange(cm) + clearCaches(cm) + setTimeout(function () { return updateScrollbars(cm); }, 100) +} + +// A CodeMirror instance represents an editor. This is the object +// that user code is usually dealing with. + +function CodeMirror(place, options) { + var this$1 = this; + + if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) } + + this.options = options = options ? copyObj(options) : {} + // Determine effective options based on given values and defaults. + copyObj(defaults, options, false) + setGuttersForLineNumbers(options) + + var doc = options.value + if (typeof doc == "string") { doc = new Doc(doc, options.mode, null, options.lineSeparator) } + this.doc = doc + + var input = new CodeMirror.inputStyles[options.inputStyle](this) + var display = this.display = new Display(place, doc, input) + display.wrapper.CodeMirror = this + updateGutters(this) + themeChanged(this) + if (options.lineWrapping) + { this.display.wrapper.className += " CodeMirror-wrap" } + initScrollbars(this) + + this.state = { + keyMaps: [], // stores maps added by addKeyMap + overlays: [], // highlighting overlays, as added by addOverlay + modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info + overwrite: false, + delayingBlurEvent: false, + focused: false, + suppressEdits: false, // used to disable editing during key handlers when in readOnly mode + pasteIncoming: false, cutIncoming: false, // help recognize paste/cut edits in input.poll + selectingText: false, + draggingText: false, + highlight: new Delayed(), // stores highlight worker timeout + keySeq: null, // Unfinished key sequence + specialChars: null + } + + if (options.autofocus && !mobile) { display.input.focus() } + + // Override magic textarea content restore that IE sometimes does + // on our hidden textarea on reload + if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20) } + + registerEventHandlers(this) + ensureGlobalHandlers() + + startOperation(this) + this.curOp.forceUpdate = true + attachDoc(this, doc) + + if ((options.autofocus && !mobile) || this.hasFocus()) + { setTimeout(bind(onFocus, this), 20) } + else + { onBlur(this) } + + for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt)) + { optionHandlers[opt](this$1, options[opt], Init) } } + maybeUpdateLineNumberWidth(this) + if (options.finishInit) { options.finishInit(this) } + for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this$1) } + endOperation(this) + // Suppress optimizelegibility in Webkit, since it breaks text + // measuring on line wrapping boundaries. + if (webkit && options.lineWrapping && + getComputedStyle(display.lineDiv).textRendering == "optimizelegibility") + { display.lineDiv.style.textRendering = "auto" } +} + +// The default configuration options. +CodeMirror.defaults = defaults +// Functions to run when options are changed. +CodeMirror.optionHandlers = optionHandlers + +// Attach the necessary event handlers when initializing the editor +function registerEventHandlers(cm) { + var d = cm.display + on(d.scroller, "mousedown", operation(cm, onMouseDown)) + // Older IE's will not fire a second mousedown for a double click + if (ie && ie_version < 11) + { on(d.scroller, "dblclick", operation(cm, function (e) { + if (signalDOMEvent(cm, e)) { return } + var pos = posFromMouse(cm, e) + if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return } + e_preventDefault(e) + var word = cm.findWordAt(pos) + extendSelection(cm.doc, word.anchor, word.head) + })) } + else + { on(d.scroller, "dblclick", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }) } + // Some browsers fire contextmenu *after* opening the menu, at + // which point we can't mess with it anymore. Context menu is + // handled in onMouseDown for these browsers. + if (!captureRightClick) { on(d.scroller, "contextmenu", function (e) { return onContextMenu(cm, e); }) } + + // Used to suppress mouse event handling when a touch happens + var touchFinished, prevTouch = {end: 0} + function finishTouch() { + if (d.activeTouch) { + touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000) + prevTouch = d.activeTouch + prevTouch.end = +new Date + } + } + function isMouseLikeTouchEvent(e) { + if (e.touches.length != 1) { return false } + var touch = e.touches[0] + return touch.radiusX <= 1 && touch.radiusY <= 1 + } + function farAway(touch, other) { + if (other.left == null) { return true } + var dx = other.left - touch.left, dy = other.top - touch.top + return dx * dx + dy * dy > 20 * 20 + } + on(d.scroller, "touchstart", function (e) { + if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e)) { + d.input.ensurePolled() + clearTimeout(touchFinished) + var now = +new Date + d.activeTouch = {start: now, moved: false, + prev: now - prevTouch.end <= 300 ? prevTouch : null} + if (e.touches.length == 1) { + d.activeTouch.left = e.touches[0].pageX + d.activeTouch.top = e.touches[0].pageY + } + } + }) + on(d.scroller, "touchmove", function () { + if (d.activeTouch) { d.activeTouch.moved = true } + }) + on(d.scroller, "touchend", function (e) { + var touch = d.activeTouch + if (touch && !eventInWidget(d, e) && touch.left != null && + !touch.moved && new Date - touch.start < 300) { + var pos = cm.coordsChar(d.activeTouch, "page"), range + if (!touch.prev || farAway(touch, touch.prev)) // Single tap + { range = new Range(pos, pos) } + else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap + { range = cm.findWordAt(pos) } + else // Triple tap + { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) } + cm.setSelection(range.anchor, range.head) + cm.focus() + e_preventDefault(e) + } + finishTouch() + }) + on(d.scroller, "touchcancel", finishTouch) + + // Sync scrolling between fake scrollbars and real scrollable + // area, ensure viewport is updated when scrolling. + on(d.scroller, "scroll", function () { + if (d.scroller.clientHeight) { + setScrollTop(cm, d.scroller.scrollTop) + setScrollLeft(cm, d.scroller.scrollLeft, true) + signal(cm, "scroll", cm) + } + }) + + // Listen to wheel events in order to try and update the viewport on time. + on(d.scroller, "mousewheel", function (e) { return onScrollWheel(cm, e); }) + on(d.scroller, "DOMMouseScroll", function (e) { return onScrollWheel(cm, e); }) + + // Prevent wrapper from ever scrolling + on(d.wrapper, "scroll", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; }) + + d.dragFunctions = { + enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e) }}, + over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e) }}, + start: function (e) { return onDragStart(cm, e); }, + drop: operation(cm, onDrop), + leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm) }} + } + + var inp = d.input.getField() + on(inp, "keyup", function (e) { return onKeyUp.call(cm, e); }) + on(inp, "keydown", operation(cm, onKeyDown)) + on(inp, "keypress", operation(cm, onKeyPress)) + on(inp, "focus", function (e) { return onFocus(cm, e); }) + on(inp, "blur", function (e) { return onBlur(cm, e); }) +} + +var initHooks = [] +CodeMirror.defineInitHook = function (f) { return initHooks.push(f); } + +// Indent the given line. The how parameter can be "smart", +// "add"/null, "subtract", or "prev". When aggressive is false +// (typically set to true for forced single-line indents), empty +// lines are not indented, and places where the mode returns Pass +// are left alone. +function indentLine(cm, n, how, aggressive) { + var doc = cm.doc, state + if (how == null) { how = "add" } + if (how == "smart") { + // Fall back to "prev" when the mode doesn't have an indentation + // method. + if (!doc.mode.indent) { how = "prev" } + else { state = getStateBefore(cm, n) } + } + + var tabSize = cm.options.tabSize + var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize) + if (line.stateAfter) { line.stateAfter = null } + var curSpaceString = line.text.match(/^\s*/)[0], indentation + if (!aggressive && !/\S/.test(line.text)) { + indentation = 0 + how = "not" + } else if (how == "smart") { + indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text) + if (indentation == Pass || indentation > 150) { + if (!aggressive) { return } + how = "prev" + } + } + if (how == "prev") { + if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize) } + else { indentation = 0 } + } else if (how == "add") { + indentation = curSpace + cm.options.indentUnit + } else if (how == "subtract") { + indentation = curSpace - cm.options.indentUnit + } else if (typeof how == "number") { + indentation = curSpace + how + } + indentation = Math.max(0, indentation) + + var indentString = "", pos = 0 + if (cm.options.indentWithTabs) + { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += "\t"} } + if (pos < indentation) { indentString += spaceStr(indentation - pos) } + + if (indentString != curSpaceString) { + replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), "+input") + line.stateAfter = null + return true + } else { + // Ensure that, if the cursor was in the whitespace at the start + // of the line, it is moved to the end of that space. + for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) { + var range = doc.sel.ranges[i$1] + if (range.head.line == n && range.head.ch < curSpaceString.length) { + var pos$1 = Pos(n, curSpaceString.length) + replaceOneSelection(doc, i$1, new Range(pos$1, pos$1)) + break + } + } + } +} + +// This will be set to a {lineWise: bool, text: [string]} object, so +// that, when pasting, we know what kind of selections the copied +// text was made out of. +var lastCopied = null + +function setLastCopied(newLastCopied) { + lastCopied = newLastCopied +} + +function applyTextInput(cm, inserted, deleted, sel, origin) { + var doc = cm.doc + cm.display.shift = false + if (!sel) { sel = doc.sel } + + var paste = cm.state.pasteIncoming || origin == "paste" + var textLines = splitLinesAuto(inserted), multiPaste = null + // When pasing N lines into N selections, insert one line per selection + if (paste && sel.ranges.length > 1) { + if (lastCopied && lastCopied.text.join("\n") == inserted) { + if (sel.ranges.length % lastCopied.text.length == 0) { + multiPaste = [] + for (var i = 0; i < lastCopied.text.length; i++) + { multiPaste.push(doc.splitLines(lastCopied.text[i])) } + } + } else if (textLines.length == sel.ranges.length) { + multiPaste = map(textLines, function (l) { return [l]; }) + } + } + + var updateInput + // Normal behavior is to insert the new text into every selection + for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) { + var range = sel.ranges[i$1] + var from = range.from(), to = range.to() + if (range.empty()) { + if (deleted && deleted > 0) // Handle deletion + { from = Pos(from.line, from.ch - deleted) } + else if (cm.state.overwrite && !paste) // Handle overwrite + { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)) } + else if (lastCopied && lastCopied.lineWise && lastCopied.text.join("\n") == inserted) + { from = to = Pos(from.line, 0) } + } + updateInput = cm.curOp.updateInput + var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines, + origin: origin || (paste ? "paste" : cm.state.cutIncoming ? "cut" : "+input")} + makeChange(cm.doc, changeEvent) + signalLater(cm, "inputRead", cm, changeEvent) + } + if (inserted && !paste) + { triggerElectric(cm, inserted) } + + ensureCursorVisible(cm) + cm.curOp.updateInput = updateInput + cm.curOp.typing = true + cm.state.pasteIncoming = cm.state.cutIncoming = false +} + +function handlePaste(e, cm) { + var pasted = e.clipboardData && e.clipboardData.getData("Text") + if (pasted) { + e.preventDefault() + if (!cm.isReadOnly() && !cm.options.disableInput) + { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, "paste"); }) } + return true + } +} + +function triggerElectric(cm, inserted) { + // When an 'electric' character is inserted, immediately trigger a reindent + if (!cm.options.electricChars || !cm.options.smartIndent) { return } + var sel = cm.doc.sel + + for (var i = sel.ranges.length - 1; i >= 0; i--) { + var range = sel.ranges[i] + if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue } + var mode = cm.getModeAt(range.head) + var indented = false + if (mode.electricChars) { + for (var j = 0; j < mode.electricChars.length; j++) + { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) { + indented = indentLine(cm, range.head.line, "smart") + break + } } + } else if (mode.electricInput) { + if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch))) + { indented = indentLine(cm, range.head.line, "smart") } + } + if (indented) { signalLater(cm, "electricInput", cm, range.head.line) } + } +} + +function copyableRanges(cm) { + var text = [], ranges = [] + for (var i = 0; i < cm.doc.sel.ranges.length; i++) { + var line = cm.doc.sel.ranges[i].head.line + var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)} + ranges.push(lineRange) + text.push(cm.getRange(lineRange.anchor, lineRange.head)) + } + return {text: text, ranges: ranges} +} + +function disableBrowserMagic(field, spellcheck) { + field.setAttribute("autocorrect", "off") + field.setAttribute("autocapitalize", "off") + field.setAttribute("spellcheck", !!spellcheck) +} + +function hiddenTextarea() { + var te = elt("textarea", null, null, "position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none") + var div = elt("div", [te], null, "overflow: hidden; position: relative; width: 3px; height: 0px;") + // The textarea is kept positioned near the cursor to prevent the + // fact that it'll be scrolled into view on input from scrolling + // our fake cursor out of view. On webkit, when wrap=off, paste is + // very slow. So make the area wide instead. + if (webkit) { te.style.width = "1000px" } + else { te.setAttribute("wrap", "off") } + // If border: 0; -- iOS fails to open keyboard (issue #1287) + if (ios) { te.style.border = "1px solid black" } + disableBrowserMagic(te) + return div +} + +// The publicly visible API. Note that methodOp(f) means +// 'wrap f in an operation, performed on its `this` parameter'. + +// This is not the complete set of editor methods. Most of the +// methods defined on the Doc type are also injected into +// CodeMirror.prototype, for backwards compatibility and +// convenience. + +function addEditorMethods(CodeMirror) { + var optionHandlers = CodeMirror.optionHandlers + + var helpers = CodeMirror.helpers = {} + + CodeMirror.prototype = { + constructor: CodeMirror, + focus: function(){window.focus(); this.display.input.focus()}, + + setOption: function(option, value) { + var options = this.options, old = options[option] + if (options[option] == value && option != "mode") { return } + options[option] = value + if (optionHandlers.hasOwnProperty(option)) + { operation(this, optionHandlers[option])(this, value, old) } + signal(this, "optionChange", this, option) + }, + + getOption: function(option) {return this.options[option]}, + getDoc: function() {return this.doc}, + + addKeyMap: function(map, bottom) { + this.state.keyMaps[bottom ? "push" : "unshift"](getKeyMap(map)) + }, + removeKeyMap: function(map) { + var maps = this.state.keyMaps + for (var i = 0; i < maps.length; ++i) + { if (maps[i] == map || maps[i].name == map) { + maps.splice(i, 1) + return true + } } + }, + + addOverlay: methodOp(function(spec, options) { + var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec) + if (mode.startState) { throw new Error("Overlays may not be stateful.") } + insertSorted(this.state.overlays, + {mode: mode, modeSpec: spec, opaque: options && options.opaque, + priority: (options && options.priority) || 0}, + function (overlay) { return overlay.priority; }) + this.state.modeGen++ + regChange(this) + }), + removeOverlay: methodOp(function(spec) { + var this$1 = this; + + var overlays = this.state.overlays + for (var i = 0; i < overlays.length; ++i) { + var cur = overlays[i].modeSpec + if (cur == spec || typeof spec == "string" && cur.name == spec) { + overlays.splice(i, 1) + this$1.state.modeGen++ + regChange(this$1) + return + } + } + }), + + indentLine: methodOp(function(n, dir, aggressive) { + if (typeof dir != "string" && typeof dir != "number") { + if (dir == null) { dir = this.options.smartIndent ? "smart" : "prev" } + else { dir = dir ? "add" : "subtract" } + } + if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive) } + }), + indentSelection: methodOp(function(how) { + var this$1 = this; + + var ranges = this.doc.sel.ranges, end = -1 + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i] + if (!range.empty()) { + var from = range.from(), to = range.to() + var start = Math.max(end, from.line) + end = Math.min(this$1.lastLine(), to.line - (to.ch ? 0 : 1)) + 1 + for (var j = start; j < end; ++j) + { indentLine(this$1, j, how) } + var newRanges = this$1.doc.sel.ranges + if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0) + { replaceOneSelection(this$1.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll) } + } else if (range.head.line > end) { + indentLine(this$1, range.head.line, how, true) + end = range.head.line + if (i == this$1.doc.sel.primIndex) { ensureCursorVisible(this$1) } + } + } + }), + + // Fetch the parser token for a given character. Useful for hacks + // that want to inspect the mode state (say, for completion). + getTokenAt: function(pos, precise) { + return takeToken(this, pos, precise) + }, + + getLineTokens: function(line, precise) { + return takeToken(this, Pos(line), precise, true) + }, + + getTokenTypeAt: function(pos) { + pos = clipPos(this.doc, pos) + var styles = getLineStyles(this, getLine(this.doc, pos.line)) + var before = 0, after = (styles.length - 1) / 2, ch = pos.ch + var type + if (ch == 0) { type = styles[2] } + else { for (;;) { + var mid = (before + after) >> 1 + if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid } + else if (styles[mid * 2 + 1] < ch) { before = mid + 1 } + else { type = styles[mid * 2 + 2]; break } + } } + var cut = type ? type.indexOf("overlay ") : -1 + return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1) + }, + + getModeAt: function(pos) { + var mode = this.doc.mode + if (!mode.innerMode) { return mode } + return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode + }, + + getHelper: function(pos, type) { + return this.getHelpers(pos, type)[0] + }, + + getHelpers: function(pos, type) { + var this$1 = this; + + var found = [] + if (!helpers.hasOwnProperty(type)) { return found } + var help = helpers[type], mode = this.getModeAt(pos) + if (typeof mode[type] == "string") { + if (help[mode[type]]) { found.push(help[mode[type]]) } + } else if (mode[type]) { + for (var i = 0; i < mode[type].length; i++) { + var val = help[mode[type][i]] + if (val) { found.push(val) } + } + } else if (mode.helperType && help[mode.helperType]) { + found.push(help[mode.helperType]) + } else if (help[mode.name]) { + found.push(help[mode.name]) + } + for (var i$1 = 0; i$1 < help._global.length; i$1++) { + var cur = help._global[i$1] + if (cur.pred(mode, this$1) && indexOf(found, cur.val) == -1) + { found.push(cur.val) } + } + return found + }, + + getStateAfter: function(line, precise) { + var doc = this.doc + line = clipLine(doc, line == null ? doc.first + doc.size - 1: line) + return getStateBefore(this, line + 1, precise) + }, + + cursorCoords: function(start, mode) { + var pos, range = this.doc.sel.primary() + if (start == null) { pos = range.head } + else if (typeof start == "object") { pos = clipPos(this.doc, start) } + else { pos = start ? range.from() : range.to() } + return cursorCoords(this, pos, mode || "page") + }, + + charCoords: function(pos, mode) { + return charCoords(this, clipPos(this.doc, pos), mode || "page") + }, + + coordsChar: function(coords, mode) { + coords = fromCoordSystem(this, coords, mode || "page") + return coordsChar(this, coords.left, coords.top) + }, + + lineAtHeight: function(height, mode) { + height = fromCoordSystem(this, {top: height, left: 0}, mode || "page").top + return lineAtHeight(this.doc, height + this.display.viewOffset) + }, + heightAtLine: function(line, mode, includeWidgets) { + var end = false, lineObj + if (typeof line == "number") { + var last = this.doc.first + this.doc.size - 1 + if (line < this.doc.first) { line = this.doc.first } + else if (line > last) { line = last; end = true } + lineObj = getLine(this.doc, line) + } else { + lineObj = line + } + return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || "page", includeWidgets).top + + (end ? this.doc.height - heightAtLine(lineObj) : 0) + }, + + defaultTextHeight: function() { return textHeight(this.display) }, + defaultCharWidth: function() { return charWidth(this.display) }, + + getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}}, + + addWidget: function(pos, node, scroll, vert, horiz) { + var display = this.display + pos = cursorCoords(this, clipPos(this.doc, pos)) + var top = pos.bottom, left = pos.left + node.style.position = "absolute" + node.setAttribute("cm-ignore-events", "true") + this.display.input.setUneditable(node) + display.sizer.appendChild(node) + if (vert == "over") { + top = pos.top + } else if (vert == "above" || vert == "near") { + var vspace = Math.max(display.wrapper.clientHeight, this.doc.height), + hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth) + // Default to positioning above (if specified and possible); otherwise default to positioning below + if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) + { top = pos.top - node.offsetHeight } + else if (pos.bottom + node.offsetHeight <= vspace) + { top = pos.bottom } + if (left + node.offsetWidth > hspace) + { left = hspace - node.offsetWidth } + } + node.style.top = top + "px" + node.style.left = node.style.right = "" + if (horiz == "right") { + left = display.sizer.clientWidth - node.offsetWidth + node.style.right = "0px" + } else { + if (horiz == "left") { left = 0 } + else if (horiz == "middle") { left = (display.sizer.clientWidth - node.offsetWidth) / 2 } + node.style.left = left + "px" + } + if (scroll) + { scrollIntoView(this, left, top, left + node.offsetWidth, top + node.offsetHeight) } + }, + + triggerOnKeyDown: methodOp(onKeyDown), + triggerOnKeyPress: methodOp(onKeyPress), + triggerOnKeyUp: onKeyUp, + + execCommand: function(cmd) { + if (commands.hasOwnProperty(cmd)) + { return commands[cmd].call(null, this) } + }, + + triggerElectric: methodOp(function(text) { triggerElectric(this, text) }), + + findPosH: function(from, amount, unit, visually) { + var this$1 = this; + + var dir = 1 + if (amount < 0) { dir = -1; amount = -amount } + var cur = clipPos(this.doc, from) + for (var i = 0; i < amount; ++i) { + cur = findPosH(this$1.doc, cur, dir, unit, visually) + if (cur.hitSide) { break } + } + return cur + }, + + moveH: methodOp(function(dir, unit) { + var this$1 = this; + + this.extendSelectionsBy(function (range) { + if (this$1.display.shift || this$1.doc.extend || range.empty()) + { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) } + else + { return dir < 0 ? range.from() : range.to() } + }, sel_move) + }), + + deleteH: methodOp(function(dir, unit) { + var sel = this.doc.sel, doc = this.doc + if (sel.somethingSelected()) + { doc.replaceSelection("", null, "+delete") } + else + { deleteNearSelection(this, function (range) { + var other = findPosH(doc, range.head, dir, unit, false) + return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other} + }) } + }), + + findPosV: function(from, amount, unit, goalColumn) { + var this$1 = this; + + var dir = 1, x = goalColumn + if (amount < 0) { dir = -1; amount = -amount } + var cur = clipPos(this.doc, from) + for (var i = 0; i < amount; ++i) { + var coords = cursorCoords(this$1, cur, "div") + if (x == null) { x = coords.left } + else { coords.left = x } + cur = findPosV(this$1, coords, dir, unit) + if (cur.hitSide) { break } + } + return cur + }, + + moveV: methodOp(function(dir, unit) { + var this$1 = this; + + var doc = this.doc, goals = [] + var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected() + doc.extendSelectionsBy(function (range) { + if (collapse) + { return dir < 0 ? range.from() : range.to() } + var headPos = cursorCoords(this$1, range.head, "div") + if (range.goalColumn != null) { headPos.left = range.goalColumn } + goals.push(headPos.left) + var pos = findPosV(this$1, headPos, dir, unit) + if (unit == "page" && range == doc.sel.primary()) + { addToScrollPos(this$1, null, charCoords(this$1, pos, "div").top - headPos.top) } + return pos + }, sel_move) + if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++) + { doc.sel.ranges[i].goalColumn = goals[i] } } + }), + + // Find the word at the given position (as returned by coordsChar). + findWordAt: function(pos) { + var doc = this.doc, line = getLine(doc, pos.line).text + var start = pos.ch, end = pos.ch + if (line) { + var helper = this.getHelper(pos, "wordChars") + if ((pos.xRel < 0 || end == line.length) && start) { --start; } else { ++end } + var startChar = line.charAt(start) + var check = isWordChar(startChar, helper) + ? function (ch) { return isWordChar(ch, helper); } + : /\s/.test(startChar) ? function (ch) { return /\s/.test(ch); } + : function (ch) { return (!/\s/.test(ch) && !isWordChar(ch)); } + while (start > 0 && check(line.charAt(start - 1))) { --start } + while (end < line.length && check(line.charAt(end))) { ++end } + } + return new Range(Pos(pos.line, start), Pos(pos.line, end)) + }, + + toggleOverwrite: function(value) { + if (value != null && value == this.state.overwrite) { return } + if (this.state.overwrite = !this.state.overwrite) + { addClass(this.display.cursorDiv, "CodeMirror-overwrite") } + else + { rmClass(this.display.cursorDiv, "CodeMirror-overwrite") } + + signal(this, "overwriteToggle", this, this.state.overwrite) + }, + hasFocus: function() { return this.display.input.getField() == activeElt() }, + isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) }, + + scrollTo: methodOp(function(x, y) { + if (x != null || y != null) { resolveScrollToPos(this) } + if (x != null) { this.curOp.scrollLeft = x } + if (y != null) { this.curOp.scrollTop = y } + }), + getScrollInfo: function() { + var scroller = this.display.scroller + return {left: scroller.scrollLeft, top: scroller.scrollTop, + height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight, + width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth, + clientHeight: displayHeight(this), clientWidth: displayWidth(this)} + }, + + scrollIntoView: methodOp(function(range, margin) { + if (range == null) { + range = {from: this.doc.sel.primary().head, to: null} + if (margin == null) { margin = this.options.cursorScrollMargin } + } else if (typeof range == "number") { + range = {from: Pos(range, 0), to: null} + } else if (range.from == null) { + range = {from: range, to: null} + } + if (!range.to) { range.to = range.from } + range.margin = margin || 0 + + if (range.from.line != null) { + resolveScrollToPos(this) + this.curOp.scrollToPos = range + } else { + var sPos = calculateScrollPos(this, Math.min(range.from.left, range.to.left), + Math.min(range.from.top, range.to.top) - range.margin, + Math.max(range.from.right, range.to.right), + Math.max(range.from.bottom, range.to.bottom) + range.margin) + this.scrollTo(sPos.scrollLeft, sPos.scrollTop) + } + }), + + setSize: methodOp(function(width, height) { + var this$1 = this; + + var interpret = function (val) { return typeof val == "number" || /^\d+$/.test(String(val)) ? val + "px" : val; } + if (width != null) { this.display.wrapper.style.width = interpret(width) } + if (height != null) { this.display.wrapper.style.height = interpret(height) } + if (this.options.lineWrapping) { clearLineMeasurementCache(this) } + var lineNo = this.display.viewFrom + this.doc.iter(lineNo, this.display.viewTo, function (line) { + if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) + { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, "widget"); break } } } + ++lineNo + }) + this.curOp.forceUpdate = true + signal(this, "refresh", this) + }), + + operation: function(f){return runInOp(this, f)}, + + refresh: methodOp(function() { + var oldHeight = this.display.cachedTextHeight + regChange(this) + this.curOp.forceUpdate = true + clearCaches(this) + this.scrollTo(this.doc.scrollLeft, this.doc.scrollTop) + updateGutterSpace(this) + if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5) + { estimateLineHeights(this) } + signal(this, "refresh", this) + }), + + swapDoc: methodOp(function(doc) { + var old = this.doc + old.cm = null + attachDoc(this, doc) + clearCaches(this) + this.display.input.reset() + this.scrollTo(doc.scrollLeft, doc.scrollTop) + this.curOp.forceScroll = true + signalLater(this, "swapDoc", this, old) + return old + }), + + getInputField: function(){return this.display.input.getField()}, + getWrapperElement: function(){return this.display.wrapper}, + getScrollerElement: function(){return this.display.scroller}, + getGutterElement: function(){return this.display.gutters} + } + eventMixin(CodeMirror) + + CodeMirror.registerHelper = function(type, name, value) { + if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []} } + helpers[type][name] = value + } + CodeMirror.registerGlobalHelper = function(type, name, predicate, value) { + CodeMirror.registerHelper(type, name, value) + helpers[type]._global.push({pred: predicate, val: value}) + } +} + +// Used for horizontal relative motion. Dir is -1 or 1 (left or +// right), unit can be "char", "column" (like char, but doesn't +// cross line boundaries), "word" (across next word), or "group" (to +// the start of next group of word or non-word-non-whitespace +// chars). The visually param controls whether, in right-to-left +// text, direction 1 means to move towards the next index in the +// string, or towards the character to the right of the current +// position. The resulting position will have a hitSide=true +// property if it reached the end of the document. +function findPosH(doc, pos, dir, unit, visually) { + var line = pos.line, ch = pos.ch, origDir = dir + var lineObj = getLine(doc, line) + function findNextLine() { + var l = line + dir + if (l < doc.first || l >= doc.first + doc.size) { return false } + line = l + return lineObj = getLine(doc, l) + } + function moveOnce(boundToLine) { + var next = (visually ? moveVisually : moveLogically)(lineObj, ch, dir, true) + if (next == null) { + if (!boundToLine && findNextLine()) { + if (visually) { ch = (dir < 0 ? lineRight : lineLeft)(lineObj) } + else { ch = dir < 0 ? lineObj.text.length : 0 } + } else { return false } + } else { ch = next } + return true + } + + if (unit == "char") { + moveOnce() + } else if (unit == "column") { + moveOnce(true) + } else if (unit == "word" || unit == "group") { + var sawType = null, group = unit == "group" + var helper = doc.cm && doc.cm.getHelper(pos, "wordChars") + for (var first = true;; first = false) { + if (dir < 0 && !moveOnce(!first)) { break } + var cur = lineObj.text.charAt(ch) || "\n" + var type = isWordChar(cur, helper) ? "w" + : group && cur == "\n" ? "n" + : !group || /\s/.test(cur) ? null + : "p" + if (group && !first && !type) { type = "s" } + if (sawType && sawType != type) { + if (dir < 0) {dir = 1; moveOnce()} + break + } + + if (type) { sawType = type } + if (dir > 0 && !moveOnce(!first)) { break } + } + } + var result = skipAtomic(doc, Pos(line, ch), pos, origDir, true) + if (!cmp(pos, result)) { result.hitSide = true } + return result +} + +// For relative vertical movement. Dir may be -1 or 1. Unit can be +// "page" or "line". The resulting position will have a hitSide=true +// property if it reached the end of the document. +function findPosV(cm, pos, dir, unit) { + var doc = cm.doc, x = pos.left, y + if (unit == "page") { + var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight) + var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3) + y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount + + } else if (unit == "line") { + y = dir > 0 ? pos.bottom + 3 : pos.top - 3 + } + var target + for (;;) { + target = coordsChar(cm, x, y) + if (!target.outside) { break } + if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break } + y += dir * 5 + } + return target +} + +// CONTENTEDITABLE INPUT STYLE + +var ContentEditableInput = function(cm) { + this.cm = cm + this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null + this.polling = new Delayed() + this.composing = null + this.gracePeriod = false + this.readDOMTimeout = null +}; + +ContentEditableInput.prototype.init = function (display) { + var this$1 = this; + + var input = this, cm = input.cm + var div = input.div = display.lineDiv + disableBrowserMagic(div, cm.options.spellcheck) + + on(div, "paste", function (e) { + if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return } + // IE doesn't fire input events, so we schedule a read for the pasted content in this way + if (ie_version <= 11) { setTimeout(operation(cm, function () { + if (!input.pollContent()) { regChange(cm) } + }), 20) } + }) + + on(div, "compositionstart", function (e) { + this$1.composing = {data: e.data, done: false} + }) + on(div, "compositionupdate", function (e) { + if (!this$1.composing) { this$1.composing = {data: e.data, done: false} } + }) + on(div, "compositionend", function (e) { + if (this$1.composing) { + if (e.data != this$1.composing.data) { this$1.readFromDOMSoon() } + this$1.composing.done = true + } + }) + + on(div, "touchstart", function () { return input.forceCompositionEnd(); }) + + on(div, "input", function () { + if (!this$1.composing) { this$1.readFromDOMSoon() } + }) + + function onCopyCut(e) { + if (signalDOMEvent(cm, e)) { return } + if (cm.somethingSelected()) { + setLastCopied({lineWise: false, text: cm.getSelections()}) + if (e.type == "cut") { cm.replaceSelection("", null, "cut") } + } else if (!cm.options.lineWiseCopyCut) { + return + } else { + var ranges = copyableRanges(cm) + setLastCopied({lineWise: true, text: ranges.text}) + if (e.type == "cut") { + cm.operation(function () { + cm.setSelections(ranges.ranges, 0, sel_dontScroll) + cm.replaceSelection("", null, "cut") + }) + } + } + if (e.clipboardData) { + e.clipboardData.clearData() + var content = lastCopied.text.join("\n") + // iOS exposes the clipboard API, but seems to discard content inserted into it + e.clipboardData.setData("Text", content) + if (e.clipboardData.getData("Text") == content) { + e.preventDefault() + return + } + } + // Old-fashioned briefly-focus-a-textarea hack + var kludge = hiddenTextarea(), te = kludge.firstChild + cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild) + te.value = lastCopied.text.join("\n") + var hadFocus = document.activeElement + selectInput(te) + setTimeout(function () { + cm.display.lineSpace.removeChild(kludge) + hadFocus.focus() + if (hadFocus == div) { input.showPrimarySelection() } + }, 50) + } + on(div, "copy", onCopyCut) + on(div, "cut", onCopyCut) +}; + +ContentEditableInput.prototype.prepareSelection = function () { + var result = prepareSelection(this.cm, false) + result.focus = this.cm.state.focused + return result +}; + +ContentEditableInput.prototype.showSelection = function (info, takeFocus) { + if (!info || !this.cm.display.view.length) { return } + if (info.focus || takeFocus) { this.showPrimarySelection() } + this.showMultipleSelections(info) +}; + +ContentEditableInput.prototype.showPrimarySelection = function () { + var sel = window.getSelection(), prim = this.cm.doc.sel.primary() + var curAnchor = domToPos(this.cm, sel.anchorNode, sel.anchorOffset) + var curFocus = domToPos(this.cm, sel.focusNode, sel.focusOffset) + if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad && + cmp(minPos(curAnchor, curFocus), prim.from()) == 0 && + cmp(maxPos(curAnchor, curFocus), prim.to()) == 0) + { return } + + var start = posToDOM(this.cm, prim.from()) + var end = posToDOM(this.cm, prim.to()) + if (!start && !end) { return } + + var view = this.cm.display.view + var old = sel.rangeCount && sel.getRangeAt(0) + if (!start) { + start = {node: view[0].measure.map[2], offset: 0} + } else if (!end) { // FIXME dangerously hacky + var measure = view[view.length - 1].measure + var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map + end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]} + } + + var rng + try { rng = range(start.node, start.offset, end.offset, end.node) } + catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible + if (rng) { + if (!gecko && this.cm.state.focused) { + sel.collapse(start.node, start.offset) + if (!rng.collapsed) { + sel.removeAllRanges() + sel.addRange(rng) + } + } else { + sel.removeAllRanges() + sel.addRange(rng) + } + if (old && sel.anchorNode == null) { sel.addRange(old) } + else if (gecko) { this.startGracePeriod() } + } + this.rememberSelection() +}; + +ContentEditableInput.prototype.startGracePeriod = function () { + var this$1 = this; + + clearTimeout(this.gracePeriod) + this.gracePeriod = setTimeout(function () { + this$1.gracePeriod = false + if (this$1.selectionChanged()) + { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }) } + }, 20) +}; + +ContentEditableInput.prototype.showMultipleSelections = function (info) { + removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors) + removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection) +}; + +ContentEditableInput.prototype.rememberSelection = function () { + var sel = window.getSelection() + this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset + this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset +}; + +ContentEditableInput.prototype.selectionInEditor = function () { + var sel = window.getSelection() + if (!sel.rangeCount) { return false } + var node = sel.getRangeAt(0).commonAncestorContainer + return contains(this.div, node) +}; + +ContentEditableInput.prototype.focus = function () { + if (this.cm.options.readOnly != "nocursor") { + if (!this.selectionInEditor()) + { this.showSelection(this.prepareSelection(), true) } + this.div.focus() + } +}; +ContentEditableInput.prototype.blur = function () { this.div.blur() }; +ContentEditableInput.prototype.getField = function () { return this.div }; + +ContentEditableInput.prototype.supportsTouch = function () { return true }; + +ContentEditableInput.prototype.receivedFocus = function () { + var input = this + if (this.selectionInEditor()) + { this.pollSelection() } + else + { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }) } + + function poll() { + if (input.cm.state.focused) { + input.pollSelection() + input.polling.set(input.cm.options.pollInterval, poll) + } + } + this.polling.set(this.cm.options.pollInterval, poll) +}; + +ContentEditableInput.prototype.selectionChanged = function () { + var sel = window.getSelection() + return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset || + sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset +}; + +ContentEditableInput.prototype.pollSelection = function () { + if (!this.composing && this.readDOMTimeout == null && !this.gracePeriod && this.selectionChanged()) { + var sel = window.getSelection(), cm = this.cm + this.rememberSelection() + var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset) + var head = domToPos(cm, sel.focusNode, sel.focusOffset) + if (anchor && head) { runInOp(cm, function () { + setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll) + if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true } + }) } + } +}; + +ContentEditableInput.prototype.pollContent = function () { + if (this.readDOMTimeout != null) { + clearTimeout(this.readDOMTimeout) + this.readDOMTimeout = null + } + + var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary() + var from = sel.from(), to = sel.to() + if (from.ch == 0 && from.line > cm.firstLine()) + { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length) } + if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine()) + { to = Pos(to.line + 1, 0) } + if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false } + + var fromIndex, fromLine, fromNode + if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) { + fromLine = lineNo(display.view[0].line) + fromNode = display.view[0].node + } else { + fromLine = lineNo(display.view[fromIndex].line) + fromNode = display.view[fromIndex - 1].node.nextSibling + } + var toIndex = findViewIndex(cm, to.line) + var toLine, toNode + if (toIndex == display.view.length - 1) { + toLine = display.viewTo - 1 + toNode = display.lineDiv.lastChild + } else { + toLine = lineNo(display.view[toIndex + 1].line) - 1 + toNode = display.view[toIndex + 1].node.previousSibling + } + + if (!fromNode) { return false } + var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine)) + var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length)) + while (newText.length > 1 && oldText.length > 1) { + if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine-- } + else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++ } + else { break } + } + + var cutFront = 0, cutEnd = 0 + var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length) + while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront)) + { ++cutFront } + var newBot = lst(newText), oldBot = lst(oldText) + var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0), + oldBot.length - (oldText.length == 1 ? cutFront : 0)) + while (cutEnd < maxCutEnd && + newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) + { ++cutEnd } + + newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\u200b+/, "") + newText[0] = newText[0].slice(cutFront).replace(/\u200b+$/, "") + + var chFrom = Pos(fromLine, cutFront) + var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0) + if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) { + replaceRange(cm.doc, newText, chFrom, chTo, "+input") + return true + } +}; + +ContentEditableInput.prototype.ensurePolled = function () { + this.forceCompositionEnd() +}; +ContentEditableInput.prototype.reset = function () { + this.forceCompositionEnd() +}; +ContentEditableInput.prototype.forceCompositionEnd = function () { + if (!this.composing) { return } + clearTimeout(this.readDOMTimeout) + this.composing = null + if (!this.pollContent()) { regChange(this.cm) } + this.div.blur() + this.div.focus() +}; +ContentEditableInput.prototype.readFromDOMSoon = function () { + var this$1 = this; + + if (this.readDOMTimeout != null) { return } + this.readDOMTimeout = setTimeout(function () { + this$1.readDOMTimeout = null + if (this$1.composing) { + if (this$1.composing.done) { this$1.composing = null } + else { return } + } + if (this$1.cm.isReadOnly() || !this$1.pollContent()) + { runInOp(this$1.cm, function () { return regChange(this$1.cm); }) } + }, 80) +}; + +ContentEditableInput.prototype.setUneditable = function (node) { + node.contentEditable = "false" +}; + +ContentEditableInput.prototype.onKeyPress = function (e) { + e.preventDefault() + if (!this.cm.isReadOnly()) + { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0) } +}; + +ContentEditableInput.prototype.readOnlyChanged = function (val) { + this.div.contentEditable = String(val != "nocursor") +}; + +ContentEditableInput.prototype.onContextMenu = function () {}; +ContentEditableInput.prototype.resetPosition = function () {}; + +ContentEditableInput.prototype.needsContentAttribute = true + +function posToDOM(cm, pos) { + var view = findViewForLine(cm, pos.line) + if (!view || view.hidden) { return null } + var line = getLine(cm.doc, pos.line) + var info = mapFromLineView(view, line, pos.line) + + var order = getOrder(line), side = "left" + if (order) { + var partPos = getBidiPartAt(order, pos.ch) + side = partPos % 2 ? "right" : "left" + } + var result = nodeAndOffsetInLineMap(info.map, pos.ch, side) + result.offset = result.collapse == "right" ? result.end : result.start + return result +} + +function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos } + +function domTextBetween(cm, from, to, fromLine, toLine) { + var text = "", closing = false, lineSep = cm.doc.lineSeparator() + function recognizeMarker(id) { return function (marker) { return marker.id == id; } } + function walk(node) { + if (node.nodeType == 1) { + var cmText = node.getAttribute("cm-text") + if (cmText != null) { + if (cmText == "") { text += node.textContent.replace(/\u200b/g, "") } + else { text += cmText } + return + } + var markerID = node.getAttribute("cm-marker"), range + if (markerID) { + var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID)) + if (found.length && (range = found[0].find())) + { text += getBetween(cm.doc, range.from, range.to).join(lineSep) } + return + } + if (node.getAttribute("contenteditable") == "false") { return } + for (var i = 0; i < node.childNodes.length; i++) + { walk(node.childNodes[i]) } + if (/^(pre|div|p)$/i.test(node.nodeName)) + { closing = true } + } else if (node.nodeType == 3) { + var val = node.nodeValue + if (!val) { return } + if (closing) { + text += lineSep + closing = false + } + text += val + } + } + for (;;) { + walk(from) + if (from == to) { break } + from = from.nextSibling + } + return text +} + +function domToPos(cm, node, offset) { + var lineNode + if (node == cm.display.lineDiv) { + lineNode = cm.display.lineDiv.childNodes[offset] + if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) } + node = null; offset = 0 + } else { + for (lineNode = node;; lineNode = lineNode.parentNode) { + if (!lineNode || lineNode == cm.display.lineDiv) { return null } + if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break } + } + } + for (var i = 0; i < cm.display.view.length; i++) { + var lineView = cm.display.view[i] + if (lineView.node == lineNode) + { return locateNodeInLineView(lineView, node, offset) } + } +} + +function locateNodeInLineView(lineView, node, offset) { + var wrapper = lineView.text.firstChild, bad = false + if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) } + if (node == wrapper) { + bad = true + node = wrapper.childNodes[offset] + offset = 0 + if (!node) { + var line = lineView.rest ? lst(lineView.rest) : lineView.line + return badPos(Pos(lineNo(line), line.text.length), bad) + } + } + + var textNode = node.nodeType == 3 ? node : null, topNode = node + if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) { + textNode = node.firstChild + if (offset) { offset = textNode.nodeValue.length } + } + while (topNode.parentNode != wrapper) { topNode = topNode.parentNode } + var measure = lineView.measure, maps = measure.maps + + function find(textNode, topNode, offset) { + for (var i = -1; i < (maps ? maps.length : 0); i++) { + var map = i < 0 ? measure.map : maps[i] + for (var j = 0; j < map.length; j += 3) { + var curNode = map[j + 2] + if (curNode == textNode || curNode == topNode) { + var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]) + var ch = map[j] + offset + if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)] } + return Pos(line, ch) + } + } + } + } + var found = find(textNode, topNode, offset) + if (found) { return badPos(found, bad) } + + // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems + for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) { + found = find(after, after.firstChild, 0) + if (found) + { return badPos(Pos(found.line, found.ch - dist), bad) } + else + { dist += after.textContent.length } + } + for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) { + found = find(before, before.firstChild, -1) + if (found) + { return badPos(Pos(found.line, found.ch + dist$1), bad) } + else + { dist$1 += before.textContent.length } + } +} + +// TEXTAREA INPUT STYLE + +var TextareaInput = function(cm) { + this.cm = cm + // See input.poll and input.reset + this.prevInput = "" + + // Flag that indicates whether we expect input to appear real soon + // now (after some event like 'keypress' or 'input') and are + // polling intensively. + this.pollingFast = false + // Self-resetting timeout for the poller + this.polling = new Delayed() + // Tracks when input.reset has punted to just putting a short + // string into the textarea instead of the full selection. + this.inaccurateSelection = false + // Used to work around IE issue with selection being forgotten when focus moves away from textarea + this.hasSelection = false + this.composing = null +}; + +TextareaInput.prototype.init = function (display) { + var this$1 = this; + + var input = this, cm = this.cm + + // Wraps and hides input textarea + var div = this.wrapper = hiddenTextarea() + // The semihidden textarea that is focused when the editor is + // focused, and receives input. + var te = this.textarea = div.firstChild + display.wrapper.insertBefore(div, display.wrapper.firstChild) + + // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore) + if (ios) { te.style.width = "0px" } + + on(te, "input", function () { + if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null } + input.poll() + }) + + on(te, "paste", function (e) { + if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return } + + cm.state.pasteIncoming = true + input.fastPoll() + }) + + function prepareCopyCut(e) { + if (signalDOMEvent(cm, e)) { return } + if (cm.somethingSelected()) { + setLastCopied({lineWise: false, text: cm.getSelections()}) + if (input.inaccurateSelection) { + input.prevInput = "" + input.inaccurateSelection = false + te.value = lastCopied.text.join("\n") + selectInput(te) + } + } else if (!cm.options.lineWiseCopyCut) { + return + } else { + var ranges = copyableRanges(cm) + setLastCopied({lineWise: true, text: ranges.text}) + if (e.type == "cut") { + cm.setSelections(ranges.ranges, null, sel_dontScroll) + } else { + input.prevInput = "" + te.value = ranges.text.join("\n") + selectInput(te) + } + } + if (e.type == "cut") { cm.state.cutIncoming = true } + } + on(te, "cut", prepareCopyCut) + on(te, "copy", prepareCopyCut) + + on(display.scroller, "paste", function (e) { + if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return } + cm.state.pasteIncoming = true + input.focus() + }) + + // Prevent normal selection in the editor (we handle our own) + on(display.lineSpace, "selectstart", function (e) { + if (!eventInWidget(display, e)) { e_preventDefault(e) } + }) + + on(te, "compositionstart", function () { + var start = cm.getCursor("from") + if (input.composing) { input.composing.range.clear() } + input.composing = { + start: start, + range: cm.markText(start, cm.getCursor("to"), {className: "CodeMirror-composing"}) + } + }) + on(te, "compositionend", function () { + if (input.composing) { + input.poll() + input.composing.range.clear() + input.composing = null + } + }) +}; + +TextareaInput.prototype.prepareSelection = function () { + // Redraw the selection and/or cursor + var cm = this.cm, display = cm.display, doc = cm.doc + var result = prepareSelection(cm) + + // Move the hidden textarea near the cursor to prevent scrolling artifacts + if (cm.options.moveInputWithCursor) { + var headPos = cursorCoords(cm, doc.sel.primary().head, "div") + var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect() + result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10, + headPos.top + lineOff.top - wrapOff.top)) + result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10, + headPos.left + lineOff.left - wrapOff.left)) + } + + return result +}; + +TextareaInput.prototype.showSelection = function (drawn) { + var cm = this.cm, display = cm.display + removeChildrenAndAdd(display.cursorDiv, drawn.cursors) + removeChildrenAndAdd(display.selectionDiv, drawn.selection) + if (drawn.teTop != null) { + this.wrapper.style.top = drawn.teTop + "px" + this.wrapper.style.left = drawn.teLeft + "px" + } +}; + +// Reset the input to correspond to the selection (or to be empty, +// when not typing and nothing is selected) +TextareaInput.prototype.reset = function (typing) { + if (this.contextMenuPending) { return } + var minimal, selected, cm = this.cm, doc = cm.doc + if (cm.somethingSelected()) { + this.prevInput = "" + var range = doc.sel.primary() + minimal = hasCopyEvent && + (range.to().line - range.from().line > 100 || (selected = cm.getSelection()).length > 1000) + var content = minimal ? "-" : selected || cm.getSelection() + this.textarea.value = content + if (cm.state.focused) { selectInput(this.textarea) } + if (ie && ie_version >= 9) { this.hasSelection = content } + } else if (!typing) { + this.prevInput = this.textarea.value = "" + if (ie && ie_version >= 9) { this.hasSelection = null } + } + this.inaccurateSelection = minimal +}; + +TextareaInput.prototype.getField = function () { return this.textarea }; + +TextareaInput.prototype.supportsTouch = function () { return false }; + +TextareaInput.prototype.focus = function () { + if (this.cm.options.readOnly != "nocursor" && (!mobile || activeElt() != this.textarea)) { + try { this.textarea.focus() } + catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM + } +}; + +TextareaInput.prototype.blur = function () { this.textarea.blur() }; + +TextareaInput.prototype.resetPosition = function () { + this.wrapper.style.top = this.wrapper.style.left = 0 +}; + +TextareaInput.prototype.receivedFocus = function () { this.slowPoll() }; + +// Poll for input changes, using the normal rate of polling. This +// runs as long as the editor is focused. +TextareaInput.prototype.slowPoll = function () { + var this$1 = this; + + if (this.pollingFast) { return } + this.polling.set(this.cm.options.pollInterval, function () { + this$1.poll() + if (this$1.cm.state.focused) { this$1.slowPoll() } + }) +}; + +// When an event has just come in that is likely to add or change +// something in the input textarea, we poll faster, to ensure that +// the change appears on the screen quickly. +TextareaInput.prototype.fastPoll = function () { + var missed = false, input = this + input.pollingFast = true + function p() { + var changed = input.poll() + if (!changed && !missed) {missed = true; input.polling.set(60, p)} + else {input.pollingFast = false; input.slowPoll()} + } + input.polling.set(20, p) +}; + +// Read input from the textarea, and update the document to match. +// When something is selected, it is present in the textarea, and +// selected (unless it is huge, in which case a placeholder is +// used). When nothing is selected, the cursor sits after previously +// seen text (can be empty), which is stored in prevInput (we must +// not reset the textarea when typing, because that breaks IME). +TextareaInput.prototype.poll = function () { + var this$1 = this; + + var cm = this.cm, input = this.textarea, prevInput = this.prevInput + // Since this is called a *lot*, try to bail out as cheaply as + // possible when it is clear that nothing happened. hasSelection + // will be the case when there is a lot of text in the textarea, + // in which case reading its value would be expensive. + if (this.contextMenuPending || !cm.state.focused || + (hasSelection(input) && !prevInput && !this.composing) || + cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq) + { return false } + + var text = input.value + // If nothing changed, bail. + if (text == prevInput && !cm.somethingSelected()) { return false } + // Work around nonsensical selection resetting in IE9/10, and + // inexplicable appearance of private area unicode characters on + // some key combos in Mac (#2689). + if (ie && ie_version >= 9 && this.hasSelection === text || + mac && /[\uf700-\uf7ff]/.test(text)) { + cm.display.input.reset() + return false + } + + if (cm.doc.sel == cm.display.selForContextMenu) { + var first = text.charCodeAt(0) + if (first == 0x200b && !prevInput) { prevInput = "\u200b" } + if (first == 0x21da) { this.reset(); return this.cm.execCommand("undo") } + } + // Find the part of the input that is actually new + var same = 0, l = Math.min(prevInput.length, text.length) + while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same } + + runInOp(cm, function () { + applyTextInput(cm, text.slice(same), prevInput.length - same, + null, this$1.composing ? "*compose" : null) + + // Don't leave long text in the textarea, since it makes further polling slow + if (text.length > 1000 || text.indexOf("\n") > -1) { input.value = this$1.prevInput = "" } + else { this$1.prevInput = text } + + if (this$1.composing) { + this$1.composing.range.clear() + this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor("to"), + {className: "CodeMirror-composing"}) + } + }) + return true +}; + +TextareaInput.prototype.ensurePolled = function () { + if (this.pollingFast && this.poll()) { this.pollingFast = false } +}; + +TextareaInput.prototype.onKeyPress = function () { + if (ie && ie_version >= 9) { this.hasSelection = null } + this.fastPoll() +}; + +TextareaInput.prototype.onContextMenu = function (e) { + var input = this, cm = input.cm, display = cm.display, te = input.textarea + var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop + if (!pos || presto) { return } // Opera is difficult. + + // Reset the current text selection only if the click is done outside of the selection + // and 'resetSelectionOnContextMenu' option is true. + var reset = cm.options.resetSelectionOnContextMenu + if (reset && cm.doc.sel.contains(pos) == -1) + { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll) } + + var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText + input.wrapper.style.cssText = "position: absolute" + var wrapperBox = input.wrapper.getBoundingClientRect() + te.style.cssText = "position: absolute; width: 30px; height: 30px;\n top: " + (e.clientY - wrapperBox.top - 5) + "px; left: " + (e.clientX - wrapperBox.left - 5) + "px;\n z-index: 1000; background: " + (ie ? "rgba(255, 255, 255, .05)" : "transparent") + ";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);" + var oldScrollY + if (webkit) { oldScrollY = window.scrollY } // Work around Chrome issue (#2712) + display.input.focus() + if (webkit) { window.scrollTo(null, oldScrollY) } + display.input.reset() + // Adds "Select all" to context menu in FF + if (!cm.somethingSelected()) { te.value = input.prevInput = " " } + input.contextMenuPending = true + display.selForContextMenu = cm.doc.sel + clearTimeout(display.detectingSelectAll) + + // Select-all will be greyed out if there's nothing to select, so + // this adds a zero-width space so that we can later check whether + // it got selected. + function prepareSelectAllHack() { + if (te.selectionStart != null) { + var selected = cm.somethingSelected() + var extval = "\u200b" + (selected ? te.value : "") + te.value = "\u21da" // Used to catch context-menu undo + te.value = extval + input.prevInput = selected ? "" : "\u200b" + te.selectionStart = 1; te.selectionEnd = extval.length + // Re-set this, in case some other handler touched the + // selection in the meantime. + display.selForContextMenu = cm.doc.sel + } + } + function rehide() { + input.contextMenuPending = false + input.wrapper.style.cssText = oldWrapperCSS + te.style.cssText = oldCSS + if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos) } + + // Try to detect the user choosing select-all + if (te.selectionStart != null) { + if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack() } + var i = 0, poll = function () { + if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 && + te.selectionEnd > 0 && input.prevInput == "\u200b") + { operation(cm, selectAll)(cm) } + else if (i++ < 10) { display.detectingSelectAll = setTimeout(poll, 500) } + else { display.input.reset() } + } + display.detectingSelectAll = setTimeout(poll, 200) + } + } + + if (ie && ie_version >= 9) { prepareSelectAllHack() } + if (captureRightClick) { + e_stop(e) + var mouseup = function () { + off(window, "mouseup", mouseup) + setTimeout(rehide, 20) + } + on(window, "mouseup", mouseup) + } else { + setTimeout(rehide, 50) + } +}; + +TextareaInput.prototype.readOnlyChanged = function (val) { + if (!val) { this.reset() } +}; + +TextareaInput.prototype.setUneditable = function () {}; + +TextareaInput.prototype.needsContentAttribute = false + +function fromTextArea(textarea, options) { + options = options ? copyObj(options) : {} + options.value = textarea.value + if (!options.tabindex && textarea.tabIndex) + { options.tabindex = textarea.tabIndex } + if (!options.placeholder && textarea.placeholder) + { options.placeholder = textarea.placeholder } + // Set autofocus to true if this textarea is focused, or if it has + // autofocus and no other element is focused. + if (options.autofocus == null) { + var hasFocus = activeElt() + options.autofocus = hasFocus == textarea || + textarea.getAttribute("autofocus") != null && hasFocus == document.body + } + + function save() {textarea.value = cm.getValue()} + + var realSubmit + if (textarea.form) { + on(textarea.form, "submit", save) + // Deplorable hack to make the submit method do the right thing. + if (!options.leaveSubmitMethodAlone) { + var form = textarea.form + realSubmit = form.submit + try { + var wrappedSubmit = form.submit = function () { + save() + form.submit = realSubmit + form.submit() + form.submit = wrappedSubmit + } + } catch(e) {} + } + } + + options.finishInit = function (cm) { + cm.save = save + cm.getTextArea = function () { return textarea; } + cm.toTextArea = function () { + cm.toTextArea = isNaN // Prevent this from being ran twice + save() + textarea.parentNode.removeChild(cm.getWrapperElement()) + textarea.style.display = "" + if (textarea.form) { + off(textarea.form, "submit", save) + if (typeof textarea.form.submit == "function") + { textarea.form.submit = realSubmit } + } + } + } + + textarea.style.display = "none" + var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); }, + options) + return cm +} + +function addLegacyProps(CodeMirror) { + CodeMirror.off = off + CodeMirror.on = on + CodeMirror.wheelEventPixels = wheelEventPixels + CodeMirror.Doc = Doc + CodeMirror.splitLines = splitLinesAuto + CodeMirror.countColumn = countColumn + CodeMirror.findColumn = findColumn + CodeMirror.isWordChar = isWordCharBasic + CodeMirror.Pass = Pass + CodeMirror.signal = signal + CodeMirror.Line = Line + CodeMirror.changeEnd = changeEnd + CodeMirror.scrollbarModel = scrollbarModel + CodeMirror.Pos = Pos + CodeMirror.cmpPos = cmp + CodeMirror.modes = modes + CodeMirror.mimeModes = mimeModes + CodeMirror.resolveMode = resolveMode + CodeMirror.getMode = getMode + CodeMirror.modeExtensions = modeExtensions + CodeMirror.extendMode = extendMode + CodeMirror.copyState = copyState + CodeMirror.startState = startState + CodeMirror.innerMode = innerMode + CodeMirror.commands = commands + CodeMirror.keyMap = keyMap + CodeMirror.keyName = keyName + CodeMirror.isModifierKey = isModifierKey + CodeMirror.lookupKey = lookupKey + CodeMirror.normalizeKeyMap = normalizeKeyMap + CodeMirror.StringStream = StringStream + CodeMirror.SharedTextMarker = SharedTextMarker + CodeMirror.TextMarker = TextMarker + CodeMirror.LineWidget = LineWidget + CodeMirror.e_preventDefault = e_preventDefault + CodeMirror.e_stopPropagation = e_stopPropagation + CodeMirror.e_stop = e_stop + CodeMirror.addClass = addClass + CodeMirror.contains = contains + CodeMirror.rmClass = rmClass + CodeMirror.keyNames = keyNames +} + +// EDITOR CONSTRUCTOR + +defineOptions(CodeMirror) + +addEditorMethods(CodeMirror) + +// Set up methods on CodeMirror's prototype to redirect to the editor's document. +var dontDelegate = "iter insert remove copy getEditor constructor".split(" ") +for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) + { CodeMirror.prototype[prop] = (function(method) { + return function() {return method.apply(this.doc, arguments)} + })(Doc.prototype[prop]) } } + +eventMixin(Doc) + +// INPUT HANDLING + +CodeMirror.inputStyles = {"textarea": TextareaInput, "contenteditable": ContentEditableInput} + +// MODE DEFINITION AND QUERYING + +// Extra arguments are stored as the mode's dependencies, which is +// used by (legacy) mechanisms like loadmode.js to automatically +// load a mode. (Preferred mechanism is the require/define calls.) +CodeMirror.defineMode = function(name/*, mode, …*/) { + if (!CodeMirror.defaults.mode && name != "null") { CodeMirror.defaults.mode = name } + defineMode.apply(this, arguments) +} + +CodeMirror.defineMIME = defineMIME + +// Minimal default mode. +CodeMirror.defineMode("null", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); }) +CodeMirror.defineMIME("text/plain", "null") + +// EXTENSIONS + +CodeMirror.defineExtension = function (name, func) { + CodeMirror.prototype[name] = func +} +CodeMirror.defineDocExtension = function (name, func) { + Doc.prototype[name] = func +} + +CodeMirror.fromTextArea = fromTextArea + +addLegacyProps(CodeMirror) + +CodeMirror.version = "5.22.1" + +return CodeMirror; + +}))); \ No newline at end of file diff --git a/lib/cm/python.js b/lib/cm/python.js new file mode 100644 index 00000000..4310f9fb --- /dev/null +++ b/lib/cm/python.js @@ -0,0 +1,340 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + function wordRegexp(words) { + return new RegExp("^((" + words.join(")|(") + "))\\b"); + } + + var wordOperators = wordRegexp(["and", "or", "not", "is"]); + var commonKeywords = ["as", "assert", "break", "class", "continue", + "def", "del", "elif", "else", "except", "finally", + "for", "from", "global", "if", "import", + "lambda", "pass", "raise", "return", + "try", "while", "with", "yield", "in"]; + var commonBuiltins = ["abs", "all", "any", "bin", "bool", "bytearray", "callable", "chr", + "classmethod", "compile", "complex", "delattr", "dict", "dir", "divmod", + "enumerate", "eval", "filter", "float", "format", "frozenset", + "getattr", "globals", "hasattr", "hash", "help", "hex", "id", + "input", "int", "isinstance", "issubclass", "iter", "len", + "list", "locals", "map", "max", "memoryview", "min", "next", + "object", "oct", "open", "ord", "pow", "property", "range", + "repr", "reversed", "round", "set", "setattr", "slice", + "sorted", "staticmethod", "str", "sum", "super", "tuple", + "type", "vars", "zip", "__import__", "NotImplemented", + "Ellipsis", "__debug__"]; + CodeMirror.registerHelper("hintWords", "python", commonKeywords.concat(commonBuiltins)); + + function top(state) { + return state.scopes[state.scopes.length - 1]; + } + + CodeMirror.defineMode("python", function(conf, parserConf) { + var ERRORCLASS = "error"; + + var singleDelimiters = parserConf.singleDelimiters || /^[\(\)\[\]\{\}@,:`=;\.]/; + var doubleOperators = parserConf.doubleOperators || /^([!<>]==|<>|<<|>>|\/\/|\*\*)/; + var doubleDelimiters = parserConf.doubleDelimiters || /^(\+=|\-=|\*=|%=|\/=|&=|\|=|\^=)/; + var tripleDelimiters = parserConf.tripleDelimiters || /^(\/\/=|>>=|<<=|\*\*=)/; + + var hangingIndent = parserConf.hangingIndent || conf.indentUnit; + + var myKeywords = commonKeywords, myBuiltins = commonBuiltins; + if (parserConf.extra_keywords != undefined) + myKeywords = myKeywords.concat(parserConf.extra_keywords); + + if (parserConf.extra_builtins != undefined) + myBuiltins = myBuiltins.concat(parserConf.extra_builtins); + + var py3 = !(parserConf.version && Number(parserConf.version) < 3) + if (py3) { + // since http://legacy.python.org/dev/peps/pep-0465/ @ is also an operator + var singleOperators = parserConf.singleOperators || /^[\+\-\*\/%&|\^~<>!@]/; + var identifiers = parserConf.identifiers|| /^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*/; + myKeywords = myKeywords.concat(["nonlocal", "False", "True", "None", "async", "await"]); + myBuiltins = myBuiltins.concat(["ascii", "bytes", "exec", "print"]); + var stringPrefixes = new RegExp("^(([rbuf]|(br))?('{3}|\"{3}|['\"]))", "i"); + } else { + var singleOperators = parserConf.singleOperators || /^[\+\-\*\/%&|\^~<>!]/; + var identifiers = parserConf.identifiers|| /^[_A-Za-z][_A-Za-z0-9]*/; + myKeywords = myKeywords.concat(["exec", "print"]); + myBuiltins = myBuiltins.concat(["apply", "basestring", "buffer", "cmp", "coerce", "execfile", + "file", "intern", "long", "raw_input", "reduce", "reload", + "unichr", "unicode", "xrange", "False", "True", "None"]); + var stringPrefixes = new RegExp("^(([rubf]|(ur)|(br))?('{3}|\"{3}|['\"]))", "i"); + } + var keywords = wordRegexp(myKeywords); + var builtins = wordRegexp(myBuiltins); + + // tokenizers + function tokenBase(stream, state) { + if (stream.sol()) state.indent = stream.indentation() + // Handle scope changes + if (stream.sol() && top(state).type == "py") { + var scopeOffset = top(state).offset; + if (stream.eatSpace()) { + var lineOffset = stream.indentation(); + if (lineOffset > scopeOffset) + pushPyScope(state); + else if (lineOffset < scopeOffset && dedent(stream, state) && stream.peek() != "#") + state.errorToken = true; + return null; + } else { + var style = tokenBaseInner(stream, state); + if (scopeOffset > 0 && dedent(stream, state)) + style += " " + ERRORCLASS; + return style; + } + } + return tokenBaseInner(stream, state); + } + + function tokenBaseInner(stream, state) { + if (stream.eatSpace()) return null; + + var ch = stream.peek(); + + // Handle Comments + if (ch == "#") { + stream.skipToEnd(); + return "comment"; + } + + // Handle Number Literals + if (stream.match(/^[0-9\.]/, false)) { + var floatLiteral = false; + // Floats + if (stream.match(/^\d*\.\d+(e[\+\-]?\d+)?/i)) { floatLiteral = true; } + if (stream.match(/^\d+\.\d*/)) { floatLiteral = true; } + if (stream.match(/^\.\d+/)) { floatLiteral = true; } + if (floatLiteral) { + // Float literals may be "imaginary" + stream.eat(/J/i); + return "number"; + } + // Integers + var intLiteral = false; + // Hex + if (stream.match(/^0x[0-9a-f]+/i)) intLiteral = true; + // Binary + if (stream.match(/^0b[01]+/i)) intLiteral = true; + // Octal + if (stream.match(/^0o[0-7]+/i)) intLiteral = true; + // Decimal + if (stream.match(/^[1-9]\d*(e[\+\-]?\d+)?/)) { + // Decimal literals may be "imaginary" + stream.eat(/J/i); + // TODO - Can you have imaginary longs? + intLiteral = true; + } + // Zero by itself with no other piece of number. + if (stream.match(/^0(?![\dx])/i)) intLiteral = true; + if (intLiteral) { + // Integer literals may be "long" + stream.eat(/L/i); + return "number"; + } + } + + // Handle Strings + if (stream.match(stringPrefixes)) { + state.tokenize = tokenStringFactory(stream.current()); + return state.tokenize(stream, state); + } + + // Handle operators and Delimiters + if (stream.match(tripleDelimiters) || stream.match(doubleDelimiters)) + return "punctuation"; + + if (stream.match(doubleOperators) || stream.match(singleOperators)) + return "operator"; + + if (stream.match(singleDelimiters)) + return "punctuation"; + + if (state.lastToken == "." && stream.match(identifiers)) + return "property"; + + if (stream.match(keywords) || stream.match(wordOperators)) + return "keyword"; + + if (stream.match(builtins)) + return "builtin"; + + if (stream.match(/^(self|cls)\b/)) + return "variable-2"; + + if (stream.match(identifiers)) { + if (state.lastToken == "def" || state.lastToken == "class") + return "def"; + return "variable"; + } + + // Handle non-detected items + stream.next(); + return ERRORCLASS; + } + + function tokenStringFactory(delimiter) { + while ("rubf".indexOf(delimiter.charAt(0).toLowerCase()) >= 0) + delimiter = delimiter.substr(1); + + var singleline = delimiter.length == 1; + var OUTCLASS = "string"; + + function tokenString(stream, state) { + while (!stream.eol()) { + stream.eatWhile(/[^'"\\]/); + if (stream.eat("\\")) { + stream.next(); + if (singleline && stream.eol()) + return OUTCLASS; + } else if (stream.match(delimiter)) { + state.tokenize = tokenBase; + return OUTCLASS; + } else { + stream.eat(/['"]/); + } + } + if (singleline) { + if (parserConf.singleLineStringErrors) + return ERRORCLASS; + else + state.tokenize = tokenBase; + } + return OUTCLASS; + } + tokenString.isString = true; + return tokenString; + } + + function pushPyScope(state) { + while (top(state).type != "py") state.scopes.pop() + state.scopes.push({offset: top(state).offset + conf.indentUnit, + type: "py", + align: null}) + } + + function pushBracketScope(stream, state, type) { + var align = stream.match(/^([\s\[\{\(]|#.*)*$/, false) ? null : stream.column() + 1 + state.scopes.push({offset: state.indent + hangingIndent, + type: type, + align: align}) + } + + function dedent(stream, state) { + var indented = stream.indentation(); + while (state.scopes.length > 1 && top(state).offset > indented) { + if (top(state).type != "py") return true; + state.scopes.pop(); + } + return top(state).offset != indented; + } + + function tokenLexer(stream, state) { + if (stream.sol()) state.beginningOfLine = true; + + var style = state.tokenize(stream, state); + var current = stream.current(); + + // Handle decorators + if (state.beginningOfLine && current == "@") + return stream.match(identifiers, false) ? "meta" : py3 ? "operator" : ERRORCLASS; + + if (/\S/.test(current)) state.beginningOfLine = false; + + if ((style == "variable" || style == "builtin") + && state.lastToken == "meta") + style = "meta"; + + // Handle scope changes. + if (current == "pass" || current == "return") + state.dedent += 1; + + if (current == "lambda") state.lambda = true; + if (current == ":" && !state.lambda && top(state).type == "py") + pushPyScope(state); + + var delimiter_index = current.length == 1 ? "[({".indexOf(current) : -1; + if (delimiter_index != -1) + pushBracketScope(stream, state, "])}".slice(delimiter_index, delimiter_index+1)); + + delimiter_index = "])}".indexOf(current); + if (delimiter_index != -1) { + if (top(state).type == current) state.indent = state.scopes.pop().offset - hangingIndent + else return ERRORCLASS; + } + if (state.dedent > 0 && stream.eol() && top(state).type == "py") { + if (state.scopes.length > 1) state.scopes.pop(); + state.dedent -= 1; + } + + return style; + } + + var external = { + startState: function(basecolumn) { + return { + tokenize: tokenBase, + scopes: [{offset: basecolumn || 0, type: "py", align: null}], + indent: basecolumn || 0, + lastToken: null, + lambda: false, + dedent: 0 + }; + }, + + token: function(stream, state) { + var addErr = state.errorToken; + if (addErr) state.errorToken = false; + var style = tokenLexer(stream, state); + + if (style && style != "comment") + state.lastToken = (style == "keyword" || style == "punctuation") ? stream.current() : style; + if (style == "punctuation") style = null; + + if (stream.eol() && state.lambda) + state.lambda = false; + return addErr ? style + " " + ERRORCLASS : style; + }, + + indent: function(state, textAfter) { + if (state.tokenize != tokenBase) + return state.tokenize.isString ? CodeMirror.Pass : 0; + + var scope = top(state), closing = scope.type == textAfter.charAt(0) + if (scope.align != null) + return scope.align - (closing ? 1 : 0) + else + return scope.offset - (closing ? hangingIndent : 0) + }, + + electricInput: /^\s*[\}\]\)]$/, + closeBrackets: {triples: "'\""}, + lineComment: "#", + fold: "indent" + }; + return external; + }); + + CodeMirror.defineMIME("text/x-python", "python"); + + var words = function(str) { return str.split(" "); }; + + CodeMirror.defineMIME("text/x-cython", { + name: "python", + extra_keywords: words("by cdef cimport cpdef ctypedef enum except"+ + "extern gil include nogil property public"+ + "readonly struct union DEF IF ELIF ELSE") + }); + +}); diff --git a/lib/jq/jquery.ui.touch-punch.min.js b/lib/jq/jquery.ui.touch-punch.min.js new file mode 100644 index 00000000..31272ce6 --- /dev/null +++ b/lib/jq/jquery.ui.touch-punch.min.js @@ -0,0 +1,11 @@ +/*! + * jQuery UI Touch Punch 0.2.3 + * + * Copyright 2011–2014, Dave Furfero + * Dual licensed under the MIT or GPL Version 2 licenses. + * + * Depends: + * jquery.ui.widget.js + * jquery.ui.mouse.js + */ +!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery); \ No newline at end of file diff --git a/lib/lib.js b/lib/lib.js new file mode 100644 index 00000000..8064790b --- /dev/null +++ b/lib/lib.js @@ -0,0 +1,355 @@ +// nasty hacky animated title +var t; +function animateTitle(txt, id) { + var chars = "0123456789ABCDEF"; + var finalChars = txt.split(''); + + var jq = $('#' + id); + + var letterCount = -10; + function onAnimTimeout() { + var randomChars = ""; + if(letterCount >=0 ) { + randomChars = txt.substring(0, letterCount); + } + + randomChars += ''; + for(var i = (letterCount < 0)?0:letterCount; i < txt.length; i++) { + var c = Math.floor(Math.random() * chars.length); + randomChars += chars[c]; + } + randomChars += ''; + + + jq.html(randomChars); + letterCount++; + clearTimeout(t); + if(letterCount <= txt.length) { + t = setTimeout(onAnimTimeout, 50); + } + } + + t = setTimeout(onAnimTimeout, 50); + +} +// Main PythonIDE object +var PythonIDE = { + + // file currently being edited + currentFile: 'mycode.py', + + // stores each of the files in the project + + files: {'mycode.py': decodeURIComponent(window.location.search.substring(6))}, + + // functions and data needed for running theh python code + python: { + outputListeners: [], + + output: function(text, header) { + var id = header == undefined?'consoleOut': 'headerOut'; + var c = document.getElementById(id); + c.innerHTML += text; + + var i = 0; + while(i < PythonIDE.python.outputListeners.length) { + var l = PythonIDE.python.outputListeners[i]; + try { + l(text); + i++; + } catch(e) { + PythonIDE.python.outputListeners.splice(i, 1); + } + } + var c = c.parentNode.parentNode; + c.scrollTop = c.scrollHeight; + + }, + + clear: function() { + var c = document.getElementById('consoleOut'); + c.innerHTML = ''; + var c = c.parentNode.parentNode; + c.scrollTop = c.scrollHeight; + }, + + builtinread: function(x) { + if (Sk.builtinFiles === undefined || Sk.builtinFiles["files"][x] === undefined) + throw "File not found: '" + x + "'"; + return Sk.builtinFiles["files"][x]; + } + }, + + // convenience function that allows modules to run syncronous code asyncrounously. + // For example time.sleep needs to pause the python program but shouldn't make the browser unresponsive + runAsync: function(asyncFunc) { + var p = new Promise(asyncFunc); + var result; + var susp = new Sk.misceval.Suspension(); + susp.resume = function() { + return result; + } + susp.data = { + type: "Sk.promise", + promise: p.then(function(value) { + result = value; + return value; + }, function(err) { + result = ""; + PythonIDE.handleError(err); + return new Promise(function(resolve, reject){ + }); + }) + }; + return susp; + }, + + // run the code in the editor + // runMode can be "anim" to step through each line of python code or "normal" to run the whole code as fast as possible + runCode: function(runMode) { + console.log(window); + if(PythonIDE.unhandledError) + delete PythonIDE.unhandledError; + + if(PythonIDE.animTimeout && runMode != "anim") { + clearTimeout(PythonIDE.animTimeout); + delete PythonIDE.animTimeout; + return; + } + + if(PythonIDE.continueDebug) { + if(runMode != "normal") { + PythonIDE.continueDebug(); + return; + } + } + + if(runMode === undefined) + runMode = "normal"; + + PythonIDE.runMode = runMode; + PythonIDE.python.outputListeners = []; + + var code = decodeURIComponent(window.location.search.substring(6)); + + var html = ''; + html += '
'; + html += '

Variables:

'; + html += ''; + if(code.indexOf("turtle") > 0) { + html += '
'; + } + + $('#output').html(html); + $('#dlg').dialog("open"); + + if(!PythonIDE.whenFinished) { + $('#btn_hideConsole').button().click(function() { + $('#dlg').dialog("close"); + }); + } else { + $('#btn_hideConsole').hide(); + } + + var handlers = []; + if(runMode != "normal") { + handlers["Sk.debug"] = function(susp) { + // globals + //console.log(susp.child); + var html = '

Global variables:

'; + PythonIDE.watchVariables.expandHandlers = []; + for(var key in susp.child.$gbl) { + var pyVal = susp.child.$gbl[key]; + var val = JSON.stringify(Sk.ffi.remapToJs(pyVal)); + + if(val === undefined) { + val = ""; + } + + if(val && val.length && val.length > 20) { + var eH = {"id":PythonIDE.watchVariables.expandHandlers.length, "fullText": val, "shortText": val.substring(0,17)}; + + PythonIDE.watchVariables.expandHandlers.push(eH); + val = '' + val.substring(0, 17) + ''; + } + + var type = pyVal.skType?pyVal.skType : pyVal.__proto__.tp$name; + if(type == "function") { + continue; + } + if(type == "str") { + type = "string"; + } + if(type === undefined) { + //console.log(pyVal, val, type); + continue; + } + html += ''; + } + html += '
NameData typeValue
' + key + '' + type + '' + val + '
'; + + + + $('#watch').html(html); + + $('span.debug_expand_zone').click(function(e) { + var id = e.currentTarget.id; + var idNum = id.replace("debug_expand_", ""); + $('#' + id).html(PythonIDE.watchVariables.expandHandlers[idNum].fullText); + }); + + var p = new Promise(function(resolve,reject){ + PythonIDE.continueDebug = function() { + return resolve(susp.resume()); + } + + PythonIDE.abortDebug = function() { + delete PythonIDE.abortDebug; + delete PythonIDE.continueDebug; + return reject("Program aborted"); + } + + }); + return p; + } + setTimeout(function() {PythonIDE.runCode(runMode); }, 100); + $('#watch').show(); + } else { + + // if code contains a while loop + if((code.indexOf("while ") > -1) && (code.indexOf("sleep") == -1)) { + console.log("Crash prevention mode enabled: This happens when your code includes an infinite loop without a sleep() function call. Your code will run much more slowly in this mode."); + + var startTime = new Date().getTime(); + var lineCount = 0; + handlers["Sk.debug"] = function(susp) { + lineCount++; + if(new Date().getTime() - startTime > 100) { + if(lineCount < 100) { + return; + } + startTime = new Date().getTime(); + var p = new Promise(function(resolve, reject) { + setTimeout(function() { + lineCount = 0; + return resolve(susp.resume()); + }, 50); + + }); + return p; + } + + + }; + } + } + + if (code) { + Sk.misceval.callsimAsync(handlers, function() { + return Sk.importMainWithBody("mycode",false,code,true); + }).then(function(module){ + if(PythonIDE.continueDebug) + delete PythonIDE.continueDebug; + if(PythonIDE.abortDebug) + delete PythonIDE.abortDebug; + $('#btn_stopRunning').removeClass('visibleButton').addClass('hiddenButton'); + if(PythonIDE.whenFinished) { + PythonIDE.whenFinished(); + } + }, PythonIDE.handleError); + } + }, + + // display errors caught when the python code runs + handleError:function (err){ + + console.log(err); + + if(!PythonIDE.unhandledError && PythonIDE.continueDebug) { + PythonIDE.unhandledError = err; + return; + } + + var html = '' + err.toString() + ''; + PythonIDE.python.output(html); + }, + + // initialise the python ide + init: function(style) { + PythonIDE.editor = CodeMirror(document.getElementById('editor'), { + value: PythonIDE.files['mycode.py'], + mode: 'python', + lineNumbers: true, + styleActiveLine: true, + inputStyle: "textarea" + }); + + window.onerror=function(err) { + var msg = err.toString().replace("Uncaught ", ""); + var html = '' + msg + ''; + PythonIDE.python.output(html); + console.log(err); + + return true; + } + + $('#dlg').dialog({ + autoOpen:false, + width: window.innerWidth, + height: window.innerHeight + }); + + // add in additional libraries. + // not all of these are complete but they serve as an example of how you can code your own modules. + Sk.externalLibraries = { + // added as a farewell message to a school direct student + schooldirect: { + path: 'lib/skulpt/schooldirect/__init__.js' + }, + + os: { + path: 'lib/skulpt/os/__init__.js' + }, + speech: { + path: 'lib/skulpt/speech/__init__.js', + dependencies: ['lib/skulpt/speech/sam.js'] + }, + radio: { + path: 'lib/skulpt/radio/__init__.js' + }, + + + // easy data visualisation functions unique to withcode.uk + withcode: { + path: 'lib/skulpt/withcode/__init__.js' + }, + + // not quite complete implementation of sqlite3 + sqlite3: { + path: 'lib/skulpt/sqlite3/__init__.js' + }, + + // microbit simulator + microbit: { + path: 'lib/skulpt/microbit/__init__.js' + }, + + // music module compatible with microbit music module + music: { + path: 'lib/skulpt/music/__init__.js' + }, + + // anyone fancy implementing this?! Imagine the possibilities! + py3d: { + path: 'lib/skulpt/py3d/__init__.js', + dependencies: ['/lib/skulpt/py3d/three.js'], + }, + RPi: { + path: 'lib/skulpt/rpi/__init__.js' + }, + "RPi.GPIO": { + path: 'lib/skulpt/rpi/__init__.js' + } + }; + } +} \ No newline at end of file diff --git a/lib/skulpt/microbit/__init__.js b/lib/skulpt/microbit/__init__.js new file mode 100644 index 00000000..2bc7cf4c --- /dev/null +++ b/lib/skulpt/microbit/__init__.js @@ -0,0 +1,1696 @@ +var uart = function(name) { + var mod = {}; + var init = function(baudrate, bits, parity, stop, tx, rx) { + if(baudrate === undefined) + baudrate = Sk.builtin.nmber(9600); + if(bits === undefined) + bits = Sk.builtin.nmber(8); + if(parity === undefined) + parity = Sk.builtin.none; + if(stop === undefined) + stop = Sk.builtin.nmber(1); + if(tx === undefined) + tx = Sk.builtin.none; + if(rx === undefined) + rx = Sk.builtin.none; + } + + init.co_varnames = ['baudrate', 'bits', 'parity', 'stop', 'tx', 'rx']; + init.$defaults = [Sk.builtin.nmber(9600), Sk.builtin.nmber(8), Sk.builtin.none, Sk.builtin.nmber(1), Sk.builtin.none, Sk.builtin.none]; + init.co_numargs = 6; + mod.init = new Sk.builtin.func(init); + + mod.any = new Sk.builtin.func(function() { + return Sk.builtin.bool(false); + }); + + + + return mod; +} + +var i2c = function(name) { + var mod = {}; + + var read = function(addr, n, repeat){ + if(repeat === undefined) { + repeat = new Sk.builtin.bool(false); + } + }; + + read.co_varnames = ['addr', 'n', 'repeat']; + read.$defaults = [Sk.builtin.none, Sk.builtin.none, Sk.builtin.bool(false)]; + read.co_numargs = 3; + mod.read = new Sk.builtin.func(read); + + var write = function(addr, buf, repeat){ + if(repeat === undefined) { + repeat = new Sk.builtin.bool(false); + } + }; + write.co_varnames = ['addr','buf', 'repeat']; + write.$defaults = [Sk.builtin.none, Sk.builtin.none, Sk.builtin.bool(false)]; + write.co_numargs = 3; + mod.write = new Sk.builtin.func(write); + + + return mod; +}; + +var compass = function(name) { + var mod = {}; + mod.data = {calibrated: false, + x: 0, + y: 0, + z: 0, + heading: 0, + strength: 0 + }; + + + mod.calibrate = new Sk.builtin.func(function() { + //PythonIDE.python.output("Calibration complete\n"); + mod.data.calibrated = true; + }); + + mod.is_calibrated = new Sk.builtin.func(function() { + return new Sk.builtin.bool(mod.data.calibrated); + }); + + mod.clear_calibration = new Sk.builtin.func(function() { + mod.data.calibrated = false; + }); + + mod.get_x = new Sk.builtin.func(function() { + return new Sk.builtin.nmber(mod.data.x); + }); + + mod.get_y = new Sk.builtin.func(function() { + return new Sk.builtin.nmber(mod.data.y); + }); + + mod.get_z = new Sk.builtin.func(function() { + return new Sk.builtin.nmber(mod.data.z); + }); + + mod.heading = new Sk.builtin.func(function() { + return new Sk.builtin.nmber(mod.data.heading); + }); + + mod.get_field_strength = new Sk.builtin.func(function() { + return new Sk.builtin.nmber(mod.data.strength); + }); + + return mod; +}; + +var accelerometer = function(name) { + + var mod = {} + + mod.data = {}; + mod.data.x = 0; + mod.data.y = 0; + mod.data.z = 0; + mod.data.gestureHistory = []; + mod.data.currentGesture = ""; + mod.data.updateGestureList = function updateGestureList() { + var html = mod.data.gestureHistory.join(" ") + ' ' + mod.data.currentGesture + ''; + $('#mb_gesture_list').html(html); + } + + mod.get_x = new Sk.builtin.func(function() { + return new Sk.builtin.nmber(mod.data.x); + }); + + mod.get_y = new Sk.builtin.func(function() { + return new Sk.builtin.number(mod.data.y); + }); + + mod.get_z = new Sk.builtin.func(function() { + return new Sk.builtin.number(mod.data.z); + }); + + mod.get_values = new Sk.builtin.func(function() { + return new Sk.builtin.tuple([mod.data.x, mod.data.y, mod.data.z]); + }); + + mod.current_gesture = new Sk.builtin.func(function() { + return new Sk.builtin.str(mod.data.currentGesture); + }); + + mod.is_gesture = new Sk.builtin.func(function(gesture) { + return new Sk.builtin.bool(gesture.v == mod.data.currentGesture); + }); + + mod.was_gesture = new Sk.builtin.func(function(gesture) { + for(var i = 0; i < mod.data.gestureHistory.length; i++) { + if(mod.data.gestureHistory == gesture.v) { + mod.data.gestureHistory.splice(i, 1); + mod.data.updateGestureList(); + return Sk.builtin.bool(true); + } + } + return new Sk.builtin.bool(false); + }); + + mod.get_gestures = new Sk.builtin.func(function() { + var gestures = mod.data.gestureHistory.slice(); + mod.data.gestureHistory = []; + mod.data.updateGestureList(); + return new Sk.builtin.tuple(Sk.ffi.remapToPy(gestures)); + }); + + return mod; +} + +var display = function(name) { + var leds = [[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]]; + var letters = { + A: [" 99 ", + "9 9 ", + "9999 ", + "9 9 ", + "9 9 "], + + B: ["999 ", + "9 9 ", + "999 ", + "9 9 ", + "999 "], + + C: [" 9999", + "9 ", + "9 ", + "9 ", + " 9999"], + + D: ["9999 ", + "9 9", + "9 9", + "9 9", + "9999 "], + + E: ["99999", + "9 ", + "99999", + "9 ", + "99999"], + + F: ["99999", + "9 ", + "9999 ", + "9 ", + "9 "], + + G: [" 9999", + "9 ", + "9 99", + "9 9", + " 9999"], + + H: ["9 9", + "9 9", + "99999", + "9 9", + "9 9"], + + I: [" 999 ", + " 9 ", + " 9 ", + " 9 ", + " 999 "], + + J: ["99999", + " 9 ", + " 9 ", + " 9 ", + "99 "], + + K: ["9 9 ", + "9 9 ", + "99 ", + "9 9 ", + "9 9 "], + + L: ["9 ", + "9 ", + "9 ", + "9 ", + "99999"], + + M: [" 9 9 ", + "9 9 9", + "9 9", + "9 9", + "9 9"], + + N: ["9 9", + "99 9", + "9 9 9", + "9 99", + "9 9"], + + O: [" 999 ", + "9 9", + "9 9", + "9 9", + " 999 "], + + P: ["9999 ", + "9 9", + "9999 ", + "9 ", + "9 "], + + Q: [" 999 ", + "9 9", + "9 9 9", + "9 9 ", + " 99 9"], + + R: ["9999 ", + "9 9", + "9999 ", + "9 9 ", + "9 9 "], + + S: ["99999", + "9 ", + "99999", + " 9", + "99999"], + + T: ["99999", + " 9 ", + " 9 ", + " 9 ", + " 9 "], + + U: ["9 9", + "9 9", + "9 9", + "9 9", + " 999 "], + + V: ["9 9", + "9 9", + " 9 9 ", + " 9 9 ", + " 9 "], + + W: ["9 9", + "9 9", + "9 9", + "9 9 9", + " 9 9 "], + + X: ["9 9", + " 9 9 ", + " 9 ", + " 9 9 ", + "9 9"], + + Y: ["9 9", + " 9 9 ", + " 9 ", + " 9 ", + "9 "], + + Z: ["99999", + " 9 ", + " 9 ", + " 9 ", + "99999"], + + + + a: [" 999 ", + " 9", + " 9999", + "9 9", + " 9999"], + + b: [" 9 ", + " 9 ", + " 999 ", + " 9 9", + " 999 "], + + c: [" ", + " ", + " 9999", + "9 ", + " 9999"], + + d: [" 9", + " 9", + " 9999", + "9 9", + " 999 "], + + e: [" 99 ", + "9 9 ", + "9999 ", + "9 ", + " 999 "], + + f: [" 99 ", + " 9 ", + " 999 ", + " 9 ", + " 9 "], + + g: [" 999 ", + "9 9", + " 999 ", + " 9 ", + " 99 "], + + h: ["9 ", + "9 ", + "9999 ", + "9 9", + "9 9"], + + i: [" 9 ", + " ", + " 9 ", + " 9 ", + " 9 "], + + j: [" 9 ", + " ", + " 9 ", + " 9 ", + " 9 "], + + k: ["9 ", + "9 ", + "9 9 ", + "99 ", + "9 9 "], + + l: [" 9 ", + " 9 ", + " 9 ", + " 9 ", + " 9 "], + + m: [" ", + "99 9 ", + "9 9 9", + "9 9", + "9 9"], + + n: [" ", + " 99 ", + "9 9 ", + "9 9 ", + "9 9 "], + + o: [" ", + " 999 ", + "9 9", + "9 9", + " 999 "], + + p: [" ", + "999 ", + "9 9 ", + "999 ", + "9 "], + + q: [" ", + " 9999", + "9 9", + " 9999", + " 9"], + + r: [" ", + " 999 ", + "9 ", + "9 ", + "9 "], + + s: [" 999 ", + "9 ", + " 999 ", + " 9", + "9999 "], + + t: [" 9 ", + "999 ", + " 9 ", + " 9 ", + " 99 "], + + u: [" ", + "9 9", + "9 9", + "9 9", + " 999 "], + + v: [" ", + " ", + "9 9", + " 9 9 ", + " 9 "], + + w: [" ", + " ", + "9 9 9", + " 9 9 ", + " 9 9 "], + + x: [" ", + "9 9 ", + " 99 ", + " 99 ", + "9 9 "], + + y: [" ", + "9 9 ", + " 99 ", + " 9 ", + "99 "], + + z: [" ", + "9999 ", + " 9 ", + " 9 ", + "9999 "], + + "0": [" 999 ", + "99 9", + "9 9 9", + "9 99", + " 999 "], + + "1": [" 9 ", + "99 ", + " 9 ", + " 9 ", + "999 "], + + "2": [" 999 ", + "9 9", + " 9 ", + " 9 ", + " 9999"], + + "3": [" 999 ", + "9 9", + " 9 ", + "9 9", + " 999 "], + + "4": [" 9 ", + " 99 ", + " 9 9 ", + "99999", + " 9 "], + + "5": ["99999", + "9 ", + "9999 ", + " 9", + "9999 "], + + "6": [" 999 ", + "9 ", + "9999 ", + "9 9", + " 999 "], + + "7": ["99999", + " 9 ", + " 9 ", + " 9 ", + "9 "], + + "8": [" 999 ", + "9 9", + " 999 ", + "9 9", + " 999 "], + + "9": [" 999 ", + "9 9 ", + " 999 ", + " 9 ", + " 9 "], + + '!': [" 9 ", + " 9 ", + " 9 ", + " ", + " 9 "], + '"': [" 9 9 ", + " 9 9 ", + " ", + " ", + " "], + + '£': [" 99", + " 9 ", + " 9999", + " 9 ", + "9 999"], + + '$': [" 9999", + "9 9 ", + " 999 ", + " 9 9", + "9999 "], + + '%': ["99 9", + "99 9 ", + " 9 ", + " 9 99", + "9 99"], + + '^': [" 9 ", + " 9 9 ", + " ", + " ", + " "], + + '&': [" 999 ", + " 9 9 ", + " 99 ", + "9 9 ", + " 99 9"], + + '*': ["9 9 9", + " 999 ", + "9 9 9", + " 999 ", + "9 9 9"], + '(': [" 9 ", + " 9 ", + " 9 ", + " 9 ", + " 9 "], + + ')': [" 9 ", + " 9 ", + " 9 ", + " 9 ", + " 9 "], + + '[': [" 999 ", + " 9 ", + " 9 ", + " 9 ", + " 999 "], + + ']': [" 999 ", + " 9 ", + " 9 ", + " 9 ", + " 999 "], + + '{': [" 99 ", + " 9 ", + " 9 ", + " 9 ", + " 99 "], + + '}': [" 99 ", + " 9 ", + " 9 ", + " 9 ", + " 99 "], + + '@': [" 999 ", + "9 9", + "9 999", + "9 9 9", + "99999"], + + "'": [" 9 ", + " ", + " ", + " ", + " "], + + '~': [" ", + " 99 9", + " 9 ", + " ", + " "], + + ':': [" ", + " 9 ", + " ", + " 9 ", + " "], + + '#': [" 9 9 ", + "99999", + " 9 9 ", + "99999", + " 9 9 "], + + '/': [" 9", + " 9 ", + " 9 ", + " 9 ", + "9 "], + + '\\': ["9 ", + " 9 ", + " 9 ", + " 9 ", + " 9"], + + '?': ["9999 ", + " 9 ", + " 99 ", + " ", + " 9 "], + + '.': [" ", + " ", + " ", + " ", + " 9 "], + + ',': [" ", + " ", + " ", + " 9 ", + " 9 "], + + '<': [" 9 ", + " 9 ", + " 9 ", + " 9 ", + " 9 "], + + '>': [" 9 ", + " 9 ", + " 9 ", + " 9 ", + " 9 "], + + ' ': [" ", + " ", + " ", + " ", + " "], + + '-': [" ", + " ", + "99999", + " ", + " "], + + '+': [" 9 ", + " 9 ", + "99999", + " 9 ", + " 9 "], + + '_': [" ", + " ", + " ", + " ", + "99999"], + + + '=': [" ", + "99999", + " ", + "99999", + " "], + + + + }; + + function setLED(x, y, brightness) { + $('.mb_led.mb_led_row_' + y + '.mb_led_col_' + x).removeClass('mb_led_brightness_1 mb_led_brightness_2 mb_led_brightness_3 mb_led_brightness_4 mb_led_brightness_5 mb_led_brightness_6 mb_led_brightness_7 mb_led_brightness_8 mb_led_brightness_9').addClass('mb_led_brightness_' + brightness); + + leds[y][x] = brightness; + } + + var mod = {}; + + mod.get_pixel = new Sk.builtin.func(function(x, y) { + return Sk.builtin.nmber(leds[y.v][x.v]); + }); + + mod.set_pixel = new Sk.builtin.func(function(x, y, brightness) { + setLED(parseInt(x.v), parseInt(y.v), parseInt(brightness.v)); + }); + + mod.clear = new Sk.builtin.func(function() { + clearScreen(); + }); + + function clearScreen() { + var x,y; + for(x = 0; x < 5; x++) { + for(y = 0; y < 5; y++) { + setLED(x, y, 0); + } + } + } + + var show = function(image, delay, wait, loop, clear) { + if(wait === undefined) + wait = Sk.builtin.bool(true); + + if(loop === undefined) + loop = Sk.builtin.bool(false); + + if(clear === undefined) + clear = Sk.builtin.bool(false); + + if(delay === undefined) + delay = Sk.builtin.nmber(400); + + if(image.tp$name == "number") { + throw new Sk.builtin.TypeError("Convert the number to a string before showing it"); + image = new Sk.builtin.str(image.v); + } + + + return PythonIDE.runAsync(function(resolve, reject) { + if(image && (image.tp$name == "list" || (image.tp$name == "str" && image.v.length > 1))) { + var i = 0; + + function showNextFrame() { + if(i >= image.v.length) { + if(loop.v) { + i = 0; + } else { + if(clear.v) { + clearScreen(); + } + if(wait.v) { + resolve(); + } + return; + } + + } + + if(image.v[i].tp$name == "Image") { + for(y = 0; y < 5; y++) { + for(x = 0; x < 5; x++) { + setLED(x, y, image.v[i].lines[y][x]); + } + } + } + if(image.tp$name == "str") { + showCharacter(image.v[i]); + } + + if(image.v[i].tp$name == "str") { + showCharacter(image.v[i].v[0]); + } + + i++; + setTimeout(showNextFrame, delay.v) + } + + showNextFrame(); + + + if(!wait.v) { + resolve(); + } + + + } else { + + if(image.tp$name == "Image") { + for(y = 0; y < 5; y++) { + for(x = 0; x < 5; x++) { + setLED(x, y, image.lines[y][x]); + } + } + } + if(image.tp$name == "str") { + showCharacter(image.v[0]); + } + resolve(); + } + }); + + } + show.co_varnames = ['image', 'delay', 'wait', 'loop', 'clear']; + show.$defaults = [Sk.builtin.none, Sk.builtin.none, true, true, false]; + show.co_numargs = 5; + mod.show = new Sk.builtin.func(show); + + function showCharacter(c) { + var x, y; + var rows = ['', '', '', '', '']; + + var letter = letters[" "]; + if(letters.hasOwnProperty(c)) { + letter = letters[c]; + } + for(y = 0; y < 5; y++) { + for(x = 0; x < 5; x++) { + setLED(x, y, letter[y][x]); + } + } + + } + + function scroll(message, delay) { + if(delay == undefined) + delay = Sk.builtin.nmber(400); + + if(message.tp$name == "number") { + message = new Sk.builtin.str(message.v); + } + + delay.v /= 5; + message.v = ' ' + message.v + ' '; + return PythonIDE.runAsync(function(resolve, reject) { + var i, x, y; + var rows = ['', '', '', '', '']; + for(i = 0; i < message.v.length; i++) { + var currentLetter = message.v[i]; + + var letter = letters[" "]; + if(letters.hasOwnProperty(currentLetter)) { + letter = letters[currentLetter]; + } + + + for(y = 0; y < 5; y++) { + rows[y] += letter[y] + " "; + } + + + } + + var width = rows[0].length; + var offset = 0; + + + function showScroll() { + for(y = 0; y < 5; y++) { + for(x = offset; x < offset + 5; x++) { + setLED(x - offset, y, rows[y][x]); + } + } + + if(offset < width - 5) { + offset++; + setTimeout(showScroll, delay.v); + } else { + resolve(); + } + } + + + //for(offset = 0; offset < width - 5; offset++) { + showScroll(); + //} + + }); + } + scroll.co_varnames = ['text', 'delay']; + scroll.$defaults = [Sk.builtin.none, Sk.builtin.nmber(400)]; + scroll.co_numargs = 2; + mod.scroll = new Sk.builtin.func(scroll); + + + return mod; +} + + + +var $builtinmodule = function (name) { + // microbit module + + + var mod = { + data: {temperature: 23} + }; + + mod.panic = new Sk.builtin.func(function(n) { + PythonIDE.python.output("Panic mode: " + n.v); + }); + + mod.reset = new Sk.builtin.func(function() { + start_time = Date.now(); + // not implemented yet + }); + + mod.temerature = new Sk.builtin.func(function() { + return new Sk.builtin.nmber(23); + }); + + mod.running_time = new Sk.builtin.func(function() { + return Sk.builtin.nmber(Date.now() - start_time); + }); + + var start_time = Date.now(); + + mod.sleep = new Sk.builtin.func(function(delay) { + return PythonIDE.runAsync(function(resolve, reject) { + setTimeout(function() { + resolve(); + }, delay.v); + }); + }); + + mod.temperature = new Sk.builtin.func(function() { + return Sk.builtin.nmber(mod.data.temperature); + }); + + var ioPinDigital = new Sk.misceval.buildClass(mod, function($gbl, $loc) { + $loc.__init__ = new Sk.builtin.func(function(self) { + self.value = 0; + }); + + $loc.read_digital = new Sk.builtin.func(function(self){ + return Sk.builtin.nmber(self.value); + }); + + $loc.write_digital = new Sk.builtin.func(function(self, value){ + self.value = value.v == 1? 1: 0; + PythonIDE.python.updateMicrobitPins(); + }); + }, "MicroBitDigitalPin", []); + + mod.pin5 = new ioPinDigital(); + mod.pin6 = new ioPinDigital(); + mod.pin7 = new ioPinDigital(); + mod.pin8 = new ioPinDigital(); + mod.pin9 = new ioPinDigital(); + mod.pin11 = new ioPinDigital(); + mod.pin12 = new ioPinDigital(); + mod.pin13 = new ioPinDigital(); + mod.pin14 = new ioPinDigital(); + mod.pin15 = new ioPinDigital(); + mod.pin16 = new ioPinDigital(); + mod.pin19 = new ioPinDigital(); + mod.pin20 = new ioPinDigital(); + + var ioPinAnalog = new Sk.misceval.buildClass(mod, function($gbl, $loc) { + $loc.__init__ = new Sk.builtin.func(function(self) { + self.value = 0; + self.period_us = 35; + }); + + $loc.read_analog = new Sk.builtin.func(function(self) { + return Sk.builtin.nmber(self.value); + }); + + $loc.write_analog = new Sk.builtin.func(function(self, value) { + self.value = value.v; + PythonIDE.python.updateMicrobitPins(); + }); + + $loc.set_analog_period = new Sk.builtin.func(function(self, period) { + self.period_us = period.v * 1000; + PythonIDE.python.updateMicrobitPins(); + }); + + $loc.set_analog_period_microseconds = new Sk.builtin.func(function(self, period) { + self.period_us = period.v; + PythonIDE.python.updateMicrobitPins(); + }); + + }, "MicroBitAnalogPin", []); + mod.pin3 = new ioPinAnalog(); + mod.pin4 = new ioPinAnalog(); + mod.pin10 = new ioPinAnalog(); + + var ioPinTouch = new Sk.misceval.buildClass(mod, function($gbl, $loc) { + $loc.__init__ = new Sk.builtin.func(function(self) { + self.touched = false; + }); + + $loc.is_touched = new Sk.builtin.func(function(self) { + return Sk.builtin.bool(self.touched); + }); + }, "MicroBitTouchPin", []); + + mod.pin0 = new ioPinTouch(); + mod.pin1 = new ioPinTouch(); + mod.pin2 = new ioPinTouch(); + + mod.Button = new Sk.misceval.buildClass(mod, function($gbl, $loc) { + $loc.__init__ = new Sk.builtin.func(function(self) { + self.presses = 0; + self.pressed = false; + self.last_checked = 0; + }); + + $loc.is_pressed = new Sk.builtin.func(function(self) { + return Sk.builtin.bool(self.pressed); + }); + + $loc.was_pressed = new Sk.builtin.func(function(self) { + var r = self.presses > self.last_checked; + self.last_checked = self.presses; + return Sk.builtin.bool(r); + }); + + $loc.get_presses = new Sk.builtin.func(function(self) { + var presses = self.presses; + self.presses = 0; + return Sk.builtin.nmber(presses); + }); + }, "Button", []); + + mod.button_a = new mod.Button(); + mod.button_b = new mod.Button(); + + mod.Image = new Sk.misceval.buildClass(mod, function($gbl, $loc) { + $loc.__init__ = new Sk.builtin.func(function(self, str, y) { + if(str === undefined | y !== undefined) str = Sk.builtin.str("00000:00000:00000:00000:00000"); + self.lines = str.v.split(/[:\n]/); + }); + + $loc.width = new Sk.builtin.func(function(self) { + return self.lines[0].length; + }); + + $loc.height = new Sk.builtin.func(function(self) { + return self.lines.length; + }); + + $loc.set_pixel = new Sk.builtin.func(function(self, x, y, value) { + var row = self.lines[y.v].split(""); + row[x.v] = value.v; + self.lines[y.v] = row.join(""); + }); + + $loc.get_pixel = new Sk.builtin.func(function(self, x, y){ + return Sk.builtin.nmber(self.lines[y.v][x.v]); + }); + + $loc.__repr__ = new Sk.builtin.func(function(self) { + return Sk.builtin.str('Image("' + self.lines.join(":") + '")'); + }); + + $loc.__str__ = new Sk.builtin.func(function(self) { + return Sk.builtin.str('Image("' + self.lines.join(":") + '")'); + }); + + $loc.shift_left = new Sk.builtin.func(function(self, n) { + if(n == undefined) { + throw new Sk.builtin.TypeError("parameter n not defined"); + } + var copy = self.lines.slice(0); + for(var j = 0; j < n.v; j++) { + var width = copy[0].length; + for(var i = 0; i < copy.length; i++) { + copy[i] = copy[i].slice(1, width) + "0"; + } + } + + var newImage = Sk.misceval.callsim(mod.Image, Sk.builtin.str(copy.join(":"))); + return newImage; + }); + + $loc.shift_right = new Sk.builtin.func(function(self, n) { + if(n == undefined) { + throw new Sk.builtin.TypeError("parameter n not defined"); + } + var copy = self.lines.slice(0); + for(var j = 0; j < n.v; j++) { + var width = copy[0].length; + for(var i = 0; i < copy.length; i++) { + copy[i] = "0" + copy[i].slice(0, width - 1); + } + } + var newImage = Sk.misceval.callsim(mod.Image, Sk.builtin.str(copy.join(":"))); + return newImage; + }); + + $loc.shift_up = new Sk.builtin.func(function(self, n) { + if(n == undefined) { + throw new Sk.builtin.TypeError("parameter n not defined"); + } + var height = self.lines.length; + var copy = self.lines.slice(n.v, height); + var s = ""; + for(var j = 0; j < n.v; j++){ + for(var i = 0; i < self.lines[0].length; i++) { + s += "0"; + } + copy.push(s); + } + var newImage = Sk.misceval.callsim(mod.Image, Sk.builtin.str(copy.join(":"))); + return newImage; + }); + + $loc.shift_down = new Sk.builtin.func(function(self, n) { + if(n == undefined) { + throw new Sk.builtin.TypeError("parameter n not defined"); + } + var height = self.lines.length; + var copy = []; + + var s = ""; + for(var j = 0; j < n.v; j++) { + for(var i = 0; i < self.lines[0].length; i++) { + s += "0"; + } + copy.push(s); + + } + copy.push.apply(copy, self.lines.slice(0, height - 1)); + var newImage = Sk.misceval.callsim(mod.Image, Sk.builtin.str(copy.join(":"))); + return newImage; + }); + + $loc.__add__ = new Sk.builtin.func(function(self, other) { + var x,y,val; + var copy = self.lines.slice(0); + for(y = 0; y < copy.length; y++) { + copy[y] = copy[y].split(""); + for(x = 0; x < copy[y].length; x++) { + val = parseInt(copy[y][x]) + parseInt(other.lines[y][x]); + + if(val > 9) val = 9; + copy[y][x] = val; + } + copy[y] = copy[y].join(""); + } + var newImage = Sk.misceval.callsim(mod.Image, Sk.builtin.str(copy.join(":"))); + return newImage; + }); + + $loc.__mul__ = new Sk.builtin.func(function(self, n) { + var copy = self.lines.slice(0); + for(y = 0; y < copy.length; y++) { + copy[y] = copy[y].split(""); + for(x = 0; x < copy[y].length; x++) { + val = Math.round(parseInt(copy[y][x]) * n.v); + if(val < 0) val = 0; + if(val > 9) val = 9; + copy[y][x] = val; + } + copy[y] = copy[y].join(""); + } + var newImage = Sk.misceval.callsim(mod.Image, Sk.builtin.str(copy.join(":"))); + return newImage; + }); + + $loc.invert = new Sk.builtin.func(function(self) { + var copy = self.lines.slice(0); + for(y = 0; y < copy.length; y++) { + copy[y] = copy[y].split(""); + for(x = 0; x < copy[y].length; x++) { + val = parseInt(copy[y][x]); + copy[y][x] = 9 - val; + } + copy[y] = copy[y].join(""); + } + var newImage = Sk.misceval.callsim(mod.Image, Sk.builtin.str(copy.join(":"))); + return newImage; + }); + + + }, 'Image', []); + + + mod.Image.HEART = Sk.misceval.callsim(mod.Image, Sk.builtin.str("09090:99999:99999:09990:00900:")); + mod.Image.HEART_SMALL = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00000:09090:09990:00900:00000:")); + mod.Image.HAPPY = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00000:09090:00000:90009:09990:")); + mod.Image.SMILE = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00000:00000:00000:90009:09990:")); + mod.Image.SAD = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00000:09090:00000:09990:90009:")); + mod.Image.CONFUSED = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00000:09090:00000:09090:90909:")); + mod.Image.ANGRY = Sk.misceval.callsim(mod.Image, Sk.builtin.str("90009:09090:00000:99999:90909:")); + mod.Image.ASLEEP = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00000:99099:00000:09990:00000:")); + mod.Image.SURPRISED = Sk.misceval.callsim(mod.Image, Sk.builtin.str("09090:00000:00900:09090:00900:")); + mod.Image.SILLY = Sk.misceval.callsim(mod.Image, Sk.builtin.str("90009:00000:99999:00909:00999:")); + mod.Image.FABULOUS = Sk.misceval.callsim(mod.Image, Sk.builtin.str("99999:99099:00000:09090:09990:")); + mod.Image.MEH = Sk.misceval.callsim(mod.Image, Sk.builtin.str("09090:00000:00090:00900:09000:")); + mod.Image.YES = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00000:00009:00090:90900:09000:")); + mod.Image.NO = Sk.misceval.callsim(mod.Image, Sk.builtin.str("90009:09090:00900:09090:90009:")); + mod.Image.CLOCK12 = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00900:00900:00900:00000:00000:")); + mod.Image.CLOCK1 = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00090:00090:00900:00000:00000:")); + mod.Image.CLOCK2 = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00000:00099:00900:00000:00000:")); + mod.Image.CLOCK3 = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00000:00000:00999:00000:00000:")); + mod.Image.CLOCK4 = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00000:00000:00900:00099:00000:")); + mod.Image.CLOCK5 = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00000:00000:00900:00090:00090:")); + mod.Image.CLOCK6 = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00000:00000:00900:00900:00900:")); + mod.Image.CLOCK7 = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00000:00000:00900:09000:09000:")); + mod.Image.CLOCK8 = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00000:00000:00900:99000:00000:")); + mod.Image.CLOCK9 = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00000:00000:99900:00000:00000:")); + mod.Image.CLOCK10 = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00000:99000:00900:00000:00000:")); + mod.Image.CLOCK11 = Sk.misceval.callsim(mod.Image, Sk.builtin.str("09000:09000:00900:00000:00000:")); + mod.Image.ARROW_N = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00900:09990:90909:00900:00900:")); + mod.Image.ARROW_NE = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00999:00099:00909:09000:90000:")); + mod.Image.ARROW_E = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00900:00090:99999:00090:00900:")); + mod.Image.ARROW_SE = Sk.misceval.callsim(mod.Image, Sk.builtin.str("90000:09000:00909:00099:00999:")); + mod.Image.ARROW_S = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00900:00900:90909:09990:00900:")); + mod.Image.ARROW_SW = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00009:00090:90900:99000:99900:")); + mod.Image.ARROW_W = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00900:09000:99999:09000:00900:")); + mod.Image.ARROW_NW = Sk.misceval.callsim(mod.Image, Sk.builtin.str("99900:99000:90900:00090:00009:")); + mod.Image.TRIANGLE = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00000:00900:09090:99999:00000:")); + mod.Image.TRIANGLE_LEFT = Sk.misceval.callsim(mod.Image, Sk.builtin.str("90000:99000:90900:90090:99999:")); + mod.Image.CHESSBOARD = Sk.misceval.callsim(mod.Image, Sk.builtin.str("09090:90909:09090:90909:09090:")); + mod.Image.DIAMOND = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00900:09090:90009:09090:00900:")); + mod.Image.DIAMOND_SMALL = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00000:00900:09090:00900:00000:")); + mod.Image.SQUARE = Sk.misceval.callsim(mod.Image, Sk.builtin.str("99999:90009:90009:90009:99999:")); + mod.Image.SQUARE_SMALL = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00000:09990:09090:09990:00000:")); + mod.Image.RABBIT = Sk.misceval.callsim(mod.Image, Sk.builtin.str("90900:90900:99990:99090:99990:")); + mod.Image.COW = Sk.misceval.callsim(mod.Image, Sk.builtin.str("90009:90009:99999:09990:00900:")); + mod.Image.MUSIC_CROTCHET = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00900:00900:00900:99900:99900:")); + mod.Image.MUSIC_QUAVER = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00900:00990:00909:99900:99900:")); + mod.Image.MUSIC_QUAVERS = Sk.misceval.callsim(mod.Image, Sk.builtin.str("09999:09009:09009:99099:99099:")); + mod.Image.PITCHFORK = Sk.misceval.callsim(mod.Image, Sk.builtin.str("90909:90909:99999:00900:00900:")); + mod.Image.XMAS = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00900:09990:00900:09990:99999:")); + mod.Image.PACMAN = Sk.misceval.callsim(mod.Image, Sk.builtin.str("09999:99090:99900:99990:09999:")); + mod.Image.TARGET = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00900:09990:99099:09990:00900:")); + mod.Image.TSHIRT = Sk.misceval.callsim(mod.Image, Sk.builtin.str("99099:99999:09990:09990:09990:")); + mod.Image.ROLLERSKATE = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00099:00099:99999:99999:09090:")); + mod.Image.DUCK = Sk.misceval.callsim(mod.Image, Sk.builtin.str("09900:99900:09999:09990:00000:")); + mod.Image.HOUSE = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00900:09990:99999:09990:09090:")); + mod.Image.TORTOISE = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00000:09990:99999:09090:00000:")); + mod.Image.BUTTERFLY = Sk.misceval.callsim(mod.Image, Sk.builtin.str("99099:99999:00900:99999:99099:")); + mod.Image.STICKFIGURE = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00900:99999:00900:09090:90009:")); + mod.Image.GHOST = Sk.misceval.callsim(mod.Image, Sk.builtin.str("99999:90909:99999:99999:90909:")); + mod.Image.SWORD = Sk.misceval.callsim(mod.Image, Sk.builtin.str("00900:00900:00900:09990:00900:")); + mod.Image.GIRAFFE = Sk.misceval.callsim(mod.Image, Sk.builtin.str("99000:09000:09000:09990:09090:")); + mod.Image.SKULL = Sk.misceval.callsim(mod.Image, Sk.builtin.str("09990:90909:99999:09990:09990:")); + mod.Image.UMBRELLA = Sk.misceval.callsim(mod.Image, Sk.builtin.str("09990:99999:00900:90900:09900:")); + mod.Image.SNAKE = Sk.misceval.callsim(mod.Image, Sk.builtin.str("99000:99099:09090:09990:00000:")); + + mod.Image.ALL_CLOCKS = Sk.builtin.list([mod.Image.CLOCK1, mod.Image.CLOCK2, mod.Image.CLOCK3, mod.Image.CLOCK4, mod.Image.CLOCK5, mod.Image.CLOCK6, mod.Image.CLOCK7, mod.Image.CLOCK8, mod.Image.CLOCK9, mod.Image.CLOCK10, mod.Image.CLOCK11, mod.Image.CLOCK12]); + mod.Image.ALL_ARROWS = Sk.builtin.list([mod.Image.ARROW_N, mod.Image.ARROW_NE, mod.Image.ARROW_E, mod.Image.ARROW_SE, mod.Image.ARROW_S, mod.Image.ARROW_SW, mod.Image.ARROW_W, mod.Image.ARROW_NW]); + + + + + mod.test = new Sk.builtin.func(function(i){ + console.log(i); + }); + + mod.display = new Sk.builtin.module(); + mod.display.$d = new display("microbit.display"); + + mod.accelerometer = new Sk.builtin.module(); + mod.accelerometer.$d = new accelerometer("microbit.accelerometer"); + + mod.compass = new Sk.builtin.module(); + mod.compass.$d = new compass("microbit.compass"); + + mod.i2c = new Sk.builtin.module(); + mod.i2c.$d = new i2c("microbit.i2c"); + + mod.uart = new Sk.builtin.module(); + mod.uart.$d = new uart("microbit.uart"); + + var mb = { + + getHex: function() { + var script = PythonIDE.editor.getValue(); + function hexlify(ar) { + var result = ''; + for (var i = 0; i < ar.length; ++i) { + if (ar[i] < 16) { + result += '0'; + } + result += ar[i].toString(16); + } + return result; + } + // add header, pad to multiple of 16 bytes + data = new Uint8Array(4 + script.length + (16 - (4 + script.length) % 16)); + data[0] = 77; // 'M' + data[1] = 80; // 'P' + data[2] = script.length & 0xff; + data[3] = (script.length >> 8) & 0xff; + for (var i = 0; i < script.length; ++i) { + data[4 + i] = script.charCodeAt(i); + } + // TODO check data.length < 0x2000 + // convert to .hex format + var addr = 0x3e000; // magic start address in flash + var chunk = new Uint8Array(5 + 16); + var output = []; + for (var i = 0; i < data.length; i += 16, addr += 16) { + chunk[0] = 16; // length of data section + chunk[1] = (addr >> 8) & 0xff; // high byte of 16-bit addr + chunk[2] = addr & 0xff; // low byte of 16-bit addr + chunk[3] = 0; // type (data) + for (var j = 0; j < 16; ++j) { + chunk[4 + j] = data[i + j]; + } + var checksum = 0; + for (var j = 0; j < 4 + 16; ++j) { + checksum += chunk[j]; + } + chunk[4 + 16] = (-checksum) & 0xff; + output.push(':' + hexlify(chunk).toUpperCase()) + } + var mycode = output.join("\n"); + try { + var output = PythonIDE.microbit_firmware.replace('mycodegoeshere', mycode); + var ua = navigator.userAgent.toLowerCase(); + if((ua.indexOf('safari/') > -1) && (ua.indexOf('chrome') == -1)) { + alert("Safari has a bug that means your work will be downloaded as an un-named file. Please rename it to something ending in .hex. Alternatively, use a browser such as Firefox or Chrome. They do not suffer from this bug."); + window.open('data:application/octet;charset=utf-8,' + encodeURIComponent(output), '_newtab'); + } else { + var filename = "my_code"; + var blob = new Blob([output], {type: "application/octet-stream"}); + saveAs(blob, filename + ".hex"); + } + } + catch(err){ + PythonIDE.showHint("Please wait for the firmware to download then try again"); + } + + + + return output.length; + }, + + init: function() { + if(PythonIDE.microbit_firmware == undefined) { + $.get('lib/skulpt/microbit/firmware.hex', undefined, function(firmware) { + PythonIDE.microbit_firmware = firmware; + }); + } + var html = ''; + html += '
'; + html += '
'; + html += '
'; + var x,y; + for(x = 0; x < 5; x++) { + for(y = 0; y < 5; y++) { + html += '
'; + } + } + html += '
'; + PythonIDE.python.output(html, true); + $('#mb_btn_radio_send').button().click(function() { + if(typeof(radio) !== "undefined") { + if(radio.fn_receive) { + radio.fn_receive("\x00\x01\x00" + $('#mb_radio_message').val()); + } else { + $('#mb_radio_status').html('Not tuned to the same settings as the microbit radio. Check settings and press Update'); + } + } else { + $('#mb_radio_status').html('Radio module not found: did you include "import radio"?'); + } + }); + + mod.radio = { + channel: 7, + group: 0, + address: parseInt('0x75626974', 16), + data_rate: 1000 + }; + + $('#mb_btn_radio_update').button().click(function() { + function getValueInRange(id, min, max, def, message){ + var value = Number($('#' + id).val()); + if(value != NaN && value >= min && value <= max) { + return value; + } + $('#mb_radio_status').html(message); + return def; + } + function getHexValue(id, def, message){ + var value = parseInt($('#' + id).val(), 16); + if(value != NaN) { + return value; + } + $('#mb_radio_status').html(message); + return def; + } + + + mod.radio.channel = getValueInRange('mb_radio_channel', 0, 100, 'Please enter a channel number between 0 and 100'); + mod.radio.group = getValueInRange('mb_radio_group', 0, 255, 'Please enter a group number between 0 and 255'); + mod.radio.address = getHexValue('mb_radio_address', 'Please enter a valid 32bit hex number'); + mod.radio.data_rate = $('#mb_radio_rate').val(); + if(typeof(radio) !== "undefined") { + var tuned = true; + + if(mod.radio.channel != radio.channel) { + $('#mb_radio_status').html("Channel doesn't match: currently set to " + radio.channel); + tuned = false; + } + if(mod.radio.group != radio.group) { + $('#mb_radio_status').html("Group doesn't match: currently set to " + radio.group); + tuned = false; + } + if(mod.radio.address != radio.address) { + $('#mb_radio_status').html("Address doesn't match: currently set to " + radio.address.toString(16)); + tuned = false; + } + if(mod.radio.data_rate != radio.data_rate){ + $('#mb_radio_status').html("Data rate doesn't match: currently set to " + radio.data_rate); + tuned = false; + } + if(tuned) { + $('#mb_radio_status').html("Tuned in to radio module"); + radio.fn_send = function(message) { // send from microbit to UI + $('#mb_radio_status').html("Received message: " + message); + } + radio.fn_receive = function(message) { // send from UI to microbit + if(radio.buffer.length < radio.queue) { + radio.buffer.push(message); + } else { + $('#mb_radio_status').html("Queue is full in microbit radio"); + } + + } + } + + } else { + $('#mb_radio_status').html('Radio module not detected - did you include "import radio"?'); + } + }); + + + $('#mb_btn_both').on("mousedown mouseup click", function(e) { + switch(e.type) { + case 'mousedown': + mod.button_a.pressed = true; + mod.button_b.pressed = true; + break; + case 'mouseup': + mod.button_a.pressed = false; + mod.button_b.pressed = false; + break; + case 'click': + mod.button_a.presses++; + mod.button_b.presses++; + break; + } + }); + PythonIDE.python.updateMicrobitPins = function() { + try { + var pinNumber = parseInt($('#mb_pin_num').val()); + updatePinSpinner(pinNumber); + } catch(e) { + } + } + function updatePinSpinner(pinNumber) { + var pinType = undefined; + var pin = undefined; + var html = ''; + function sliderChange(event, ui) { + $('#mb_pin_analog_value').text(ui.value); + pin.value = ui.value; + }; + switch(pinNumber) { + case 0: + case 1: + case 2: + pinType = "Touch"; + pin = mod['pin' + pinNumber]; + html = ''; + $('#mb_pin_detail').html(html); + $('#mb_btn_pin_touch').button().mousedown(function() { + pin.touched = true; + }).mouseup(function() { + pin.touched = false; + }); + break; + case 3: + case 4: + case 10: + pinType = "Analog"; + pin = mod['pin' + pinNumber]; + html = 'Value: ' + pin.value + '
PWM period: ' + pin.period_us / 1000 + 'ms'; + $('#mb_pin_detail').html(html); + $('#mb_pin_analog').slider({ + value: pin.value, + min: 0, + max: 1023, + step: 1, + change: sliderChange + }).on("slide", sliderChange); + break; + case 5: + case 6: + case 7: + case 8: + case 9: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 19: + case 20: + pinType = "Digital"; + pin = mod['pin' + pinNumber]; + + html = 'Currently switched: '; + + $('#mb_pin_detail').html(html); + $('#mb_btn_pin_digital').button().click(function() { + pin.value = !pin.value; + $('#mb_btn_pin_digital').button('option', 'label', pin.value? 'On' : 'Off'); + }); + break; + default: + pinType = "+3v"; + $('#mb_pin_detail').html(html); + break; + + } + + + $('#mb_pin_type').text('Type: ' + pinType); + } + $('#mb_pin_num').spinner({ + spin: function(event, ui) { + updatePinSpinner(ui.value); + if(ui.value < 0) { + $('#mb_pin_num').spinner("value", 20 ); + return false; + } + if(ui.value > 20) { + $('#mb_pin_num').spinner("value", 0 ); + return false; + } + } + }); + $('#mb_pin_num').spinner("value", 0); + updatePinSpinner(0); + + var updateGestureList = mod.accelerometer.$d.data.updateGestureList; + $('.mb_gesture').click(function(e) { + var gesture = e.currentTarget.innerHTML; + mod.accelerometer.$d.data.gestureHistory.push(gesture); + updateGestureList(); + }).mousedown(function(e) { + var gesture = e.currentTarget.innerHTML; + mod.accelerometer.$d.data.currentGesture = gesture; + updateGestureList(); + $('#microbit').addClass("mb_active_gesture_" + gesture); + }).mouseup(function(e) { + var gesture = e.currentTarget.innerHTML; + mod.accelerometer.$d.data.currentGesture = ''; + updateGestureList(); + $('#microbit').removeClass("mb_active_gesture_" + gesture); + }); + + function sliderChange(event, ui) { + switch(event.target.id) { + case 'mb_therm_slider': + $('#mb_therm_value').text(ui.value); + mod.data.temperature = ui.value; + break; + case 'mb_acc_slider_x': + $('#mb_acc_value_x').text(ui.value); + mod.accelerometer.$d.data.x = ui.value; + break; + case 'mb_acc_slider_y': + $('#mb_acc_value_y').text(ui.value); + mod.accelerometer.$d.data.y = ui.value; + break; + case 'mb_acc_slider_z': + $('#mb_acc_value_z').text(ui.value); + mod.accelerometer.$d.data.z = ui.value; + break; + case 'mb_com_slider_x': + $('#mb_com_value_x').text(ui.value); + mod.compass.$d.data.x = ui.value; + mod.compass.$d.data.strength = Math.sqrt(Math.pow(mod.compass.$d.data.x, 2) + Math.pow(mod.compass.$d.data.y, 2) + Math.pow(mod.compass.$d.data.z, 2)); + break; + case 'mb_com_slider_y': + $('#mb_com_value_y').text(ui.value); + mod.compass.$d.data.strength = Math.sqrt(Math.pow(mod.compass.$d.data.x, 2) + Math.pow(mod.compass.$d.data.y, 2) + Math.pow(mod.compass.$d.data.z, 2)); + break; + case 'mb_com_slider_z': + $('#mb_com_value_z').text(ui.value); + mod.compass.$d.data.z = ui.value; + mod.compass.$d.data.strength = Math.sqrt(Math.pow(mod.compass.$d.data.x, 2) + Math.pow(mod.compass.$d.data.y, 2) + Math.pow(mod.compass.$d.data.z, 2)); + break; + } + } + + function compassHeadingChange(event, ui) { + $('#mb_com_value_heading').text(ui.value); + $('#mb_compass_pointer').css({transform: 'rotate(' + ui.value + 'deg)'}); + mod.compass.$d.data.heading = ui.value; + } + + $('.mb_slider').slider({ + value: 0, + min: -1024, + max: 1024, + step: 1, + change: sliderChange + }).on("slide", sliderChange); + $('#mb_therm_slider').slider({ + value: 23, + min: 0, + max: 100 + }); + $('.mb_slider_com').slider({ + value: 0, + min: 0, + max: 360, + step: 1, + change: compassHeadingChange + }).on("slide", compassHeadingChange); + $('#mb_tabs').tabs(); + $('#mb_btn_download_hex').click(function() { + mb.getHex(); + }); + $('.mb_btn').on("mousedown mouseup click", function(e) { + var btn = mod.button_a; + if(e.currentTarget.id == "mb_btn_B") { + btn = mod.button_b; + } + switch(e.type) { + case 'mousedown': + btn.pressed = true; + break; + case 'mouseup': + btn.pressed = false; + break; + case 'click': + btn.presses++; + break; + } + }); + } + }; + + + mb.init(); + + + return mod; + +}; + +/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */ +var saveAs=saveAs||function(e){"use strict";if("undefined"==typeof navigator||!/MSIE [1-9]\./.test(navigator.userAgent)){var t=e.document,n=function(){return e.URL||e.webkitURL||e},o=t.createElementNS("http://www.w3.org/1999/xhtml","a"),r="download"in o,i=function(e){var t=new MouseEvent("click");e.dispatchEvent(t)},a=e.webkitRequestFileSystem,c=e.requestFileSystem||a||e.mozRequestFileSystem,u=function(t){(e.setImmediate||e.setTimeout)(function(){throw t},0)},f="application/octet-stream",s=0,d=500,l=function(t){var o=function(){"string"==typeof t?n().revokeObjectURL(t):t.remove()};e.chrome?o():setTimeout(o,d)},v=function(e,t,n){t=[].concat(t);for(var o=t.length;o--;){var r=e["on"+t[o]];if("function"==typeof r)try{r.call(e,n||e)}catch(i){u(i)}}},p=function(e){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["",e],{type:e.type}):e},w=function(t,u,d){d||(t=p(t));var w,y,m,S=this,h=t.type,O=!1,R=function(){v(S,"writestart progress write writeend".split(" "))},b=function(){if((O||!w)&&(w=n().createObjectURL(t)),y)y.location.href=w;else{var o=e.open(w,"_blank");void 0==o&&"undefined"!=typeof safari&&(e.location.href=w)}S.readyState=S.DONE,R(),l(w)},g=function(e){return function(){return S.readyState!==S.DONE?e.apply(this,arguments):void 0}},E={create:!0,exclusive:!1};return S.readyState=S.INIT,u||(u="download"),r?(w=n().createObjectURL(t),o.href=w,o.download=u,void setTimeout(function(){i(o),R(),l(w),S.readyState=S.DONE})):(e.chrome&&h&&h!==f&&(m=t.slice||t.webkitSlice,t=m.call(t,0,t.size,f),O=!0),a&&"download"!==u&&(u+=".download"),(h===f||a)&&(y=e),c?(s+=t.size,void c(e.TEMPORARY,s,g(function(e){e.root.getDirectory("saved",E,g(function(e){var n=function(){e.getFile(u,E,g(function(e){e.createWriter(g(function(n){n.onwriteend=function(t){y.location.href=e.toURL(),S.readyState=S.DONE,v(S,"writeend",t),l(e)},n.onerror=function(){var e=n.error;e.code!==e.ABORT_ERR&&b()},"writestart progress write abort".split(" ").forEach(function(e){n["on"+e]=S["on"+e]}),n.write(t),S.abort=function(){n.abort(),S.readyState=S.DONE},S.readyState=S.WRITING}),b)}),b)};e.getFile(u,{create:!1},g(function(e){e.remove(),n()}),g(function(e){e.code===e.NOT_FOUND_ERR?n():b()}))}),b)}),b)):void b())},y=w.prototype,m=function(e,t,n){return new w(e,t,n)};return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(e,t,n){return n||(e=p(e)),navigator.msSaveOrOpenBlob(e,t||"download")}:(y.abort=function(){var e=this;e.readyState=e.DONE,v(e,"abort")},y.readyState=y.INIT=0,y.WRITING=1,y.DONE=2,y.error=y.onwritestart=y.onprogress=y.onwrite=y.onabort=y.onerror=y.onwriteend=null,m)}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content);"undefined"!=typeof module&&module.exports?module.exports.saveAs=saveAs:"undefined"!=typeof define&&null!==define&&null!=define.amd&&define([],function(){return saveAs}); diff --git a/lib/skulpt/microbit/compassarrow.png b/lib/skulpt/microbit/compassarrow.png new file mode 100644 index 00000000..3337c72f Binary files /dev/null and b/lib/skulpt/microbit/compassarrow.png differ diff --git a/lib/skulpt/microbit/compassbk.jpg b/lib/skulpt/microbit/compassbk.jpg new file mode 100644 index 00000000..93b2a4f3 Binary files /dev/null and b/lib/skulpt/microbit/compassbk.jpg differ diff --git a/lib/skulpt/microbit/firmware.hex b/lib/skulpt/microbit/firmware.hex new file mode 100644 index 00000000..5ffb9dc1 --- /dev/null +++ b/lib/skulpt/microbit/firmware.hex @@ -0,0 +1,15162 @@ +:020000040000FA +:1000000000400020ED530100295401002B54010051 +:1000100000000000000000000000000000000000E0 +:100020000000000000000000000000002D5401004E +:1000300000000000000000002F54010031540100B6 +:10004000335401004D440100E55D010033540100CB +:100050003354010000000000F59701003354010003 +:10006000B9B000003354010055940100335401002D +:100070003354010033540100335401003354010060 +:1000800033540100D15A01003354010033540100AC +:1000900033540100799101005591010001B2000033 +:1000A00011B2000033540100000000000000000005 +:1000B0000000000000000000000000000000000040 +:1000C00008B5054B054803331B1A062B03D9044B0F +:1000D000002B00D0984708BD2801002028010020EF +:1000E000000000000648074908B5091A8910CB0F1F +:1000F0005918491003D0044B002B00D0984708BD75 +:1001000028010020280100200000000010B5074C45 +:100110002378002B09D1FFF7D3FF054B002B02D02A +:10012000044800E000BF0123237010BD2801002017 +:100130000000000078B1030008B5094B002B03D084 +:100140000848094900E000BF08480368002B02D1B5 +:10015000FFF7C8FF08BD064B002BF9D09847F7E71B +:100160000000000078B103002C01002028010020CD +:1001700000000000144B002B00D1124B9D46402282 +:1001800092029A1A924600218B460F461148124A53 +:10019000121A2BF04EF80D4B002B00D098470C4B49 +:1001A000002B00D098470020002104000D000B48D0 +:1001B0002AF018FF20F038FF2000290028F02FFD3A +:1001C00020F07EFC0000080000400020000000003D +:1001D0000000000028010020D82F0020D90D0200C7 +:1001E000C4600561466187614146C161494601625B +:1001F00051464162594681626946C16271468160D9 +:10020000124B1A6802601860002070470F4B1A6882 +:1002100012681A6070470D4B1A68002A01D124F049 +:10022000CFFC506010681860D468156956699769EA +:10023000D1698846116A8946516A8A46916A8B4615 +:10024000D16A8D4691688E4601207047902E00201D +:10025000074BDB68002B09D05A68904204D3801A00 +:1002600004308000C05802E01B68F3E7181C704798 +:10027000882E002038B5114D041CEB689868DB68A7 +:1002800083420FD30230C00023F0E2F9EB68DA6852 +:10029000596803609B6852185B00836000234260CA +:1002A000C360E860E968CB6848685A1C04339B0067 +:1002B0000138CA6080185C5038BDC046882E0020C6 +:1002C000074B4118884205D25A01D31802780130F1 +:1002D0005340F7E7D8B2002800D101307047C0463C +:1002E00005150000034B044ADA6000228C331A60C3 +:1002F0007047C046882E002098B90200F0B585B03E +:10030000071C0E1CFFF7DCFF164B0290DC68002C6C +:1003100024D0231C10330193E368019D04339B0018 +:10032000E3180393039B9D4216D22868029A037830 +:1003300093420FD14378B3420CD10230391C321CA6 +:100340002AF04BFF002805D1019BE81A636885104D +:10035000E81804E00435E5E72468D8E7201C05B078 +:10036000F0BDC046882E0020F0B585B00290019106 +:10037000FFF7C4FF021E5BD12F4C019B271C8C375B +:100380003868DD1C002819D0261C2C4B90361B68C1 +:1003900031680393EB188B4210D9691823F07BF96D +:1003A0000390002807D1254B3868196823F066F9B7 +:1003B000039B3B6002E03368EB183360231C8C33F3 +:1003C0001B68002B17D12E1E7F2E00D88026301CD4 +:1003D000271C23F04AF98C373860002804D1281CE8 +:1003E00023F036F92E1C3860231C90331E60231C2A +:1003F000002294331A60221C943213688C342468CF +:10040000ED1801990298E4181560FFF759FF6B4643 +:100410001B79207063700299019AA01C2AF0ECFEEF +:100420000022019B201CE3189A70FFF723FF021C97 +:10043000101C05B0F0BDC046882E00201C2F0020E7 +:10044000F7B51D1C161C0023071C03600B603360EE +:100450002B60174B0091DC68002C24D0154B9C427C +:1004600021D03B6801333B60E268009B94461B68E7 +:10047000009A019363441360221CE3681032043332 +:100480009B00E3189A4206D23168C81C02CA497818 +:1004900041183160F6E7201C06F0B4FD2B68246893 +:1004A00018182860D8E733682A68D3182B60F7BD7E +:1004B000882E002098B902000C4B70B5DC68002C27 +:1004C00013D00B4B9C4210D0261CE36810361D1D28 +:1004D000AD006519AE4206D204CE06490232064886 +:1004E00026F067FBF6E72468E9E770BD882E002058 +:1004F00098B902007224030010F0020038B5051C00 +:10050000141C22F00CFB024B2560636038BDC04612 +:10051000DD2A020010B50C1E7F2C06D8012122F026 +:1005200066FB002844D0047042E0224B99420FD869 +:10053000022122F05CFB00283AD04022A30952425B +:10054000134303703F231C40BF3B1C4344702FE008 +:10055000194B994214D8032122F049FB002827D0D7 +:100560002022230B52421343037080213F23A20910 +:1005700049421A401C400A430C434270847017E001 +:10058000042122F034FB002812D01022A30C524286 +:100590001343037080213F23220B49421A400A4330 +:1005A0004270A2091A401C400A430C438270C47076 +:1005B00010BDC046FF070000FFFF000007B5034B5A +:1005C0000090684601930EF0A9F807BDDD2A0200ED +:1005D00008B50348096801F0B1FA024808BDC046F1 +:1005E00010F0020074E0020010B5041C02A80078AC +:1005F000002906D0002804D10F49104827F07FFCBD +:1006000008E09A4208D1944214D00C480C49231CAB +:1006100010F0BAFEFFF7FFFD944205D2121B094904 +:10062000064810F0B1FEF5E79C4203D9034806499D +:100630001A1CECE710BDC046573F030000FD020046 +:10064000803F0300B93F0300EB3F0300F0B50025F6 +:10065000171C87B00C9C0D9E039004910593029586 +:100660000195059B9D4239D0039B9D4209D2636849 +:100670009B0537D4019B049A01330193AB00D058FA +:1006800019E006212368381CDB001943002204F01E +:1006900007FA00280BD16368DB0505D519492268E4 +:1006A000194810F071FE21E0A368336012E0029B4C +:1006B0004068013302932379012B03D101F02AFC16 +:1006C000307007E0022B02D101F0E4FA01E0032BC5 +:1006D00000D1306001350C340436C2E7019B039A27 +:1006E000934205D20848094927F009FCFFF793FD1A +:1006F0003B68029ADB089A4202D203480449F3E7B6 +:1007000007B0F0BD1A40030000FD020031400300B5 +:1007100052400300002805D0012809D18B685B00F6 +:10072000184306E08B680348002B02D1024800E022 +:100730000020704734CD020078CD02007FB5041C44 +:100740000122081C01A901F065FC0022217940204A +:1007500009F0B8F8061C0298311C19F07DF962689E +:10076000051C130A834208D2A368C1187143E068CC +:1007700022F084FF2379E06003E01B1A1B02D2B24F +:100780001343321CA06863607043E3686A4318181F +:1007900001992AF031FDA36802485D19A56004B0F3 +:1007A00070BDC04674E00200F7B5FF254668041C22 +:1007B0000191AE431DD10179321C402009F082F82D +:1007C0006368071C1D408023A1681B011D4308317D +:1007D00041436560E06822F051FF6368E0601A0AF7 +:1007E000A368013A01337A435F43311CC0192AF0F0 +:1007F00020FD2079019BE168A26809F0BDF9A3689A +:1008000003480133A3606368013BFF3B6360FEBDA7 +:1008100074E0020010B5041C102022F02BFF024BE4 +:100820004460036010BDC046D8C5020070B50A79A7 +:10083000041C0D1C002A09D1194926F0EEF8201CD1 +:10084000E968AA6801230BF04DFA23E0154926F068 +:10085000B0F9AB68002B1DD0201C134926F0DDF841 +:100860000026AB689E4211D2002E03D0201C0F49F7 +:1008700026F0D3F8321CE968287909F045F80122FE +:10088000011C201C01F036F90136EAE7201C08495A +:1008900026F0C3F8201C074926F0BFF870BDC046FB +:1008A000704003007C400300874003008B4003003E +:1008B0006AB003001B430300F8B5071C0D1C402061 +:1008C000391C002208F0FEFF061E05D10C490D4818 +:1008D00027F015FBFFF79FFC102022F0B9FE0A4B12 +:1008E000041C002F00D0094B281C2360FBB2A5601C +:1008F0007043636022F0ACFEE060201CF8BDC0468F +:100900008E40030010F8020050C6020014C6020018 +:10091000F0B5061C8BB00D1C141C12283AD034D82C +:10092000052800D087E0081C012204A922F0F4F970 +:10093000201C07A9012201F06DFB069B00220393F6 +:100940006B464020197B08F0BDFF061C0898311C3F +:1009500019F082F8069B071C03936B46A968187B65 +:100960007918FFF7A9FF059B041C1A1C0499C0689D +:1009700003932AF041FC321CE36805987A43181867 +:1009800007992AF039FC231C56E01B2839D01F2870 +:1009900006D050E0081C111CFFF7D0FE2B1C4BE0CA +:1009A000101C07A9012222F02CFD0322002814D0DC +:1009B000234B154240D1234A296891423CD104A9D6 +:1009C000281C012222F0A8F901230498009305991C +:1009D000079A089B24F00EFF28E0E3070ED4144288 +:1009E00003D1194B22689A4208D00322144B2240AB +:1009F000022A21D1154A1440062C1DD0144808F0B3 +:100A000065F9081C012204A922F086F9201C07A917 +:100A1000012222F0F6FC0A4B00280DD0089B301C66 +:100A200000930499059A079B24F02CFD094B00289C +:100A300002D1034B00E00023181C0BB0F0BDC046F0 +:100A400078CD020050C6020030D30200070080FFBC +:100A5000BF74030034CD0200F0B5051C87B00E1C36 +:100A6000002808D08B0724D10B68264A934202D075 +:100A7000254A93421DD1301C03A9012222F0C1FC5A +:100A8000002816D00022291C402008F01BFF061C5D +:100A90000498311C18F0E0FF071C281C391CFFF7D4 +:100AA0000BFF321C041C7A430399C0682AF0A4FB94 +:100AB00024E0301C01F00AFA071E00D04710391C50 +:100AC000281CFFF7F9FE041C301C07F051FB002620 +:100AD0000090009807F09AFB031E0FD0002F04D15E +:100AE000201C191CFFF760FEF3E7721C0192281C02 +:100AF000321CE16809F040F8019EEAE7201C07B0CB +:100B0000F0BDC04648EF020050C6020070B586B086 +:100B1000002A44D00324161C051C0A1C0C402CD1AE +:100B2000204B0968994228D1111C806803AA0AF059 +:100B300093FB002802D11C4808F0C8F8221C042EA0 +:100B40002DD12979402008F0BDFE049B061C287990 +:100B50000093039B0193019A009B991AFFF7ACFE47 +:100B6000041C0399049AEB68521A71437243591892 +:100B7000C0682AF041FB221C11E0A9682868002304 +:100B800001F060F9E968021C2879042E03D108F00D +:100B9000BBFE021C03E0331C08F0EEFF034A101CEE +:100BA00006B070BD00E202009B40030074E002004A +:100BB00037B51D1C00230C1C0093081C111C1A1CAB +:100BC0000133FFF711FD002C04D1201C211CFFF77D +:100BD00073FE1BE02968CB0705D48B0713D10C4BA0 +:100BE0000A689A420FD1081C01F054F8051C002035 +:100BF000291CFFF761FE041C0021C0682A1C2AF092 +:100C000018FB201C02E00020FFF726FF3EBDC04677 +:100C100030D30200002805D0012809D18B685B0081 +:100C2000184306E08B680348002B02D1024800E01D +:100C30000020704734CD020078CD02000021F0B5CD +:100C40008568EA0F5219521091420DDA074BC668B7 +:100C5000EB185B1A8C009B003419F6582768266045 +:100C6000C4680131E750EFE70148F0BDFFFFFF3FE7 +:100C700074E0020038B50D1C83684168041C8B4287 +:100C800012D3C900C06822F0F9FC63680A495A000F +:100C9000A3686260D21A013352189B00E060920090 +:100CA000C01800212AF0C5FAA368E268591C9B000D +:100CB000A16002489D5038BDFFFFFF3F74E0020075 +:100CC000F8B5071C161C4C10836803D5E418E243E2 +:100CD000D21714409C4200D91C1C0C4D381C291CF6 +:100CE000FFF7C8FFAC46BB6809495A1E5B189B005A +:100CF0001D1FF968A24204DD4859013AC8502B1C57 +:100D0000F6E7A4000E516046F8BDC04674E002004C +:100D1000FFFFFF3F38B50025041C85601021C06827 +:100D200022F0ACFC0423291CE060636010222AF04E +:100D300080FA014838BDC04674E002007FB50C1C43 +:100D4000114B02AD04310093013802230195FFF7E6 +:100D50007DFC23680D4C9968012911D9D868029A45 +:100D60000B4B2D79C918131B5E1EB34189005B42E2 +:100D70001A404118074B002D00D1074B22F018F8FC +:100D8000201C04B070BDC046D8C6020074E002004A +:100D9000FFFFFF3F78CD020034CD020070B50C6834 +:100DA000021CA368002B05D11A491B4827F0A7F89D +:100DB000FFF731FA2068012A01D04A6801E00122D8 +:100DC0005242191C002301F03DF8E268A36881003B +:100DD0005618013B043151181A1A35689200A36065 +:100DE000301C2AF012FA0021A368E0689A00115022 +:100DF000616804290BD95B00994208D94908890028 +:100E0000E06822F03BFC6368E0605B086360281CDC +:100E100070BDC046CC4003006CF9020007B50090DD +:100E200001910220694622F025F8694601900220CE +:100E3000FFF7B4FF00480EBD74E0020070B50E1C51 +:100E40000D49051C002425F0E8FDB3689C420ED234 +:100E5000002C03D0281C094925F0DFFDF268A3000F +:100E60009958281C012200F045FE0134EDE7281CAA +:100E7000034925F0D2FD70BD894003008B4003007B +:100E80006AB0030070B50326041C0D1C0E4028D167 +:100E9000174B0A689A4224D18B6882689918436874 +:100EA000994210D904318900C06822F0E7FBAB6891 +:100EB000A268E0609B181A1D9B006260C018311C7C +:100EC00010222AF0B6F9A368E9689800E3681818B8 +:100ED000AB689A002AF090F9AB68A268D318A360B7 +:100EE00003E0201C291C21F0CEFF024870BDC04643 +:100EF0009CC6020074E0020010B5041C102022F011 +:100F0000A7FB044B84600360034B43600023C36072 +:100F100010BDC0463CE20200932D020038B50B4BD9 +:100F2000051C03600C1C081E042800D20420686005 +:100F3000AC60800022F08CFB6A68E860121BA400A1 +:100F40009200001900212AF074F938BD9CC60200F5 +:100F50007FB50D1C161C12282AD004D8052807D0EE +:100F600007282BD058E0031C193B042B41D953E030 +:100F70000322002332409A424FD1131C3168284A81 +:100F800091424AD1B368AA68981821F095FF041CD1 +:100F9000AB68E9689A00C0682AF02EF9A868E3688F +:100FA00080001818B368F1689A002AF025F91EE04D +:100FB000081C111CFFF766FF2B1C2EE0101C03A958 +:100FC00000F0A6FE0023984227D0039A9A4200DA46 +:100FD0000393039BA868584321F06EFFC368041C69 +:100FE0000093E8680421AA68039B24F017FA231CE5 +:100FF00013E00C4BB20710D1094A316891420CD171 +:10100000B368E9680093AA68F3680AF05FF9064BD1 +:10101000002802D1034B00E00023181C04B070BD6F +:101020009CC6020078CD020034CD0200F0B50B1C46 +:1010300087B0041C171C0326002A16D10E400DD1C0 +:10104000524A0968914209D1191C03AA80680AF022 +:1010500003F90398049AE368851A78E003A902204B +:1010600003940493FFF79AFE8DE0042A2DD13142B8 +:1010700021D1464A096891421DD18068191C03AAF2 +:101080000AF0EAF8002805D1A068E16803AA24F074 +:10109000D8F979E0039B0498C01A21F00DFF051CD4 +:1010A0008368E1689A00039BC0689B00C9182AF016 +:1010B000A3F8281C68E01A1C20680023A16800F02F +:1010C000C1FEE3688000C0585EE00E4056D12F4A52 +:1010D0000968914252D1191C03AA80680AF0BCF831 +:1010E000BA680398049B85180193ED1A002D22DD40 +:1010F000A368E9186368994207D98900E06822F07B +:10110000BDFAA368E060EB186360039AE368A8186F +:101110009100800059181818A3689A1A92002AF0B2 +:1011200074F8039BF9689800E3681818BB689A0084 +:101130002AF062F81EE0E368800018189200F9684F +:101140002AF05AF8B8680399E368049A40189100A5 +:10115000800059181818A3689A1A92002AF055F8B6 +:10116000A3686A42E818E368800092001818311CEE +:101170002AF05FF8A3685D19A56004E0201C191C23 +:101180003A1C21F0DBFE024807B0F0BD00E202008D +:1011900074E00200002313B5046A00930A05A16BF2 +:1011A000024C920C125921F068FF13BDDCC70200FB +:1011B000F0B51C7887B07C2C06D185686D5C002D5D +:1011C00002D09A2D00D0DEE00393231C6B3B0292E9 +:1011D0000091071C022B29D884687D686018037869 +:1011E000032B00D0ACE004A922F03AF8631998422E +:1011F00000D19EE00378032B00D0A1E005A922F0E6 +:101200002FF8039B1B786B2B03D1049B059A134388 +:101210000AE06C2B03D1049B059A534004E06D2B2C +:10122000E4D1059B049A13400493DFE76E2C04D0AD +:101230000223221C9A43702A63D1009BBE68F018D7 +:101240007B6801930378032B7AD104A922F008F874 +:10125000051C019BF3189D426BD0AB78A81C6C78E1 +:10126000032B6DD105A921F0FBFF051C372C0ED1F6 +:10127000059A1F2A64DC4549049B11418B425FDCBF +:10128000C021090611418B425ADB934009E0392CF9 +:1012900009D1059B1F2B01DD1F230593049B059A94 +:1012A0001341049328E02F2C03D1049B059A9B182B +:1012B000F7E7302C03D1049B059A9B1AF1E7312CF8 +:1012C00009D10498059907F00BFD002838D1059B3A +:1012D000049A5343E5E7332C32D00599352C05D1D8 +:1012E00000292DD0049823F08FFB04E0002927D09B +:1012F000049823F099FB0490049B5A005340A8D50E +:101300001EE0752C1CD18368009A98188378447865 +:10131000032B15D1023021F0B2FF2F2C08D0302C36 +:1013200005D1404243000490584002D508E0C04334 +:101330000490009B381C7B60049921F0CEFE22E0D3 +:1013400000267B68009A029C9D1A0136E409FCD1B4 +:101350002B1C0134DB09FCD1731C1A19381C0099B1 +:10136000019321F07EFC071C039B311C1B78029A21 +:101370001A330370013021F02CFE019B211CF81858 +:101380002A1C21F026FE07B0F0BDC046FFFFFF3F3C +:10139000F0B597B00990C020002540230AAC80002A +:1013A0000F1C161C25706360A56022F05EF9256194 +:1013B000E0606561A561E5612762E562A84202D14E +:1013C000BF48C049C0E1331E03D00423022E00D021 +:1013D000033B0026BC4A9B000096201CB96B9A5820 +:1013E000331C21F04AFE102022F032F91021041C97 +:1013F00021F095FB0AADAB68002B00D181E12A7882 +:10140000002A00D07DE1013B0C32AB605343EA6817 +:10141000AD49D318DA785D689200525803921A6881 +:101420009B681202120A0493039B06925B7807934F +:101430000F23079A1A400592002D01D16368049387 +:101440003023079A1340102B02D0202B40D0F4E019 +:10145000002D03D0002E01D10026CBE7039B6A00AC +:101460009A18059B9D4231D25388190B012916D138 +:10147000391C403109781B0502321B0D994221D1DC +:101480000AA8211C21F05EFE0028E5D13B1C403358 +:101490001B78062B00D04CE18C488D4954E1059A0D +:1014A0006B1C934206D2049A0AA800920699039AEA +:1014B00021F0E3FD039B6D005D1969880AA8FFF721 +:1014C00069FEC9E70135CCE7012DDFD8012691E798 +:1014D000002E0BD0039A6B009B5A1B0B032BF3D1EE +:1014E000201C012121F083FB00230370039B6E006D +:1014F0009E191AE073881A0B012A29D13A1C40322E +:101500001278DBB29A4220D1082A07D1B96CF86C64 +:10151000FEF72AFF011C201C21F0A5FD002D08D09C +:10152000381C23F031FF01350236059B9D42E1D383 +:1015300010E0039B5B787F2BF2D90E9B201C591C7B +:1015400007930E9121F0C9FDEAE7002DBED09DE77B +:101550006B1CA8E700231E1C059A93420CD203992A +:101560005A008A185288110B012903D1D2B2072AD6 +:1015700000D901260133EFE7A368049A98180023E5 +:101580000793A2686368D318984206D2079B01218B +:101590000133079321F03DFDF3E7039B1B781F2BDD +:1015A00001D02E2B00D10126039B597840230B40FC +:1015B000181C4342434149B25B421E40002900DAF5 +:1015C00001260025049B0595D0180895079B9D4290 +:1015D0000FD0059A037801320592002B04D0089BA6 +:1015E0000133089300230593012121F012FD0135F9 +:1015F000ECE7002E02D1089B012B04D0201C05999A +:1016000021F062FB76E0A268049B944663441D1CB3 +:10161000079B9E4200D11FE72B78002B06D1A368C1 +:10162000201CE91A012221F05DFB04E0281C0121A5 +:1016300021F0EFFC051C0136EAE7002E1FD0059BC8 +:10164000022B03D10023012D45D13FE7012D00D10D +:101650003CE701232A1C1A403CD0059A032A3AD0C1 +:1016600014E73A1C0899403212780905090D8A429C +:1016700017D1002B10D0381C23F086FE0135012332 +:10168000079A039913402B405A008A1852880892EF +:10169000120B012AE5D006E00AA8211C21F052FD18 +:1016A000ECE70135CBE7049A0AA8009206996B1C77 +:1016B000039A21F0E2FC0AA80899FFF76BFD99E66E +:1016C00090F80200E9400300DCC70200F8FA0200CB +:1016D00011410300131C079A691ED20705D5039A0E +:1016E0009288120B012A00D16908012902D1002B2E +:1016F00000D1B1E6201C0499069A039BFFF758FD20 +:10170000AAE62B78002B00D05AE63B1C40331E780B +:10171000002E00D0BAE66368002B00D1B6E62B6934 +:10172000201C591C21F0D9FCA3686B62EB69AB62E9 +:101730000FE0022B02D11448144905E00B3B14487A +:101740001449012B00D9144926F0D9FB0023061CAB +:1017500013930D9821F0A3FF002E0BD0301C396895 +:10176000BA6B00230FF07EFE381C23F09BFD301C6B +:10177000FEF751FD381C23F095FD099A13AB13CBEE +:1017800013C2099817B0F0BDF8FA02002341030014 +:1017900078FD0200574103007E41030010B5041C90 +:1017A000102021F055FF044B84600360034B43601D +:1017B0000023C36010BDC0463CE20200713302004A +:1017C00013B5041C081C01A90AF06CFB002C07D0FF +:1017D000012C0BD1019922F033FB4000204306E09D +:1017E000019B0348002B02D1024800E0002016BDF7 +:1017F00034CD020078CD0200F0B585B0041C081C81 +:1018000003A9151C0AF04EFB061C002D06D1201C56 +:101810003549039A331C25F0CCF963E0011C002202 +:10182000039BC3180093009B99420ED20B78272B81 +:1018300004D0223B58424341DBB201E000230122A5 +:101840000131002BEFD0272703E02727002A00D003 +:10185000053F264D201C291C3A1C25F0AAF90195AC +:10186000009B9E4239D2301C22F0B9FA051C301C74 +:1018700022F0D0FA061CBD4203D1201C1C493A1CA0 +:1018800028E05C2D02D1201C1A4914E02B1C203BBF +:101890005E2B02D8201C01991BE00A2D02D1201CCE +:1018A000154908E00D2D02D1201C144903E0092D33 +:1018B00004D1201C124925F0B0F8D1E7FF2D02D841 +:1018C000201C104905E0104B201C10499D4200D9F6 +:1018D0000F492A1C25F06DF9C2E7201C01993A1C1A +:1018E00025F067F905B0F0BD8D4103009341030079 +:1018F0009241030096410300994103009C4103007B +:101900009F410300A2410300FFFF0000A941030023 +:10191000B0410300F7B51F1C08AB0C1C161C1D784A +:10192000FB0702D57F1001970EE0381C01A900F0DB +:10193000EFF9002808D1381C21F04DFD1B49021C8D +:101940001B480FF021FD0DE0019BA019002B17DAB9 +:101950000138A04208D20193002D25D1154816491F +:101960000FF012FDFEF757FC3F21027801388A4341 +:10197000803A511E8A419B18002BEAD1013014E0B5 +:10198000002B11D0844203D30193002D0DD1E5E744 +:101990003F2122788A43802A01D10134F8E7002BC5 +:1019A00002D00134013BEDE7201CFEBDB74103002E +:1019B00000FD02006CF90200DF410300F0B587B0C2 +:1019C000061C0D1C171C00F07BF802A9041C301C1F +:1019D0000AF068FA061C042F4FD1AB0735D1284B0B +:1019E0002A689A4231D105AB281C03A904AA23F026 +:1019F00006FD059B234FBB4204D0032B02D0224897 +:101A000007F064F9039B351CBB4207D00122201C60 +:101A10000092311C029AFFF77DFF051C049BBB421C +:101A200008D00122201C0092311C029AFFF772FF9D +:101A3000021C01E0029BF2180E20AA421ED3521B88 +:101A4000201C291C23F0F5FE18E00023311C009314 +:101A5000029A2B1C201CFFF75DFF0278012153B274 +:101A6000002B06DA402301211A4202D001315B0823 +:101A7000FAE701220AF0D8F900E0002007B0F0BD33 +:101A800000E2020074E002009B40030013B5041C56 +:101A9000A06806F0BBFB019000280ED06368074ADF +:101AA000934205D0181C0121002201AB06F066FA12 +:101AB00000F030FA0028EBD0019816BD74E0020067 +:101AC000084BC2070BD4084A084B0240062A06D02E +:101AD00003230340022B01D1054B00E00368181CCF +:101AE0007047C04630D30200070080FF80CA020062 +:101AF0000CD00200F8B50D1C041C161C01F0B8FE39 +:101B0000281CFFF7DDFF8768031C201C002F03D073 +:101B1000291C321CB84703E002495A6825F049F8ED +:101B2000F8BDC046F941030008B5031C0A1C024871 +:101B3000191CFFF7DFFF08BD10F00200F7B5051C08 +:101B4000081C0E1C26F0DFF900282AD0301C69463C +:101B500001AA0FF0BFFC009B002B22D0281C1649C5 +:101B600024F05BFF009C154BE71EE418A400002F37 +:101B700017DB019A281C13195B681259104925F0CC +:101B800018F8019B281C1B199A68002A03D10D49DB +:101B900024F043FF02E00C4925F00BF8033F0C3C16 +:101BA000E5E7281C311C0222FFF7A4FF281C054989 +:101BB00024F033FFF7BDC046FE410300FDFFFF3FA9 +:101BC000224203003F4B03003742030010B5041CC0 +:101BD000FFF776FF054B0069984203D0431E9841FA +:101BE000C0B202E0201C23F07FFD10BDF9B8000058 +:101BF00038B5051C0C1C01208D4241D0214B9D4263 +:101C000001D100203CE09942FBD001231D4204D0C9 +:101C10001942F6D12B1C0D1C1C1C2A1C1A4B1A40F5 +:101C2000062A05D0AA0711D1184A296891420DD178 +:101C30002340062B05D0A307E3D1144B22689A4218 +:101C4000DFD1281C211C0AF057FD19E02340062B88 +:101C5000D7D0A30703D10D4B22689A42D1D0281CBC +:101C6000FFF72EFF8369002BCBD01B20291C221CE1 +:101C700098470028C5D0064BC01A42424241D0B214 +:101C800038BDC04674E00200070080FF80CA020031 +:101C900034CD020008B5104B984219D00F4A0123E9 +:101CA000904217D0184201D0184114E0830706D1A2 +:101CB0000B4B02689A4202D103F014F90BE021F0B9 +:101CC0008AFB0849021C08480FF05EFBFEF7A3FAE6 +:101CD000002000E0181C08BD78CD020034CD0200C1 +:101CE00030D302004042030000FD020008B5C307E4 +:101CF00005D4830706D1054B02689A4202D122F02F +:101D000036F801E0FFF7C6FF08BDC04630D3020039 +:101D100038B50F4B0124984202D100230B6014E028 +:101D20000C4B984201D10C600FE0031C234002D001 +:101D30004010086009E0820708D1074A056895420B +:101D400004D10D1C03F0CEF82860231C181C38BDEC +:101D500078CD020034CD020030D3020008B5184B14 +:101D6000984228D0174B984227D0C30703D540107C +:101D700018F060FF23E00323184206D1124A0168DD +:101D8000914202D121F0FCFF19E00340022B09D15E +:101D90000E4B0340062B05D0FF23DB05C0180323A1 +:101DA00098430CE021F017FB0949021C09480FF089 +:101DB000EBFAFEF730FA002001E0FE20800508BDB6 +:101DC00078CD020034CD020030D30200070080FF3E +:101DD0005842030000FD020010B583070CD10368D0 +:101DE0000A4CA34202D123F0C7F80EE0084CA342EC +:101DF00002D121F09CF808E021F0EDFA0549021C1F +:101E000005480FF0C1FAFEF706FA10BDBCDC02006F +:101E10009CC602007242030000FD020013B50C1CB8 +:101E200001A9FFF7D9FF019BA34206D00349221C59 +:101E300003480FF0A9FAFEF7EEF913BD954203002F +:101E400010F80200F7B5051C0C1C171C1E1CD3074C +:101E500002D55710019710E0101C01A9FFF758FF99 +:101E600000280AD1381C6C6821F0B5FA1349031C0C +:101E7000221C13480FF088FA1BE0019B002B08DAA4 +:101E80001B190193002E0AD0002B04DA00230193C2 +:101E900011E0002E03D0A3420DD901940BE0019B69 +:101EA000002B01DBA34206D3064807496A680FF0FE +:101EB0006BFAFEF7B0F90198FEBDC046C2420300BE +:101EC00000FD02006CF90200E642030010B5041C9C +:101ED000830710D10D4B02689A420CD10C4B034082 +:101EE000062B03D1C00820F0C5FD00E08068012367 +:101EF0004000184308E0201CFFF7E2FD4369181E6C +:101F000002D00120211C984710BDC04648EF0200B6 +:101F1000070080FF174A70B50023904227D0164C67 +:101F2000A04201D1012322E0144A002390421ED096 +:101F3000012606409E4201D0401015E0051CFFF727 +:101F4000BFFD4369002B09D0301C291C984700288D +:101F500004D0031B58424341DBB208E0281CFFF7C2 +:101F6000B5FF0028DED00138431E9841C3B2181CCB +:101F700070BDC04678CD020034CD020074E002008E +:101F800010B5041CFFF7A2FF002809D1201C21F086 +:101F900022FA0449021C04480FF0F6F9FEF73BF957 +:101FA00010BDC046FC42030000FD020070B5041CD9 +:101FB0000D1C161CFFF784FD036A002B05D0201CA6 +:101FC000291C321C984700281AD10E4D201C002EC7 +:101FD00005D121F000FA0C49021C281C06E0042E51 +:101FE00008D121F0F8F9021C281C08490FF0CCF99F +:101FF000FEF711F921F0EFF90549021C281CF5E75D +:1020000070BDC04600FD02001D43030048430300AD +:102010006943030008B521F0F4F9002805D103490C +:10202000034825F06CFFFEF7F6F808BD9643030061 +:1020300000FD0200F0B585B000AF7A601D1C7B6822 +:10204000C26BCB18061C0C1CFB60934204D02B49BE +:102050002B480FF099F93BE0FB68994245D09A0074 +:10206000131C69460E33DB08DB00CB1A9D46181C97 +:102070000021BB6029F0DDF80023A200934204D0C8 +:10208000E858B968C8500433F8E7F9687A688C46AC +:1020900062447A60ED1803E06A6802341A60083519 +:1020A0007B689C4220D2286809F0E0FE0021021CD7 +:1020B000F36B3B603B68994206D08B00F018006CD4 +:1020C000904207D1013107D10D480E490FF05CF95C +:1020D000FEF7A1F80131EDE7B968CB1819680029BE +:1020E000DAD007480849F1E7BD68F868291C07F00D +:1020F000E9FDBD46066005B0F0BDC046803F030067 +:1021000000FD0200BB430300DC43030038B50C1C98 +:10211000051C0B6805495A6824F04BFD2168281CF2 +:102120004031221C10F0A6F838BDC0465B83030086 +:10213000F0B585B00C1C032509F098FE2540071C5E +:10214000002D03D11E4B22689A4205D01D491E481E +:1021500025F0D5FEFEF75FF8201C02A903AA20F0A7 +:10216000E6FE029E039B301C10308000019321F09C +:102170006FFA041C291C3C2229F05BF8134B6760A2 +:102180002360134BE663A360124BE360124B636161 +:10219000124BA361124BE361124B2362124B636239 +:1021A000124B6363B54208D0019BAF00D85909F0C8 +:1021B0005DFEE71938640135F4E7201C05B0F0BD79 +:1021C0009CC602000B44030000FD02006CEB020001 +:1021D0000D21000035200000459C0000099D0000F5 +:1021E000F1210000019E0000A19C0000D4CB020060 +:1021F000136870B5002B11D10568EE6BB34213D094 +:102200009C002C19246C8C4201D00133F6E7591C38 +:102210000AD002339B001B58136005E003490448B1 +:1022200025F06DFEFDF7F7FF70BDC04619440300B1 +:1022300034FB0200F8B5214D2E687368012B3BD9A1 +:10224000B1685C1E0A5D0A2A36D1002C03DD621ECD +:10225000885C0A2801D1221C05E0141CF5E7885C83 +:10226000202802D101329A42F9D3002C0BDD501CF8 +:10227000984208D1601E002805D001380F5C0A2F53 +:102280001AD0202FF7D0CB18023B1B78141B3A3BF7 +:1022900059425941A4086418013C0DD3084F301C21 +:1022A000391C042220F01AFC381C042111F00CFE09 +:1022B0002B6904332B61EFE7F8BDC04644010020D1 +:1022C000CAA7030008B503480021202228F0B1FF67 +:1022D00008BDC046D02E002008B5084B42681860E3 +:1022E0000020986018750138D860081C5A601A617F +:1022F000996126F0E2FAFFF79DFF08BD4401002036 +:10230000F8B50378002B1ED00F4D041CA86C0028D4 +:1023100004D0211C29F088F8002814D0201C29F0B2 +:102320008DF8471C381C21F0A0F9061E0BD03A1C72 +:10233000211C28F061FF054B054A1968043B996090 +:102340009342FAD1AE64F8BD882E0020E82E00201A +:10235000CC2E0020F0B5BD4B051C18689E68426865 +:1023600085B001921C1C002E00D0C5E06B1E042B12 +:102370001BD820F01CFC6368984200D163E1012D5A +:1023800000D106E1022D0AD00FE09A60412D37D02E +:10239000422D2ED0432D19D0442D00D0E8E02369E2 +:1023A0006268934200D91CE158E1032D00D14AE153 +:1023B000042D06D1206821694368994200D3E0E0EA +:1023C000FCE0052D00D1EFE0062D06D123685D6805 +:1023D0002369AB42AD416D4228E10B2D07D1019B32 +:1023E00022692068991A20F06FFC002504E10E2D67 +:1023F00004D1E368002B00DBA1E02FE1102D04D114 +:10240000E368062B00DC8DE028E1152D0BD1236954 +:10241000626820689A1A616820F064FC2369626827 +:1024200000259E1A1DE10D2D0AD1894826F045FA96 +:10243000206820F0EEFB6368C018FFF761FF14E12D +:102440001B2D02D10123A36008E1082D01D07F2DAF +:102450001BD121696268914200D8FFE0131C2068FB +:102460009D1A8B4205D08568ED5C202D06D1013385 +:10247000F6E70126032D02DD033600E00126891B65 +:10248000321C20F02FFC0127ADE0092D28D1236854 +:1024900061689868236940186E4A591A03AB0EF0B8 +:1024A000D7FD061E00D1D9E00025431C0BD1A06941 +:1024B00026F003FA23686168986823694018591A5E +:1024C00011F002FD98E023692068E918039B0135AB +:1024D0005A1C03921A7820F0E5FBB542F3D18BE049 +:1024E0002B1C203B5E2B00D9B8E02A1C20682169F8 +:1024F00020F0E1FB01257FE00022012E07D14F2DC6 +:1025000003D05B2D6BD1023269E0042267E0022E1A +:1025100033D1291C3039092900D936E703221D752A +:102520009A609BE05A1C4C4913339B005958002970 +:1025300000D193E020686368E26043600FE02068A8 +:10254000013BE36062684368991A20F0BDFBE368D1 +:10255000002B06DB1233404A9B002068995820F07C +:1025600074FB63682269D61A22685568ED1A78E010 +:10257000482D0ED0462D71D116E0032E29D17E2D87 +:1025800002D000252F1C1EE01B7D312B01D0372BE4 +:1025900005D10025236962682F1C9E1A14E01A1CBD +:1025A000FB21343A0A4206D1002723683E1C5D68AD +:1025B0002369ED1A08E0332BE3D1FBE6012220F07A +:1025C00091FB002501272E1C0023A3609E420BDCFB +:1025D00010E0042E03D1462DE6D0482DD9D09A60C4 +:1025E0003CE0002701260025301C11F091FC2369F6 +:1025F0009E1B2661002F19D02368019A5B689342C5 +:1026000004D2131C2269981A11F092FC22682369E3 +:102610009168C8185168C91A11F056FC23685868A7 +:102620002369C01A401B11F073FC08E0002D15DD72 +:102630002368291C98682369C01811F045FC236998 +:10264000ED1825610AE02E1C0FE0C0464401002071 +:102650003E4B030010F00200882E00200126764237 +:1026600003E00127002EBFDCC6E7301C05B0F0BD3B +:10267000F7B51F1C13780E1C0A3BD9B2051C1F4866 +:102680000F2904D850781B02184320F0F8F91524BC +:10269000037801931A4B01331522121B009219780B +:1026A000019A91421CD1427859788A4218D1827895 +:1026B0009978914214D100290FD1009B9A00104BB8 +:1026C000D45CBC4217D93B1C0E480F49321C0EF09B +:1026D0005BFEAB68002418600DE0C1780029ECD0E7 +:1026E000013C0433002CD7D106480849321C0EF0B7 +:1026F0004BFEAB681860201CFEBDC046BF740300D3 +:102700002846030078FD020093440300AC44030014 +:10271000F0B5177885B0051C0E1C992F47D1101CF9 +:1027200001A920F0D6FD019B021E9A423FD00378FA +:10273000191C0A390F2908D80F23281C311CFFF750 +:1027400097FF01238340181C39E0AE2B2FD120F0D6 +:10275000BBFD041C20F0B3FD02900378B22B26D100 +:10276000221CA33B311C281CFFF782FF012403A974 +:102770008440029820F0ADFD039B0290984203D064 +:1027800002A8391C20F0B4FD029A039B9A420CD097 +:10279000311C0F23281CFFF76BFF01238340029895 +:1027A0001C4320F08CFD0290EEE7201C07E005485A +:1027B0000549321C0EF0E8FDAB681860002005B03A +:1027C000F0BDC04678FD0200C4440300F0B585B0FA +:1027D000041C0D1C101C03A91E1C20F056FD071E16 +:1027E00008D10E480E492A1C0EF0CEFDA3681860D1 +:1027F0003B1C0FE00398FFF779FA021C031CB2435D +:1028000008D00096054807492A1C0EF0BDFDA368B4 +:1028100018600023181C05B0F0BDC04678FD02000A +:10282000DF440300F744030038B513780D1C0A3B5E +:10283000D9B2041C0F2908D92A1C124812490EF0DB +:10284000A3FDA368002518601AE052781B02134309 +:10285000C2680020904208D02569810049599942F8 +:1028600001D1051C0CE00130F4E722880025042A80 +:1028700006D11A1C034805490EF086FDA3681860AE +:10288000281C38BD78FD02002345030038450300AD +:10289000F0B587B0041C0F1C081C04A91E1C019273 +:1028A00020F0F2F8019B051C002B13D1322F03D12D +:1028B000BF2160690902EAE1482F08D0019BBE48A8 +:1028C000BE492A1C0EF060FDA3681860E1E1606952 +:1028D000BB49DCE1019B012B00D08BE0412F09D1EA +:1028E000291C201C3268FFF79FFF011C606923F040 +:1028F000AAF90AE0422F12D1291C201C3268FFF7E6 +:1029000093FF011C606923F0F5F9002800D0C0E1B5 +:10291000A948AC49A46825F0F2FA2060B9E1432F38 +:1029200009D1291C201C32680F23FFF7A1FE8E213C +:10293000C000C901A9E10378622B33D1049B032BAA +:1029400007D0052B2ED1C3785F2B2BD103796E2BAB +:1029500028D101279C4A6978531C7F422B32187872 +:10296000884206D1A87884465878844501D1581EFB +:10297000077803339342F2D17B1C9FD03268201C2E +:10298000291CFFF751FF049B021C00266069052BE0 +:1029900003D12B79773B5E425E41331C391C23F017 +:1029A0006EF9B2E7462F02D1606988496FE1472F7F +:1029B00002D1606986496AE1442F0BD1291C201C91 +:1029C0003268FFF7A5FEFF231B02B421184200D096 +:1029D00074E70DE0452F00D070E7201C291C3268F9 +:1029E000FFF796FEFF231B02184200D066E7BC21CA +:1029F00009024AE1019B022B00D0D4E073681B78E6 +:102A00000A3B0F2B49D8332F12D1291C3268201CC6 +:102A10000F23FFF72DFE291C071C7268201C0F23B3 +:102A2000FFF726FE391C021C606923F0F7F830E13D +:102A300000230293342F1BD18027FF01291C326809 +:102A4000201C0723FFF714FE291C01907268201C2C +:102A50000723FFF70DFE391C031C019A606923F060 +:102A6000D6F816E1029B013302930F2B00D125E724 +:102A7000029B281C9F00574B791C5918032228F0F1 +:102A8000E4FC0028EED1EB78002BEBD1514BFF5C3E +:102A900080233F01DB011F43D0E7332F01D1802783 +:102AA00002E0352F13D1A027291C32680723201CF0 +:102AB000FFF7DEFD291C0190FF23201C7268FFF741 +:102AC00085FE019BBF01074319023943DEE0362F23 +:102AD00001D1C027E8E7372F01D1E027E4E7002341 +:102AE0003D4A990050184088874258D18B5A201C83 +:102AF000029332680723291CFFF7BAFD766803901A +:102B00003378982B28D1301C20F01EFC002823D1CC +:102B1000301C20F0D9FB03789A2B1DD105A920F099 +:102B2000D8FB0599071C20F0BEFB022814D1381CE5 +:102B300020F0C5FB3A1C0723061C291C201CFFF7AC +:102B400097FD029B071CDB040ED5201C291C321CA0 +:102B50001F23FFF73BFE17E0174820492A1C0EF001 +:102B600013FCA3681860A9E6029B201CDB0B291C40 +:102B7000321C002B04D03E23FFF728FE400803E060 +:102B80007C23FFF723FE80080399029BFF00194373 +:102B90000F43F8218001C9000840391C75E001335A +:102BA000062B9DD18AE6019B032B00D086E6382FA9 +:102BB00016D1002718E0C04678FD02004F450300FB +:102BC00030BF0000AF4503006944030072B6000047 +:102BD00062B600002D440300262403008445030050 +:102BE000392F1DD180273F01291C32680723201C63 +:102BF000FFF73EFD291C019072680723201CFFF798 +:102C000037FD291C02901F23201CB268FFF7DEFD50 +:102C10000199029B394380010143DB00194335E0F0 +:102C20003A2F02D180277F01DEE7362F01D1C0275E +:102C300003E0372F00D041E6D027291C3268072354 +:102C4000201CFFF715FD726801900723201C291C2A +:102C5000FFF70EFDB2687F01137802900A3B0F2B3D +:102C600005D8201C291C0723FFF702FD07E080235D +:102C7000DB001F43201C291C0723FFF7A7FD029B35 +:102C80008001D900019B194339430143606922F057 +:102C900087FF07B0F0BDC046F7B5061C0D1C002429 +:102CA0000192019B9D4228D0631C0093052B03D108 +:102CB000B4681348134907E028780A38C3B20F2BC9 +:102CC00007D9B4680E48104925F019F92060002092 +:102CD00014E06B78000218431FF0D1FE0235071C88 +:102CE00028F0ACFB0228ECD13B78722BE9D17B7841 +:102CF0003034A342E5D1009CD3E7201CFEBDC04682 +:102D000078FD0200C3450300F645030030B50724F3 +:102D100002784160A243053C224302707F22039C5B +:102D200005882240D400034A83602A40224302805F +:102D300030BDC04607FCFFFF10B5072403782140D3 +:102D4000A34319437F230170049904880B40D900E1 +:102D5000084B426023400B430380039B04685B05E0 +:102D6000D90A054B23400B430360029B8360059BFC +:102D7000C36010BD07FCFFFFFF03E0FFC3790248FB +:102D8000002B00D10148704734CD020078CD0200FD +:102D900008B501F03FFA014808BDC04674E00200E2 +:102DA00008B5086801F036FA004808BD74E0020072 +:102DB00073B50D1C022823D10126486801A909F02A +:102DC000EBFC7642341C019BC31898421BD001785F +:102DD000722901D0772905D1621C0ED172394C427B +:102DE0004C4108E0622901D0742906D1721C04D13B +:102DF00074394E424E410130E7E70E480E4913E068 +:102E000001267642341C01A9286809F0C5FC7342EA +:102E1000734162426241DBB2D2B2019901F04EFBD2 +:102E2000002805D10548064925F069F8FDF7F3F9B2 +:102E300076BDC04610F802007C460300C0F90200CF +:102E400089460300F8B5061C10200D1C141C1F1C1D +:102E500020F00BFC011E09D02C190F604D608D6015 +:102E6000CC60301C024A034B22F030FAF8BDC04659 +:102E7000BF350200D53502000022114B1A60031C39 +:102E8000104A1233FF33811800225A701A7004332B +:102E90008B42F9D1011C031C09310833FF31002298 +:102EA0001A709A705A70DA7004338B42F7D1C323C8 +:102EB0007F329B00C254044A044B1A607047C046DC +:102EC00060010020110300002948030004000020D5 +:102ED0000023F7B5071C1C1CA200BA18FF32517C56 +:102EE0007F2951D0927C651C9B18DBB2EF2B2AD92D +:102EF000EBB20193C1239B00FE187D23351C009388 +:102F0000009B019A934209DB281D291C042228F00A +:102F100073F9009B043D013B0093F1E7002395000A +:102F20007D19FF356B74AB74EB742B757D25023402 +:102F3000E4B2A5421CDB301D311C042228F05CF9F0 +:102F4000013D043EF5E77D291BD8104A525CD207AB +:102F500017D5C1237D269B00ECB2FD18A64207DBE6 +:102F6000281D291C042228F047F9013E043DF5E7FD +:102F70007E23A200BA18FF32537400239374D374D3 +:102F800013750134E4B2A7E7F7BDC046DB47030081 +:102F9000012110B54B1EDBB29B00C318FF335A7CD6 +:102FA0007F2A15D00B4CA25C520602D40131C9B263 +:102FB000F0E75A7D7F2AF9D0A25C7F2AF6D9DA7D24 +:102FC000002AF3D054B2002CF0DB0132DA74EDE7C2 +:102FD00010BDC0463A470300031CF7B54B4A1333F4 +:102FE000FF3382180021197004339342FAD10B1C6D +:102FF0005AB2002A01DA464A7DE0021CFC32176907 +:10300000B94205D37F2244339B001A5401207CE04F +:10301000D668755C602D01D9203DEDB24C1CE4B240 +:10302000BC4223D0325D0092602A02D9203AD2B24B +:103030000092232D1ED1009A303A092A01D9354A2F +:1030400059E00231CCB2BC4204D3FF2AF7D8427017 +:10305000211CCDE7315D0D1C303D092DF5D80A2529 +:103060006A430134303A5218E4B2ECE7232DE6D03B +:10307000002200920026F7B20197274FF25DAA4284 +:1030800014D1264AB25C94462A2A0FD0009A94455D +:103090000CD16C469A0024798218FF32547444781B +:1030A000013302311475DBB2CCB2D1E70136512EB7 +:1030B000E1D10022194ED1B2965D2A2E0BD1BE5C11 +:1030C000AE4208D19A008218FF3251744178013320 +:1030D0001175DBB2BCE70132512AEBD1493A1049F4 +:1030E000895CA94204D0002A04D0013AD2B2F6E7A2 +:1030F000002A04D10B4A0C4B00201A6005E0191C71 +:103100004331890041188A70A2E7FEBD1203000016 +:103110002C4803003E48030098460300E94603009C +:103120000B4903004C480300040000201130FF301D +:1031300003787F2B0AD002228256002A01DC044A3F +:1031400000E0044AD35C43700430F1E77047C046A6 +:10315000BB4803008B4703000023F0B589B0019002 +:103160000093009B019A9B00D3180393FF335E7C6E +:103170007F2E00D1C6E064498A5D900702D4009B8F +:103180000133BDE0D2074BD4009A7D25571C721C39 +:10319000D2B204925D4AFFB2921952780592DA7C5B +:1031A0001B7D0692C122920094460793019B6344C3 +:1031B0001C1C0293BD4207DB201D211C042228F0A9 +:1031C0001BF8013D043CF5E7019BBF00DF196B468E +:1031D0001B7CFF377B746B461B7DB51CBB746B4639 +:1031E0001B7EEDB2FB746B461B7F3B75009B9C1CEA +:1031F000464BE4B29E19B7787D26039BFF33DA7CF9 +:103200001B7D03920493A6426CDB029B0422181DD3 +:10321000191C27F0F1FF029B013E043B0293F2E7E9 +:10322000009A0132D2B2131C019844339B001B5CFC +:10323000002BF6D0009A571C7F2B07D0CA5C1207D0 +:1032400002D4243B012B01D8FBB289E7731CDBB20B +:1032500004932E4B7D259B195B78FFB20593039B4E +:10326000FF33DA7C1B7D0692C122920094460793BD +:10327000019B63441C1C0293BD4207DB201D211CE3 +:10328000042227F0B9FF013D043CF5E7019BBF0094 +:10329000DF196B461B7CFF377B746B461B7DB51CAF +:1032A000BB746B461B7EEDB2FB746B461B7F3B759C +:1032B000009B9C1C154BE4B29E19B7787D26039B9E +:1032C000FF33DA7C1B7D03920493A6420ADB029B48 +:1032D0000422181D191C27F08FFF029B013E043B9E +:1032E0000293F2E7019BA4001C196B46FF3465743E +:1032F000A7741B7BE3746B461B7C2375009B033315 +:10330000DBB22DE709B0F0BD3A470300BB4803002C +:10331000F0B5002587B00190019AAB00D318029355 +:10332000FF335A7C002A00D12EE17F2A00D155E1DB +:10333000AB496C1C895CC8062AD5DA7C7D260492D0 +:10334000202211404A424A4115218A1A0392C12281 +:103350001B7D92000593019BE7B29C18BE4207DBE0 +:10336000201D211C042227F047FF013E043CF5E705 +:10337000019BBF00DF196B461B7BFF377B7400236B +:10338000BB746B461B7CFB746B461B7D3B75ADE0D1 +:1033900018264E2A02D04F2A23D11B26DA7C7D27FD +:1033A00002920D225A74C1221B7D92000393019B4D +:1033B000E4B29D18A74207DB281D291C042227F030 +:1033C0001BFF013F043DF5E7019AA300D31800223B +:1033D000FF339A746A46127A5E74DA746A46127B14 +:1033E000B1E0502A01D11C26D8E7C90933D0D97CD5 +:1033F000002930D0E4B2211C019844318900095CD5 +:10340000002928D1A91CC9B20391890041180F1CB9 +:10341000FF37787C7F281ED0714E305CC0091AD0EF +:10342000F97C002917D0C1227D26019B92009D18AE +:10343000039B9E4207DB281D291C042227F0DCFE8B +:10344000013E043DF4E71F237B740023BB74FB742F +:103450003B75251C60E76C1C172A12D1597B6A1E2C +:10346000D2B2452901D11B3902E0392902D10D39E7 +:1034700059738DE05A4A525CD20900D1ACE0122255 +:10348000A9E0182A07D15A7B55498A5C7F2A00D8BF +:10349000A2E013229FE0202A05D15A7B3C2A00D0CB +:1034A0009AE0262297E0482A09D15A7D7F2A03D044 +:1034B0004B498A5C92060FD44B225A740CE03C2A8A +:1034C0000AD15A7D7F2A00D186E045498A5C92065E +:1034D00000D581E03F227EE05A7C4149895CC907E2 +:1034E00004D5597B20294BD10C3A74E0029B6C1C0B +:1034F000FF335A7C352A06D15A7B3A498A5C5207F7 +:103500006AD5102267E02A2A1FD1C1227D26DF7CDE +:103510001B7D92000293019BE4B29D18A64207DB3B +:10352000281D291C042227F067FE013E043DF5E713 +:10353000019AA300D3182B22FF335A7400229A74E5 +:103540006A46DF74127A1A7583E72C2A18D1C122D1 +:103550007D26DF7C1B7D92000293019BE4B29D18C7 +:10356000A64207DB281D291C042227F045FE013E48 +:10357000043DF5E7019AA300D318FF332D22DCE7C1 +:10358000452A04D0392A02D00135ECB261E72A1C61 +:10359000111C019843318900114B095C6C1C595C6A +:1035A0007F2919D901320199D2B292008A18FF32CB +:1035B000517C002906D05B5C7F2B0DD9D37C002B7E +:1035C00006D009E0527D7F2A06D09B5CDB0903D040 +:1035D0001E22029BFF335A74E4B23AE707B0F0BDF3 +:1035E0003A470300DB470300F7B501214C1EE4B264 +:1035F000231C44339B001B5C7F2B2CD0554DEB5C74 +:10360000DB0702D40131C9B2F0E7231C013BDBB276 +:10361000002B21D01A1C44329200125C7F2A03D066 +:103620004D4EB25C7F2AF1D99A008218FF32567C47 +:103630007F2E0BD0AF5DBF0603D5474FBE5D76072B +:1036400004D5967C77080136F61996740133DBB2FF +:10365000A342E9D1D6E700239A008218FF32517CB9 +:103660007F2976D03C4D6E5CF40933D04127591C3C +:10367000C9B28C000419FF34667C0194BC467F2ECD +:1036800001D0AF5DBC464024AF5D27420FD1123E52 +:10369000012E01D90B1CDFE70233DBB244339B0060 +:1036A0001B5CEB5C2342F5D0937C013B08E0634656 +:1036B0005B0707D46346DB07ECD5937CDC081B1B58 +:1036C0009374E7E7019B9B7B5A1C9B08D318019AD4 +:1036D0009373DFE71F4C645C21070FD50133D9B228 +:1036E0008B00C318FF335A7C7F2AD3D0AA5C920781 +:1036F000D0D506229A74013A9A73CBE702210E4282 +:103700001BD01C1C0134E4B2211C44318900095C2B +:103710000029F7D001337F2919D00F4D695C890743 +:1037200015D5A4000419FF34A17C49080131A17406 +:10373000947C64080134947409E0E40606D5547B53 +:103740002C5D0C4202D0917C023991740133D9B2C4 +:10375000A0E7F7BDDB4703003A47030070B5041C40 +:10376000FFF78AFB201CFFF737FC231C0022FC33E9 +:10377000011EDA601A61914244D0261C224D113696 +:103780002B68FF36934203D02048311C02F07CF8AE +:10379000201CFFF7BDFD201CFFF7FAFB201CFFF7E4 +:1037A000C5FC201CFFF720FF201CFFF7D5FCC4221E +:1037B000331C9200A1181A78502A06D97F2A07D004 +:1037C000134A144B00211A601CE004338B42F2D1DF +:1037D0002B68002B02D010481EF0BCF9201CFFF70C +:1037E00077FB2B68002B03D00C48311C02F04CF8FF +:1037F000201C1FF0FFFE074B0949186827F014FE34 +:1038000041424141081C70BD6C0100206348030027 +:10381000724803000400002098480300A8480300F1 +:1038200029480300034B82B001AA98331A6002B002 +:103830007047C046882E0020034B82B098331B6827 +:1038400001A8181A02B07047882E0020014B9C3343 +:1038500018607047882E002008B50349034824F0FB +:1038600047FBFCF7D8FCC046260900004CF80200D4 +:10387000064B07B51A1C9C33983212681B6801A9C5 +:10388000521A9A4201D3FFF7E7FF07BD882E0020A6 +:1038900008B50B790349002B00D1034923F0BDF88B +:1038A00008BDC0466B2903006329030037B51D1C02 +:1038B0000023081C00930C1C111C1A1C0133FCF77C +:1038C00093FE064B002C06D02868FEF723FB044B22 +:1038D000002800D1014B181C3EBDC04678CD020027 +:1038E00034CD020010B50B1C041C002906D0054A7B +:1038F000096802609A6B00230DF0B4FD201CFCF7F0 +:103900008AFCC04678FD0200F0B5041C87B0039223 +:1039100002936718002A0ED0023A222A0BD93D4999 +:103920003D4824F0ECFAFCF776FC207802F06AF9C6 +:10393000002803D00134BC42F7D30AE023782B2BB4 +:1039400001D1013405E0061C2D2B03D101340126E1 +:1039500000E00026391B201C03AA1FF0FDFA2318E3 +:103960001D1C00240093BD4210D22B78181C01931B +:1039700002F060F9039B002806D0019A2F3A9A4280 +:1039800002DC019B303B0DE0102B03D0002E19D040 +:10399000644217E02023019A13431A1C613A052A56 +:1039A000F4D8573B201C0399019305F099F900289E +:1039B0001AD1039B5C43019B1C196300634013D421 +:1039C0000135D0E7012364001C43009B9D4216D0C3 +:1039D000BD4206D2287802F015F900280FD0013533 +:1039E000F6E7BD4213D00AE0009B05A80593F91A3B +:1039F000321C039B20F0A4F9059D041CE5E7074950 +:103A00000548039A0DF0C0FC0299FFF76BFF201CDC +:103A100007B0F0BD1449030010F802003749030055 +:103A2000F0B5041C8BB00993431808920193019BD5 +:103A30009C4200D30EE1207802F0E4F8002801D087 +:103A40000134F4E723782B2B02D10134049005E0F4 +:103A500004902D2B0ED12C3B01340493019B9C42EE +:103A600008D3824B002706930023251C07973E1C92 +:103A7000039356E0202322781A43692A2ED1019914 +:103A8000A21C914200D8BEE062781A436E2A00D090 +:103A9000B9E0A2781A43662A00D0B4E0E21DE51C22 +:103AA000914200D8A8E0E2781A43692A00D0A3E046 +:103AB00022791A436E2A00D09EE062791A43692A5D +:103AC00000D099E0A2791A43742A00D094E0E279F8 +:103AD0001343792B00D08FE005358DE06E2AC0D1DD +:103AE0000199A21C914200D88DE062781A43612AA4 +:103AF00000D088E0A27813436E2B00D083E0E51C51 +:103B000000265B4F7BE06B1C02932B781A1C303A2B +:103B10000592092A30D8022E07D10A237B43D718F1 +:103B2000029D019B9D42EED354E0012E15D10598D4 +:103B300017F0C8F8069916F0ADFD011C039816F0B1 +:103B40003BFA0390069818F0F1FE4A4A4A4B18F0E7 +:103B500067F818F03FFF0690E2E74849039816F02F +:103B600099FD051C059817F0ADF8011C281C16F0EE +:103B700023FA00260390D3E7002E02D12E2B02D188 +:103B800026E0022E19D020221A43652A15D1029B65 +:103B9000019A93420BD26B782B2B02D1AB1C029370 +:103BA00005E02D2B03D1AB1C029301230793029B4D +:103BB000019A934247D00226B2E70026089AB24201 +:103BC00009D0202213436A2B05D1029D013602E061 +:103BD0000126A5E70026079B002B00D07F42381C5A +:103BE00017F028F8011C254819F028FF011C03983C +:103BF00016F050FD071C02E0FF270026FF05049B7E +:103C0000002B09D005E0049B002B1CD0251C0026AE +:103C1000002780231B06FF18A54214D0019B9D425C +:103C200006D2287801F0EEFF00280CD00135F5E728 +:103C3000019B9D4207D1002E02D1099B002B0CD085 +:103C40000F48104901E00E480F4924F058F9109927 +:103C5000FFF748FE0023049303E7032302209F435A +:103C60000A4B0743F8180BB0F0BDC046CDCCCC3D95 +:103C70000000C07F9A9999999999B93F0000204115 +:103C800010F802005F4903007C49030000008080B7 +:103C900038B5051C0C200C1C1FF0DAFC024B4560EB +:103CA0000360846038BDC04680CD020010B5041C9E +:103CB0000C201FF0CDFC034B4460036001235B42EA +:103CC000836010BDBCCD020010B5041C0C201FF099 +:103CD000BFFC034B446003600223037210BDC04667 +:103CE000ACCF020010B5041C10201FF0B1FC044B37 +:103CF0000360237A0371636883600023C36010BD8F +:103D000044CF020010B5041C10201FF0A1FC044B8E +:103D100084600360034B43600023C36010BDC04652 +:103D20003CE20200A737020008B504301FF0DFFEB6 +:103D3000004808BD74E00200F8B5041C0D1C0B7AA5 +:103D4000124A9B00995822F068FE1149201C22F06B +:103D500064FE281CFFF7C6FF0126071C381C1FF055 +:103D60002CFD051E0CD0002E03D1201C094922F089 +:103D700054FE201C291C0122FDF7BCFE0026EDE7A5 +:103D8000201C054922F049FEF8BDC04604CE0200C1 +:103D9000964903008B40030099490300F7B50B686F +:103DA0001C4A041C0D1C934203D01B495A6822F084 +:103DB00000FF201C194922F030FE00230127019347 +:103DC000281C01A91FF0DAFC061E15D0002F03D114 +:103DD000201C134922F021FE0122201C3168FDF72E +:103DE00089FE1049201C22F018FE201C7168012257 +:103DF000FDF780FE0027E3E7201C0B4922F00DFEB3 +:103E00002B68044A934203D0201C084922F005FE87 +:103E1000F7BDC04664CE02009C490300A0490300E0 +:103E20008B400300A1870300DD4403001B43030014 +:103E3000002806D001280BD14B68DB085B00184333 +:103E400007E007224B680348934302D1024800E091 +:103E50000020704734CD020078CD020038B5151C23 +:103E60001A1C1C1C00F01CFE002802D04368002B0A +:103E70000ED12B1E08D1094B022C05D10849094847 +:103E800024F03DF8FCF7C7F9012C05D1436003E0AD +:103E9000022C01D100224260181C38BD74E00200DF +:103EA000A2490300F0FD020030B5002585B001A94C +:103EB000041C01951FF062FCA84205D10A490B4879 +:103EC00024F01DF8FCF7A7F9636802A9083B6360BA +:103ED0000368029343680393042328C0022005F07B +:103EE000F1FE05B030BDC046AA490300F0FD020056 +:103EF00073B50C1C151C1B280BD000231F2839D1AF +:103F0000081D111C002200F0CBFD1B4B002831D1F5 +:103F100018E00323194208D10A6818498A4204D1DB +:103F20002B4002D12968914224D0154BAA0721D1F8 +:103F3000144A296891421DD162686B685340072278 +:103F4000934301D00E4B15E00193201C01A91FF0F3 +:103F500015FC061E0DD0281D3168002200F0A0FDC2 +:103F6000031EEFD070685968FDF742FE0028ECD1BF +:103F7000E8E7014B181C76BD34CD020028CE0200C4 +:103F800078CD020064CE0200F0B51368141C012243 +:103F900087B00F680D1C0092D9080223061CFCF79D +:103FA00023FB022E22D103236868034016D1026846 +:103FB000D1682C4A914211D12A68904216D00593BB +:103FC000686805A91FF0DAFB061E0FD0381D31689E +:103FD000012200F065FD73684360F1E704F0C8F862 +:103FE0000390039804F012F9002801D1002526E07F +:103FF00004F0BEF8051C04F009F90290281C04F036 +:1040000005F9061C281C04F001F9029B002B03D0C3 +:10401000002E01D0002805D01349144823F06FFF6B +:10402000FCF7F9F8381D0299012200F039FD4660CD +:10403000D7E7A368EE009959002904D101356368D8 +:104040009D42F6D30AE00429F8D0381D012200F081 +:1040500027FDA3689E1973684360EFE7044807B023 +:10406000F0BDC04629410000C949030010F8020014 +:1040700074E0020010B5041C0C201FF0E9FA034B99 +:10408000446003600023037210BDC046ACCF020041 +:1040900010B5041C0C201FF0DBFA034B44600360D6 +:1040A0000123037210BDC046ACCF020008B5043036 +:1040B000002200F0F5FC002805D10449044823F053 +:1040C0001EFFFCF7A8F8406808BDC046A2490300DF +:1040D000F0FD020008B5024B08C01FF0E9FC08BD66 +:1040E00064CE0200F8B5071C48680E1C04F040F8C6 +:1040F000041CFDF7EBFE0B4D022F00D9B56800281C +:1041000000D040101FF0ADFB061C201C04F07EF810 +:10411000011E05D0301D012200F0C2FC4560F4E70D +:10412000301CF8BD74E00200F0B5071C89B0002017 +:104130001E1C0D1C01921FF094FB0E4B041C07600B +:104140009F4203D10422037913430371019B2B4344 +:104150000DD03368AA00B21805A8019903940493FE +:104160001FF0B8FC681C03A905AAFFF70DFF201C6F +:1041700009B0F0BD28CE020008B5002A02D11FF018 +:10418000B3FB11E0042A0DD10430002200F088FCBA +:10419000002805D10549064823F0B1FEFCF73BF89D +:1041A000406802E01FF096FB024808BDA2490300E8 +:1041B000F0FD020074E002008023044A5B051B69E5 +:1041C000107858438023DB02181A7047F82D00201E +:1041D0008023044A5B051B69107858438023DB0267 +:1041E000181A7047F72D002038B5084DC4012B6808 +:1041F000002118191FF0D4FD2868054B00197F30E5 +:1042000000781B788342F0D238BDC046640100209C +:10421000F92D002010B5C379041C002B08D0064BE3 +:1042200000791B68C00118180130A1791FF0B8FD92 +:104230000023237210BDC0466401002008B5034965 +:10424000034823F05CFEFBF7E6FFC0461A4A030072 +:1042500010F80200021C124B10B518685379DB01EC +:10426000C3181C1C7F342178FF2908D11179C9019A +:1042700041184978FF2910D0907988420DD0917962 +:104280005B1801315878CBB27E2B01D0937106E0D8 +:10429000002393712378537101E00120404210BD47 +:1042A0006401002038B5F8239B021A784D2A01D00A +:1042B0008023DB02802580206D052C69C0026442CA +:1042C00023402C6929691C1B001B15F0C5FB2A4BD8 +:1042D0002A4A18702B69E518AD185B421D40284921 +:1042E000284B294A5B1A9B18802252059D4202D214 +:1042F0001369ED18F3E78020C0021169401B15F027 +:10430000ABFB0122214B641B1870E411204BE4B27B +:104310001C70204B1A6000221F4B5A6059681D4ABE +:104320000029FBD0A123DB00D358DBB2A342F2D299 +:104330001A4901330B7001235360FFF73DFF0378E7 +:10434000051C174CFD2B09D180235B051869154B03 +:10435000C009C018C001281820600BE0FFF738FF23 +:104360000378803DFD2B04D0FFF732FFFD211FF0C5 +:1043700017FD256038BDC046F72D0020FF87FFFFE1 +:104380000000002028010020ACB10300F82D00201F +:10439000F92D002000D00040FCD00040F62D002078 +:1043A00064010020FFFFFF01F0B585B0264E274ACB +:1043B0003478274D201C1378296801330296039224 +:1043C000C201525CFF2A3DD00130C0B2984200D1F8 +:1043D0000120A042F4D1802300275B051B69DB0983 +:1043E0000193E3010093009A2B689E183278301CE9 +:1043F00053425341FF181FF0E9FC002809D0002365 +:10440000019A934218D0DA01B25C002A01D101333B +:10441000F6E7039B01341B78E4B201339C4200D1E0 +:104420000124029B1B78A342DBD1072F02D91FF086 +:1044300066FABBE7FF2005E02868009BC0181FF064 +:10444000BBFC201C05B0F0BDF62D0020F92D00208E +:1044500064010020F7B5071C0D1C01240E4B1B78CE +:1044600001930E4B1E68019B9C4211D8E10171180B +:104470000B78FE2B09D18B78AB4206D10331381C67 +:104480002A1C26F0AAFE002804D00134E4B2EAE790 +:10449000FF2000E0201CFEBDF92D0020640100205B +:1044A00008B5054A03791268DB01D318D81C99783E +:1044B000002207F0B9FC08BD64010020F0B585B00A +:1044C00002900D1C171C039378294DD8FFF7C2FFEB +:1044D000031C041C002F2AD0254EFF2805D032686B +:1044E000C301D01800211FF05BFCFFF75DFF041E25 +:1044F000FF2C05D11F49204823F001FDFBF78BFE5F +:104500003368C0010190FE2118181FF049FC336880 +:10451000019AE9B2981802301FF042FC3068019B02 +:104520000299C01803302A1C00F028FF02E0381C52 +:10453000FF2B1AD00C201FF08BF8039B002B01D00F +:104540000E4B00E00E4B0360094B04711B68447175 +:10455000E4011C19A378C77102338371012303722C +:104560006B461B7B437200E0002005B0F0BDC046E7 +:1045700064010020374A0300C0F9020040CC020069 +:1045800088CC020007B501A908F006F90199FFF7E8 +:1045900061FFFF2805D10549054823F0B0FCFBF772 +:1045A0003AFEFFF721FE03480EBDC04689460300D0 +:1045B000C0F9020074E00200F7B50192027A061C0D +:1045C0000091002A01D1FFF739FEC579002D06D1EF +:1045D000214A17680279D201D25D002A23D109222B +:1045E00001201A60404236E03279D201BA1852787E +:1045F000FF2A24D0D21A944200D9141C019A521BCB +:10460000944200D9141C002C24D0009AC9185019C7 +:104610000131221C26F0F0FDB379E318DBB27E2BCA +:104620000FD0B3712D1971797E24C90179180A1C34 +:104630007F32B3791278E41AFF2ADFD1D4E700245D +:10464000DCE70023B3717379DB01FB187F331B7840 +:104650007371E7E7281CFEBD64010020F0B585B04A +:104660000393037A041C01910292002B01D1FFF7FE +:10467000E5FDC379002B07D02B4A03791268DB01D3 +:104680009B5C029F002B1CD1092341E060793368B9 +:10469000C0011818291C7F301FF082FB3368ED0120 +:1046A000581961791FF07CFB63793268DB01D318FC +:1046B0007F331B786371009A019B94466344019396 +:1046C000BF1A002F29D07E22A3790097D21A9742D1 +:1046D00000D90092144E60793268C0011018C018D9 +:1046E000009A0130019900F049FEA379009AD3188D +:1046F000DBB27E2B13D10023A371FFF755FE051EFD +:10470000FF2DC3D12079FFF76FFD002323721C23F7 +:104710000120039A4042136003E0029801E0A37174 +:10472000C9E705B0F0BDC04664010020002038B5DF +:10473000011C1EF0E4FB0124051C0C4B1B78A3425A +:1047400012D30B4AE3011268D3181A78FE2A08D153 +:104750009978D81C002207F067FB011C281CFCF785 +:1047600089FA0134E4B2E8E7281C38BDF92D0020AD +:104770006401002013B501A908F00EF80199FFF7B4 +:1047800069FEFF2805D10F490F4823F0B8FBFBF75E +:1047900042FD0E4B1C68C301E31859789B78023325 +:1047A000DAB20023C00120187F300078FF2803D040 +:1047B0009B1A7E330022F5E7881AC0181FF09AFA78 +:1047C00016BDC04689460300C0F9020064010020FE +:1047D00008B5024A024B20F079FD08BD55420000A1 +:1047E00015420000FF2310B50324DB05CB18A343BB +:1047F000021C181CA24213D0042A09D00021002A4E +:104800000ED115F0F5FA0749002809D0064907E04E +:104810008022022012069B18A343044A03439918DE +:10482000081C10BD34CD020078CD0200000080804D +:10483000FF23DB0510B5041CC818032386B098437A +:1048400004330093002302A901931022673300F080 +:10485000BFFD02A9201C22F0E0F802A82E2126F0BC +:10486000D5FD00280FD102A8652126F0CFFD002834 +:1048700009D102A86E2126F0C9FD002803D1201C11 +:10488000024922F0CAF806B010BDC046094B030029 +:1048900030B51D1C002385B00C1C0093081C111C96 +:1048A0001A1C0133FBF7A0FE002C21D02868124B04 +:1048B0000340062B06D0032318420DD10F4A01688E +:1048C000914209D103A907F067FF002303990093E0 +:1048D0001A1CFFF7A5F80CE00340022B09D0FDF7E6 +:1048E0003DFA03239843013B1843054BC01800E0F1 +:1048F000044805B030BDC046070080FF80CA0200F2 +:10490000000080800200808070B5051C86B0101CFD +:104910000191FDF723FA041C0390681F182800D9A1 +:10492000B0E015F07BF80D10161B2C37686DAFAF9B +:10493000AFAFAF0D10161B2C3768898E93989D0072 +:104940000198211C54E00198211C15F0D5FF01901D +:104950008FE00198211C15F09DFEF8E7201C002136 +:1049600015F046FA002805D04849494823F0C7FA0F +:10497000FBF751FC01A803A91FF027F879E0201CE0 +:10498000002115F035FA0028EED10198211C15F010 +:104990008FFCDCE7201C002115F02AFA0028E3D167 +:1049A000211C019818F06AFF0021051C019015F0E8 +:1049B0001FFA002807D0039A0023002A01DA802377 +:1049C0001B06019355E00021281C15F017FA431E21 +:1049D00098410124039E404204400021301C15F000 +:1049E0000DFA431E9841E4B2844242D0281C311C87 +:1049F00015F0E2FAABE70198211C19F01FF8A6E7C1 +:104A0000201C002115F0F4F90028ADD101A803A95C +:104A10001EF0DBFF03220220019B1E499343034348 +:104A20005B180493039B934303435B1804A905930A +:104A300005F048F9031C26E00198211C15F0DEF969 +:104A400012E00198211C15F0EDF90DE00198211CF0 +:104A500015F0CEF908E00198211C15F0D9F903E012 +:104A60000198211C15F0E8F90B4B00280BD10B4BDA +:104A700009E00323019A02209A43131C054A0343C9 +:104A80009B1800E00023181C06B070BD4D4A0300BF +:104A90006CFC02000000808034CD020078CD020062 +:104AA000F0B5067887B0B30702D5002A00D0F2E04F +:104AB000F307DB0FDBB20293002B0ED0774B0B40DA +:104AC000062B0AD003230B4003D1754C0D68A54279 +:104AD00002D0012A01D0DEE0029301920D1C041CD9 +:104AE000730749D503688768DE08F600BE19B74228 +:104AF00011D23868A84204D1019B022B00D0A1E05A +:104B00009EE0029B002B04D1291CFDF771F80028C0 +:104B1000F2D10837EBE7019B012B00D0BBE0236803 +:104B2000D9086368994210D104316160A068C90056 +:104B30001EF0A4FD23686268DB08D21ADB00A060C7 +:104B4000D200C018002126F074FB07222068C30899 +:104B5000591CC90002400A432260A268DB004F4989 +:104B6000D3181D60181C0D40062D00D194E00121C2 +:104B700022788A4322708FE04368002B05D1019B85 +:104B8000012B00D087E000F08DF8444B2B400493BC +:104B9000062B04D1E8081DF068FF039005E0022011 +:104BA000291C03F081F9431003930398616814F002 +:104BB000D9FF002600910591009BDF00A368DF1953 +:104BC000386800281AD1019B311C012B63D1206861 +:104BD000C3080133DA000723034013432360002E88 +:104BE00000D1391C00234B60049B0D60081C062B70 +:104BF00052D001222378934323704DE0042803D13F +:104C0000002E21D13E1C1FE0A84203D1019B022BA4 +:104C100018D108E0029B002B16D1291CFCF7E8FFF5 +:104C2000002811D0F2E723686168083B23600098F0 +:104C3000013014F097FFA368C900CB58002B00D0B7 +:104C400004233B60381C27E000986168013014F0B1 +:104C500089FF059A00919142AED1019B012B1AD197 +:104C6000002E0ED023680833236000237360049B5A +:104C70003560062B03D02378019A93432370301CB0 +:104C80000AE0201C00F00EF80398616814F06AFF37 +:104C90000091059190E7002007B0F0BD070080FF6C +:104CA00080CA0200F7B54368041C0193591C002315 +:104CB000174A9A588A4205D204335C2BF8D1012551 +:104CC0000D4300E0151CE800A7681EF0D3FC072385 +:104CD00022686560134001223D1C002623601343B7 +:104CE0002370A060019B9E420DD02968002907D047 +:104CF000042905D0201C0122FFF7D2FE6B68436017 +:104D000001360835EEE7381C1EF0C9FCF7BDC04679 +:104D100048D002000022F8B50768051C8668781C98 +:104D2000114BD358834205D204325C2AF8D10123B7 +:104D3000184300E0181C002428606C6080001EF0FE +:104D400099FCA860BC420BD0A300F158002905D003 +:104D5000042903D0281C01221EF0E8FE0134F1E7EB +:104D6000301C1EF09CFCF8BD48D002007FB5012825 +:104D700003D108680021FCF7D7FE02A810211DF01E +:104D8000CEFE02A809491EF055FB039B0193002BA0 +:104D900006D1042804D1064823F0A4F8FBF73BFA17 +:104DA00002A9044807F00AF807B000BDBF74030069 +:104DB00030FC020080CA020010B510201EF048FC32 +:104DC000041C034B08C021F0C6F8201C10BDC046CF +:104DD00030D3020038B5052827D80D1C14F01EFE6C +:104DE00005250D03141C081C20E0081D21F0DFF927 +:104DF000031E0F481AD00F4818E0081D21F0F6FCDA +:104E000001214000084311E0FFF7D6FF291D041CD3 +:104E1000043021F002FA06E0FFF7CEFF291D041C42 +:104E2000043021F00AFA201C00E0002038BDC04602 +:104E300034CD020078CD020038B5051C83070CD1B3 +:104E4000104B02689A4208D1FFF7B6FF041C291DD7 +:104E5000043021F0D7F9201C12E0281CFCF71AFFBF +:104E6000C0231B06984205D180200021C0051EF0FA +:104E700032FF05E0C317C018584001234000184313 +:104E800038BDC04630D3020038B5051C18F0FAF919 +:104E9000012802D10F48104903E0002805D10F482E +:104EA0000F490CF071FAFBF7B6F9281C1FF054F803 +:104EB000002806D1281C15F09DFE01244000204347 +:104EC00007E0FFF779FF041C291C043021F0C2F829 +:104ED000201C38BD3CFD02005E4A030010F80200B1 +:104EE000774A030007B5C30701D540100DE0043031 +:104EF00001A908F06FFF002801D0019805E00349DF +:104F0000034822F0FCFFFBF786F90EBD904A030030 +:104F10003CFD0200F0B58DB00190012008400D1C51 +:104F2000171C041E07D04B1003A802A9022221F06F +:104F300051F803AE08E003230B4065D19A4A096893 +:104F4000914200D025E12E1DFB0707D57B1003A859 +:104F500002A9022221F03EF803AD1AE003231F420A +:104F600005D1914A3968914201D13D1D11E03B4084 +:104F7000022B00D011E18D4B3B40062B00D10CE100 +:104F8000301C21F086FC3A1C011C0198FFF7BCFC88 +:104F900008E1019B092B01D0162B16D1281C21F00A +:104FA00006F900283DD1301C21F073FC041C281C9C +:104FB00021F06FFC011C201C15F07AF90323022458 +:104FC00098437B4B0443E018ECE0019B182B00D97D +:104FD000BAE0FFF7F1FE041C019814F01FFD6A709F +:104FE0006476760D10171DDC478E946A70647676B1 +:104FF0000D10171DDC478E00201D311C4FE0201DB9 +:10500000311C2A1C21F0EBF9201CCBE0201D311CA7 +:105010002A1C21F025FBF7E7281C21F0C8F80028FE +:1050200002D06448644957E006A8271D20F093FF8A +:10503000321C2B1C381C06A908F076FD2A78337820 +:105040005340DB070ED506A821F0B1F8002809D19E +:10505000012109A8494220F0B3FF381C391C09AAD4 +:1050600021F082F906A820F082FFCDE7281C21F06C +:105070009EF80028D5D109A8271D20F06CFF321C0E +:105080002B1C09A8391C08F04FFD09A820F06FFF60 +:105090002A7833785340DB07B6D5381C391C2A1CD4 +:1050A00021F062F9B0E7201D311C2A1C21F0DFF944 +:1050B000AAE7201D311C2A1C21F059FAA4E7201D63 +:1050C000311C2A1C08F0BCFC9EE7381CFFF70AFFC5 +:1050D000021E05DA39483A4922F011FFFBF79BF826 +:1050E000019B201D311C032B01D0102B02D108F095 +:1050F0003BFC89E721F0D8F886E7201D311C2A1CEB +:1051000021F031FB80E7281C21F051F8002888D1DC +:10511000FFF752FE271D0190321C2B1C0430391C56 +:1051200008F002FD2A7833785340DB0704D5381C99 +:10513000391C2A1C21F018F9019B09A902200993A6 +:105140000A9404F0BFFD2DE0301C291C21F034F836 +:10515000019A031C193A0020042A23D8101C14F0C9 +:105160005DFC0307130B0F001648002B1ADA0EE044 +:105170001448002B0BDC15E01248002B12DC06E073 +:105180001048002B03DA0DE00E48002B0AD10E4820 +:1051900008E0181C06E0002004E00198291C3A1CD5 +:1051A00001F090F80DB0F0BD30D30200070080FF91 +:1051B000000080806CFC02004D4A030010F80200E1 +:1051C000BD4A030078CD020034CD0200A0200B4A76 +:1051D0000B49D36F30B5C0058B4201D1094C01E0BA +:1051E000A124E4001D68055118895B68D3671B89F9 +:1051F000181A002801DC0B89C01830BD882E002049 +:10520000080000200C05000008B5044A044B0220E9 +:10521000DA670449782205F0A5FF08BD08000020E0 +:10522000882E0020CD510000F8B5144BC218144B45 +:105230009A421FD8134B051118681E1C002801D173 +:105240001D8119E01EF0A7FDA0220F4B3168D20589 +:10525000D15037897468B44207D02089391C68431B +:1052600014F08AFC20816468F5E72581FFF7CCFF04 +:10527000002001E001204042F8BDC04618FCFFFFBD +:10528000583E0F00080000200C050000014B188953 +:105290000001704708000020334BF7B5051C994208 +:1052A0005ED80120314AA840161C5368B34205D08D +:1052B0001F68074204D11A1C5B68F7E7002310E05F +:1052C000C44327401F60A0270194294CFF05385193 +:1052D0003068019C0440346018680028EED158689A +:1052E0005060002081423DD0204A4900148901319C +:1052F0006143C912814200D10121081B4742474145 +:105300006DB2C91B641A291CA0200326C131FF31CC +:105310008900C0050E500120A840051C161C10680D +:1053200051682843A4B210600889914204D0A04279 +:1053300002D20E1C4968F7E7A04203D10B681D4357 +:105340000D600BE0002B04D1191C0C2001F08EFD28 +:10535000031C72681D605A601C817360002001E0AC +:1053600001204042FEBDC046FF03000008000020AF +:105370000C05000000487047F0D00200F8B50D1C85 +:10538000061C141C05F03AFE2B1C032733433B423A +:105390000BD1BC4209D9A208301C291C13F03EFFD6 +:1053A000231CBB43F618ED183C40002C04D0301CE5 +:1053B000291C221C25F060FD8023044ADB00D35801 +:1053C000002BF9D005F00AFEF8BDC04600E0014010 +:1053D000F0B58BB0079310AB80CB041C01911B7808 +:1053E000062A11D8012A05D93F230B700B1C013363 +:1053F000019301E0002A02D0002301990B700123E0 +:105400009342AD4168423BE2002809DA019B0199D1 +:10541000013300932D230B7080231B06C41807E073 +:1054200001990091002B03D00131009101990B707B +:10543000FF21C905081C019B20400993231C8842B9 +:105440001FD12023079A00991A40131C64024E2290 +:10545000CD1C002C09D100985A40492142704622A7 +:10546000594053400170837007E000991A430A7055 +:1054700041214B4000994B708A7000232B70019B97 +:10548000D0E1002F00DA0627551E0099019A521A22 +:10549000AD182022079911430291672903D1002FEB +:1054A00012D1012710E0002B1DD1029B662B0DD1DC +:1054B0007B1CAB4200DBAF1E6623039300237D1CE5 +:1054C000049305931E1CE9E0002B0CD17B1DAB421D +:1054D00000DBAF1F029B652B00D0CDE003933A3B6E +:1054E00000250493CCE0B64A934271D8201CB549FC +:1054F00014F0A2FC431E9841002620233030059072 +:1055000004930396B04B211CF05814F08BFC002838 +:105510000AD0049A039B944663440393AB4B201C2C +:10552000F15815F0B7F8041C049B04365B10049383 +:10553000182EE7D12D230493A14B039EA34213D32E +:10554000201CA04914F078FC002804D0002E09D1BA +:105550002B23049306E0201C9D4915F09BF801368F +:10556000041C01E0FE24A405029B662B03D0672BDC +:1055700024D1042E22DC6A46009B127D1A70029B05 +:10558000672B01D1731EFF187B1CAB4200DBAF1EE3 +:10559000002F00D155E12E23009A3D1C5370131C9F +:1055A0000233013E0093002E6DD0002D04D0302236 +:1055B000013D1A700133F4E7049565E06B1FBB42AF +:1055C00000DD48E1029A672A63D0AF1F131C62E036 +:1055D00000262023039604937C4B211CF05814F0E2 +:1055E00017FC00280AD0049A039B94466344039353 +:1055F000754B201CF15815F04DF8041C049B043623 +:105600005B100493182EE7D1201C7149039E14F0FF +:1056100013FC002805D0201C6E4915F03BF801361C +:10562000041C029B662B0AD1AE420BDAF31901333C +:10563000AB421ADBAD1BAF1E17D56F1E15E0029BE8 +:10564000652B05D16B1FBB4200DDEDE0AF1FEBE02A +:10565000029B672B00D00CE13B1DAB4200DB6F1FB0 +:10566000BE4200DBE7E0F343FF180023BD190493BB +:10567000013505966633DCE00025029B0495039313 +:1056800005952E1C0AE0049601235B4205936733BF +:10569000CFE01F1C029B002503930595FB43DB17FE +:1056A0001F40039B652B01D17D1C06E0039B672BEC +:1056B00003D13D1E01D101252F1C00230693069B1B +:1056C000AB4225DA201C15F095FA009B009A0133B5 +:1056D0000893031C30331370059B069A934207D13D +:1056E000002F05D0009B009A023308932E2353709D +:1056F00015F0A0FA011C201C15F0FEF8344914F036 +:10570000C9FF069B041C01330693089B0093D6E750 +:10571000029B009D662B02D1012E62DCA1E0201CC1 +:105720002D4914F089FB00283FD0009B013B1A78DB +:105730002E2AFBD0111C3039092902D901330193DB +:105740000AE0392A03D0013201931A7004E03022B2 +:105750001A70019A9342E9D1019B1B78302B1CD11E +:10576000019A52782E2A0BD10399662908D0019903 +:105770004B70049B0A702D2B01D1013E00E00136D5 +:10578000009D01352B1C019A934204D95A1E1178B1 +:105790001970131CF7E731231370094B9C4204D88E +:1057A000039B663B5A425341FF1A029B672B18D159 +:1057B000002F16DD6B1E1A78302A0FD11D1CF9E759 +:1057C000FFFF7F3FF8FF7F3FC0D10200A8D102005A +:1057D00000002041CDCCCC3D0000A0402E2A00D1BD +:1057E0001D1C049B002B1AD02023079A0A211A4063 +:1057F000131C452213432B706B461B7C301C6B70B3 +:1058000014F0BAF90A2114F09DFA3031A970301C55 +:105810000A2114F097FA2C1D3031E970251C002361 +:105820002B70099BE81A2BE02B2300250493059588 +:105830003A33039332E7672303933C3B00250493F9 +:105840002BE7009B04970133009301235B420593F0 +:105850006733039303E0029B039300230593002522 +:105860001FE7201C074914F0E7FA002800D05CE786 +:10587000B7E7029B002503932B230595049310E7BC +:105880000BB0F0BD0000A040F7B5061C194D0C1C74 +:10589000281C1CF05FF9311C17481CF089F81748C8 +:1058A0001CF058F916481CF055F9FF239B00E61828 +:1058B00021787F2916D0B44214D0627850290BD8B1 +:1058C000104B11485F5C114B5B5C0092A278019217 +:1058D0003A1C1CF06DF803E0A3780D481CF068F842 +:1058E0000434E5E7281C1CF035F90A481CF032F9AD +:1058F000F7BDC0460C4B0300394B0300414B03007E +:10590000174C030098460300624B0300E94603006E +:10591000854B0300354C0300F0B51D1C89B0069083 +:105920001B48161C07911CF015F9291C19481CF07E +:105930003FF819481CF00EF918481CF00BF9002428 +:10594000AC4220DA079BA0001818C778069BBC461B +:105950003F073F0F195D82780378009707889B0601 +:10596000FF047F0E019767463F09029700681209FE +:105970000003400E0390305D9B0E049008481CF01D +:1059800017F80134DCE702481CF0E4F809B0F0BD78 +:105990000C4B0300A64B0300D34B0300054C030044 +:1059A000374C0300F0B5456887B00393AB6805A892 +:1059B0000F1C029205931FF011FD061C05A81FF095 +:1059C0000DFD0323321C58430932101880001DF0CE +:1059D0003FFE041C094BAA6803606B68291C4360E6 +:1059E000059B06629B1AC360039B083000933A1C18 +:1059F000029B05F061F9201C07B0F0BD20D2020027 +:105A000038B5051C88680C1C1FF0AEF80349021C51 +:105A1000231C281C21F0CDF838BDC046594C03008A +:105A200010B5041C08201DF013FE024B44600360F7 +:105A300010BDC046D8D10200F8B5041CC0680E1CC9 +:105A4000002801D118602FE0201C111C6269203051 +:105A50001D1C824208D1154A964206D014491548A9 +:105A600022F04DFAFAF7D7FB1660201C124E63683D +:105A70000830776873600BF043FD7760012806D02B +:105A80000023E360022809D063691B680BE06369A7 +:105A90001B682B60002B07D1E36005E0236A073306 +:105AA0009B00E41863682B60F8BDC04674E00200F8 +:105AB000774C030000FD0200882E002013B501ABD7 +:105AC000141CFFF7B9FF01280DD0184C02281CD078 +:105AD000019BA34228D0002B26D0012101AA144803 +:105AE00022F0FAF90DE0002C0DD0201CFBF7E8FFA6 +:105AF000104905F0FFFF002805D00F480F4922F09C + +:105B0000FEF9FAF788FB01980FE00198FBF7D8FF40 +:105B1000074905F0EFFF002801D10198F1E701984E +:105B20000BF012FCA042F8D1002016BD74E0020078 +:105B3000BCFA0200B4FD02004CF80200AD4C0300B8 +:105B400010B50C1C022801D1486800E0886802F0FA +:105B5000D7FF0649021C2068FFF7B0FF002804D1D8 +:105B6000034822F0BFF9FAF756FB10BD74E00200BB +:105B7000BCFA020008B50022FFF7A0FF002804D1FC +:105B8000024822F0AFF9FAF746FB08BDBCFA020062 +:105B900008B502490022FFF791FF08BD74E002003A +:105BA00013B5124C124A211C01ABFFF745FF012827 +:105BB00002D0022805D017E00E490F4822F09FF9C5 +:105BC00010E00198FBF77CFF0C4905F093FF0028DB +:105BD0000AD10198FBF774FF094905F08BFF0028F3 +:105BE00002D10198FAF717FB201C16BD74E00200E1 +:105BF000CCF80200AD4C03004CF80200B4FD0200EA +:105C0000BCFA020000237F2803D8034B1B5C9B07D0 +:105C1000DB0F181C7047C046CD4C030000237F28C3 +:105C200003D8034B1B5C1B07DB0F181C7047C046D7 +:105C3000CD4C030000237F2803D8034B1B5C5B077C +:105C4000DB0F181C7047C046CD4C030000237F2893 +:105C500003D8034B1B5C5B06DB0F181C7047C04668 +:105C6000CD4C030000227F2808D8054B0132195C77 +:105C70000C23194202D15F3842424241101C704746 +:105C8000CD4C030000237F2803D8034B1B5CDB06AD +:105C9000DB0F181C7047C046CD4C030000237F2843 +:105CA00003D8034B1B5C9B06DB0F181C7047C046D8 +:105CB000CD4C0300F8B50327041C381C0E1C5043C0 +:105CC000151C1BF02FFA0121331CA022B140C13357 +:105CD000FF33D2059B006060267065809F50094BA2 +:105CE000D1500022AA420CDA0323002153436068FA +:105CF0000132C1546068C01841706068C31899705F +:105D0000F0E7F8BD0C0500000122F0B50378A021F2 +:105D10009A40131C894AC905051C85B08B50322056 +:105D20000138C046C046C046C046C046C046C04610 +:105D3000C046C046C046C046C046F1D1EFF3108110 +:105D4000019172B60020698802910299884200DBB5 +:105D500007E1032141436C686118CC1C0394A02423 +:105D6000A1260F78E405FF09F600002F0BD0A35100 +:105D7000C046C046C046C046C046C046C046C046F3 +:105D8000C046A3500AE0A351C046A350C046C04637 +:105D9000C046C046C046C046C046C0460C78A12793 +:105DA000A446A0246646E405FF00E35176060AD522 +:105DB000C046C046C046C046C046C046C046C046B3 +:105DC000C046A35009E0C046A350C046C046C046E6 +:105DD000C046C046C046C046C0460C78A127A4466F +:105DE000A0246646E405FF00E351B6060AD5C04686 +:105DF000C046C046C046C046C046C046C046C04673 +:105E0000A35009E0C046A350C046C046C046C046A5 +:105E1000C046C046C046C0460C78A127A446A02470 +:105E20006646E405FF00E351F6060AD5C046C046C3 +:105E3000C046C046C046C046C046C046C046A35045 +:105E400009E0C046A350C046C046C046C046C04652 +:105E5000C046C046C0460C78A127A446A02466468A +:105E6000E405FF00E35136070AD5C046C046C046E8 +:105E7000C046C046C046C046C046C046A35009E022 +:105E8000C046A350C046C046C046C046C046C046F5 +:105E9000C046C0460C78A127A446A0246646E40567 +:105EA000FF00E35176070AD5C046C046C046C0464B +:105EB000C046C046C046C046C046A35009E0C046E2 +:105EC000A350C046C046C046C046C046C046C046B5 +:105ED000C0460C78A127A446A0246646E405FF002E +:105EE000E351B6070AD5C046C046C046C046C046C4 +:105EF000C046C046C046C046A35009E0C046A350B5 +:105F0000C046C046C046C046C046C046C046C04661 +:105F10000C78A127A446A0246646E405FF00E351BF +:105F2000F6070DD5C046C046C046C046C046C0466E +:105F3000C046C046C046A3500CE0C0460C05000059 +:105F4000C046A350C046C046C046C046C046C04634 +:105F5000C046C046039C0131A14200D0FFE601309B +:105F6000F3E6019B83F3108805B0F0BD30B58DB02A +:105F7000051C6846FAF734F9011E0ED12A1D0120CE +:105F80001EF008FD0122EB68041C5B1001335B006E +:105F90001343EB60FAF73AF90AE00198064A0368FE +:105FA0000024934204D0054A934201D0FAF733F912 +:105FB000201C0DB030BDC046BCFA02006CF90200D6 +:105FC00010B5041C10201DF043FB044B0360236834 +:105FD0004360636883600123C36010BD9CD20200EC +:105FE000F0B500270D1C85B003901E1C081C104B3B +:105FF000111C00970222FAF7F7FAA81C80001DF086 +:1060000027FB039B041C03606B1E3D1C0393436032 +:1060100033688360039B9D4207D20135AF00F0597E +:1060200002F0A6F8E719B860F4E7201C05B0F0BD4F +:10603000FFFF00007FB54B680E1C5C106846211CFA +:106040001CF084FD029D0021281C221C25F0F1F883 +:1060500001213068014004D1221C2B1C1DF022FEBE +:1060600008E0042C00D9042443100021201C2A1C21 +:106070001EF0AEFE6946024805F0A0FE04B070BDF9 +:1060800048EF0200F0B5002585B0081C0C1C1E1C52 +:10609000111C00952A1C0223FAF7A6FA0120AC4233 +:1060A0003FD0844228D1306820423AD103230340B4 +:1060B000AB4203D11C4A0168914232D01B4A0240D4 +:1060C000062A06D0002B0BD103689A69184B9A4216 +:1060D00006D103A906F060FB00220399131C18E007 +:1060E0000323021C1A40022A16D1FF22D20580186F +:1060F0009843FEF7C9FE14E003A9306806F04CFB94 +:10610000071C7068039CFBF7C5FD211C021C2B1C9F +:10611000381CFDF7F9FB04E0FBF7BCFD0123400050 +:10612000184305B0F0BDC04630D30200070080FF21 +:1061300079CD0000F0B58DB0099214AA1278041C34 +:106140000B9215AA12780F1C0892DA0700D494E07B +:10615000181CFBF79FFD002305900793002803DA26 +:10616000434205932D230793129B0026023B1E2BCF +:1061700016D8524B129A2020995C13F06DFC089BA4 +:10618000C5B2B34204D0681C032113F065FC061CA1 +:106190001398002801D025F051F90335AE193618AF +:1061A0003B689E4204D9301C1DF052FA20603E60CC +:1061B00023689F19069300237D1E2B70059B002BDF +:1061C00003D1023F30333B7033E00A9505981299B2 +:1061D00013F0B8FD0F1C0598129913F0CDFC3B1C71 +:1061E00005903033092F02DD0B9B0A3BFB186F1E15 +:1061F0003B70089B002B16D0059B002B19D0069BEB +:106200009F4216D90A9BDB1B032B01D03D1CDDE707 +:106210006B4620229B181B78AF1E3B70069B9F424B +:1062200007D90A97F2E7069B9F4202D9059B002BEC +:10623000ECD1139B002B0ED0181C25F0FFF8069B09 +:10624000381A984207D90023139AD25C002A2ED01C +:10625000C2540133F8E7079B002B06D0069B9F42F0 +:1062600003D96B461B7F013F3B702368381C9E1986 +:10627000F61B099B013E1E601EE09A0710D1104AD2 +:10628000196891420CD1129A391C0092139A01920A +:106290000B9A0292089A0392099A1DF0DAFC0BE01D +:1062A000002322681370099A2068136004E0079B9A +:1062B000071C002BD5D1D8E70DB0F0BD4D4D030024 +:1062C00030D3020010B50C1C1449031C8A4202D1C1 +:1062D000211C01221EE012498A4202D1211C032204 +:1062E00018E00020072B17D10E4B1340062B0ED0C1 +:1062F000930711D113680C498B4208D00B498B428C +:1063000005D00B498B4202D00A498B4204D1111CA3 +:106310000720221C01F0BAFF10BDC04678CD020054 +:1063200034CD0200070080FF80CA020048EF02005F +:10633000BCDC02009CC6020070B5061C081C1CF0E8 +:1063400068FC051C1DF02EFB041E06D108492A1C02 +:1063500008480BF019F8F9F75EFF301C1EF00DFC31 +:10636000031C0121201C1A1C02F066FC70BDC046F3 +:106370006E4D0300B8FB020010B5041C1CF049FC74 +:106380001EF011FC031C012083420CD00649201C86 +:106390001CF05BFC201C1CF03CFC1EF004FC0238D2 +:1063A00043425841400010BDBF4D0300F0B59DB0C1 +:1063B00000AF0C68032807D9CB680025FB600428D0 +:1063C00005D00D696D1002E00025A24BFB601C2377 +:1063D000201CF91806F0E0F97861002D56D09E4C8B +:1063E0006E216068FDF762FE061C6068962100223F +:1063F0000430FEF755FB1823FA18D118041C301C82 +:1064000006F0CAF93B6B011C013DC018002C0CD1F1 +:1064100088420AD9013803782E2BF9D105E0884249 +:1064200003D9013803782E2BF9D1013DF7D2FE694B +:10643000441A251C002E01D0751C2D192B1C6A46F0 +:106440000E33DB08DB00D31A9D46181C221C3B616F +:1064500024F0D2FE002E08D02E233A697969135514 +:1064600001341019321C24F0C7FE3869291CF9F7D1 +:106470007BFF012804D17949794821F040FD5FE094 +:1064800006243B69C0000443FD617B61201C05F0CC +:10649000EDFC02F007FE051E15D02E21786924F0D0 +:1064A000B5FF011C281C002900D1D0E0694BFA6817 +:1064B0009A4200D0CBE07B69C91A181CF9F754FF47 +:1064C00002F0F0FDC3E018220823BA18D0181033E8 +:1064D000FA184021D2181CF041FB0126BD603D6135 +:1064E0002C1C04E07B699B5D2E2B05D00136FB69DB +:1064F0009E4200D9A5E0F5D1311C7869F9F734FF47 +:1065000018220823BA183860D0181CF050FB182243 +:106510000823BA18002815D1D018321C79691CF04C +:10652000DDFA18220823BA18D018FFF725FF786083 +:106530007B68002B13D14A484A493A680AF024FF85 +:10654000F9F769FED0182F21F9F7E4FF7B693A6962 +:106550001820991808233818B21AC018DFE73868CD +:1065600002F0A0FD041E57D1386802F061FDFB69FE +:10657000041C9E4208D13C4BFA689A4204D18068C0 +:106580006E215E221DF0A6F97B68012B3DD11822F9 +:106590000733BA18D0181CF003FB18220823BA18C6 +:1065A0007860D0181CF003FB0022011C786805F00D +:1065B0003BFC1221021C201C01F0B6FD182208230E +:1065C000BA18D0182F21F9F7A5FF18220823BA18F6 +:1065D000D01826491CF039FB18220823BA18D01805 +:1065E0001CF017FB1EF0DFFA022806D11822082340 +:1065F000BA18201CD118FFF79FFE18220823BA18DA +:10660000D0180C211CF060FB06E018220823BA18F1 +:10661000201CD118FFF790FE002D0AD03A697B6943 +:10662000B11A9818F9F7A0FE221C011C281C01F0D1 +:106630007BFDBB68002B00D1BC60731C3B61251C3B +:1066400054E7044BFA68201C9A4200D1B868BD4652 +:106650001DB0F0BD74E00200882E0020834D0300C1 +:10666000B8FB0200A24D030078CD0200B74D030035 +:1066700010B5041C08201CF0EBFF024B44600360C3 +:1066800010BDC0469CD302000F22114008B5031C68 +:10669000081E03280ED813F0C1F90204090D181CB6 +:1066A0000BE00648002B08D1054806E0181C1DF039 +:1066B00021FB02E0181C1DF038FB08BD34CD0200A0 +:1066C00078CD0200F7B5002805D13A493A4A3B484F +:1066D00020F06FFA6BE00D68281CFBF7F1F94368B6 +:1066E000061CEF2B04D16D68281CFBF7E9F9061C8A +:1066F00000233349DA005058854203D18A182F48C5 +:1067000051680AE00133602BF3D12C4C2D4B201C37 +:106710009D4201D09E4203D12B4920F07EF946E0F4 +:106720002A4920F046FA281C0021FBF7FDF9201C1D +:106730002749726820F03DFA264B9E4203D1281C5F +:106740001EF01BFA0CE0244B9E4200D0351CA86BB7 +:1067500000282CD083072AD1204B02689A4226D1E8 +:106760001DF0CBF80025061EAE4220D073689D4276 +:106770001DD2B268EB00D3181F68002F15D05B68DC +:106780001749201C019320F014FA381C0021FBF754 +:10679000CBF91449201C20F00CFA01980021FBF7DA +:1067A000C3F9201C104920F004FA0135DEE70F4838 +:1067B000FEBDC046C7A40300C34D030010F0020095 +:1067C000D8D30200780303003A5203005652030064 +:1067D0005E52030028D902006CEB020064CE020076 +:1067E000CCA703006E5203003F4B030074E002008D +:1067F00038B5151C041C1DF038FC2A1C201C02494D +:106800001DF0E4FB38BDC0464D40020038B5437969 +:106810000D1C0024032B06D9836A074C9200E41A4E +:10682000C369D358E41803211DF010FC44702412EE +:106830000570847038BDC046FD7F0000F8B50023A8 +:10684000041C617183608371E260036101330F1C7A +:10685000151C4361032906D80121836949429A0026 +:10686000C06924F0E6FC0023A36223622A8C6B8CAF +:10687000D3180122002B00D01A1C364E201C311CCC +:106880001DF0A4FBAA8C201C311C1DF09FFBE368AB +:10689000201C197E1DF0D3FBE368201C997E1DF09F +:1068A000CEFBE368201C197F1DF0C9FBE368201CA8 +:1068B000997F1DF0C4FB042F07D1636A226A201C54 +:1068C0009A1A311C1DF082FB03E0201C02211DF0EE +:1068D000AAFB311C201C2A691DF078FB311C201CEE +:1068E000EA681DF073FB00262B8D9E420BDAEA6AE4 +:1068F000F300D3181A78032A03D19978201C1DF0CD +:10690000B4FB0136F0E7201CFF211DF0AEFB042F85 +:106910001FD10022698BAB8BC9188A4219D0002085 +:106920002E8DB0420CDAEF6AC300FB185F78FF07C8 +:1069300004D55F88974201D15B6802E00130F0E73F +:1069400002230626DB003343666B9000835101323D +:10695000E3E7F8BD2740020013B54379012B2FD0A0 +:106960008268041C002A03D01648174920F021F938 +:10697000201C00211DF063FB6379032B13D1226AD5 +:10698000D01C9843A36A20626062E362C0181CF0C6 +:1069900071FEE3682063588B9B8BC01880001CF04D +:1069A00069FE60630CE0042B0AD1E368616AE26A65 +:1069B0005218197E00915869216B636BFCF7A6F998 +:1069C00013BDC04610F00200D4730300224BF7B58C +:1069D000A0331B68022B3ED84469A1423BD9051C59 +:1069E000836A026901919E1A0C1B331C23432ED02B +:1069F0000096062C10D81F2E01D91F230093271EA6 +:106A0000032F00D90327281C01211DF00CFB009A3D +:106A10007B011343037016E00F2E01D90F2300935F +:106A20000E4B271E9F4200D91F1C0221281C1DF05F +:106A3000FAFA8023702200995B4219433B09134004 +:106A40000B4303704770009BE41BF61ACDE7AB6A5B +:106A50002B61019B6B61F7BD882E0020FF070000B2 +:106A600038B5041C0D1C01211DF0CFFA201C0F2D80 +:106A700005D0102D05D010210E2D06D102E01121D8 +:106A800000E012211DF0F1FA0DE017211DF0EDFAE2 +:106A90000322A36A201C03339343A36204211DF045 +:106AA000D5FA014B036038BDCCEF0200F8B5061CE7 +:106AB0000D1C141E124F11D1111C1DF0A6FA8023BB +:106AC0001B021D4203D0301C32211DF0CEFA2A1CBD +:106AD000301C3A403521FFF799FE0FE03A1C0A407E +:106AE0004621FFF793FE80231B021D406A1E95413D +:106AF000ED012C43E1B2301C1DF0B7FAF8BDC046E1 +:106B0000FF7FFFFFF7B52E4B2E48191CFC31CA6BD7 +:106B1000824254D9043ACA63191C1268A4310F681E +:106B2000501C84083E5D051C032425406D002E4149 +:106B3000811A34400130022CF3D0AC331B681201AF +:106B40009B180901019389080029DCD0019B1B686F +:106B50001A072FD11A48041CAC342468A34229D345 +:106B6000051CB0352D68AB4224D2051C1B1BDC175D +:106B7000240FE318A4351B112E689C0836191D1C20 +:106B8000032425406D00AC46377862463D1C154114 +:106B90002540012D0ED194403C433470061CFC3638 +:106BA000F46B094FBC4203D2201DF063236001E067 +:106BB000B4300560019B013904330193C4E7F7BD8C +:106BC000882E0020402F0020C02F00200F23994343 +:106BD00070B5061C0D1C081A412112F03DFF104C27 +:106BE000021C231CA8331860231C211CA4331E6024 +:106BF0008301EB1AAC310B60231C301CB033002135 +:106C00001D6024F016FB221C0023FC325364221C5E +:106C1000FE32D38701223F33FF33E25270BDC046BC +:106C2000882E0020024BFE33DA8F0132DA8770475C +:106C3000882E0020024BFE33DA8F013ADA87704744 +:106C4000882E0020034BFE33D88F431E9841C0B2DC +:106C50007047C046882E0020F7B5002400900191AF +:106C6000019B9C4238D0009AA300D3581A072FD119 +:106C70001A4A111CAC3109688B4229D3101CB03060 +:106C80000068834224D2101C5B1AD917090FCB1855 +:106C9000A4301B11066899087618181C03210840B7 +:106CA0004000844637786546381C28410840012852 +:106CB0000ED1A94039433170161CFC36F16B084FD8 +:106CC000B94203D20A1DF2630B6001E0B4321060D6 +:106CD000FFF718FF0134C3E7F7BDC046882E002038 +:106CE000C02F002008B5FFF79DFF06480022031CB7 +:106CF000B4331A60031C044AFC332621DA63FFF71D +:106D0000ABFF08BD882E0020402F0020F8B52C4C8A +:106D10000025221CB4321368AB4221D0231C15601D +:106D2000284AFC33DA63231CA8331B689B009D426E +:106D3000EDD2221CA4321268AB08D15C03232A1CBA +:106D40001A40520011410B40032B07D1221CFC3288 +:106D5000D36B191DD1631D60FFF7D4FE0135E2E747 +:106D60001E1C221CA83212689200934221D2211CC0 +:106D7000A43109689A088A18032011781F1C0D1C79 +:106D800007407F003D410540022D05D0854209D0D6 +:106D9000012D0CD12E1C01E0002E08D0B8408143FB +:106DA000117004E00220B8400026814311700133C5 +:106DB000D7E70023FC346364FFF73CFFF8BDC0460F +:106DC000882E0020402F0020274AF0B5131C111CEC +:106DD000B033AC3109681B685B1A111C03600023D7 +:106DE000A8310C68191CA432156843608360C36025 +:106DF00003614361A400A1422FD08A08AE5C032244 +:106E000094460A405700321C66463A413240012AF5 +:106E100012D8012B03D1C6680136C66004E0022BEC +:106E200002D10669013606614669B34200D9436161 +:106E3000012A0CD0002A06D0022A0CD14268013364 +:106E40000132426007E083680133836002E04368F7 +:106E500001334360131C0131CDE743681B014360DC +:106E600083681B018360F0BD882E0020F7B5404D7C +:106E70000F302B1CFE33DC8F0609002C01D00020C4 +:106E800075E0002EFBD09F235B00E95A4B4259412D +:106E90002B1CFC335A6C2B1CA8331B6801932B1C36 +:106EA000A4331868019B9A4228D2835C9F0704D1BF +:106EB0000134B44202D3920026E000240C273B4266 +:106EC00005D10134B44203D3920001321CE0002406 +:106ED00030273B4205D10134B44203D39200023241 +:106EE00012E000243F27BB4305D10134B44203D351 +:106EF0009200033208E000240132D3E70029BED11A +:106F000002F0ECF90121C3E7131B591C012C04D139 +:106F10002E1C541CFC36A40874648C08001903242D +:106F200001260C406400A640341C0678023334432A +:106F3000047093420FD82C1CA43424689808241899 +:106F400003200226184040008640301C267801337A +:106F500030432070EDE7AC352C680B010132E418AA +:106F6000521A1201201C002124F063F9201CFEBDDE +:106F7000882E0020224B70B51A1CFE32D28F002AB8 +:106F80003DD102073BD11A1CAC321268904236D375 +:106F9000191CB0310968884231D2801AC217120F09 +:106FA00010181A1CA432001112688108555C041CC8 +:106FB00003221440640025412A40012A1FD11A1CD3 +:106FC000FC32546CA14200D251641D1CA4352A68C5 +:106FD000840814190322011C161C114049008E401C +:106FE000311C267801308E4326702C688108645C41 +:106FF000011C114049000C412240022AE5D070BD1D +:10700000882E0020031C0F2070B518402AD1164A84 +:10701000111CAC3109688B4225D3141CB034246890 +:10702000A34220D25B1AD917090FCB18A4321B1127 +:1070300015689A08AC5C191C0322114049000C41E8 +:107040002240012A0FD15A1C91086E5C141C0321A6 +:107050000C4064002641D01A314001320229F3D09D +:10706000000100E0002070BD882E0020F0B55B4FCD +:10707000051C3B1C0020FE33DB8F85B0834200D013 +:10708000A9E001920E1C854204D1081C291CFFF7BF +:10709000EDFEA0E0002900D199E00F22181C2A4043 +:1070A00000D098E03B1CAC331B68101C9D4200D202 +:1070B00091E0391CB03109688D4200D38BE0EB1AA6 +:1070C000D917090FC9183B1CA4331B680911009379 +:1070D00000988B08C35C0324081C20404000034137 +:1070E000101C1C40012C76D1331C9446A8373868FC +:1070F0000F3380001B0902904F1C029A97421AD24C +:107100000098BA08825C381C039203221040039A4C +:1071100040000241101C03221040022801D101341A +:1071200007E0002807D101229444624612199A42CE +:1071300001D20137E1E7A3423AD01AD2CB181E1C84 +:107140000C192649A6420DD0A4310F68B208BF1809 +:107150000320321C0240520090403A7801368243AC +:107160003A70EEE7FC314A6C9B08934220D24B64A4 +:107170001EE06246A21893421CD86218C8188242C8 +:107180000FD216489608A4300068022786190320FB +:10719000104040008740381C377801323843307047 +:1071A000ECE71A1B240112012819002124F041F8F0 +:1071B000281C10E0019800280DD0301C0021FFF79A +:1071C00055FE061E07D02201291C24F015F8281CA4 +:1071D000FFF7D0FE301C05B0F0BDC046882E002061 +:1071E00010B58AB004A8FFF7EFFD069B094C039386 +:1071F0000093049A059B201C07491FF0DAFC099BA9 +:10720000201C039300930549079A089B1FF0D1FCAB +:107210000AB010BD10F002000074030023740300D4 +:10722000F8B53F4D3F4E2B1CAC33301C3E491A681D +:107230001FF0BFFC00242B1CA8331B689B009C4242 +:1072400024D2A20632D12A1CA4321268271C9446EA +:107250006146BA08895C03203A1C02405200114181 +:10726000014202D101379F42F2D33A1B7F2A12D941 +:107270009209301C2D491FF09CFC3C1C3F239C4371 +:107280002B1CA8331B689B009C4204D3301C28494C +:107290001FF0C3FBF8BD2A1CAC3212682301D218C0 +:1072A0001203120B301C23491FF083FC2A1CA4324A +:1072B0001268A308D15C0322231C13405B00194110 +:1072C0000B1C13407132022B23D0073A032B20D022 +:1072D0002E22012B1DD12B1CAC331B682201D3584D +:1072E000154954228B4214D01449083A8B4210D0CD +:1072F0001349083A8B420CD0124902328B4208D013 +:107300001149043A8B4204D010490B328B4200D011 +:107310001B32301C0E491FF04CFC01348BE7C04679 +:10732000882E002010F002005774030072740300CE +:107330003F4B03008E740300BCDC02009CC60200BD +:1073400064CE02000CD00200C0D8020028D902008E +:1073500093410300F0B593B0061C06A80F1C141C43 +:10736000F8F73EFF051E23D13368311C012603A820 +:107370003A1C0193FAF70CF8A3082A1C3340019930 +:1073800003A808F017FF051C03200CF069FD281C5A +:107390001DF0F1FA012040420CF062FDF8F736FFD3 +:1073A000344203D01348311C0CF08EFD012518E047 +:1073B000012040420CF054FD01210C4202D00D4846 +:1073C0000CF082FD0798FAF77BFB0B4904F092FB67 +:1073D000051E04D109480799FAF7B0FB01E08025A2 +:1073E0006D0001210C4202D002480CF06DFD281CFA +:1073F00013B0F0BDBE74030030F9020010F00200BB +:107400001FB5202168461BF08AFB254821F055FA5C +:1074100068461BF0B9FB234821F04FFA0CF03CFD05 +:107420000128F2D002280AD11F4821F046FA684606 +:107430001BF09FFB01221D4B00201A702DE003283A +:1074400003D168461BF0A0FBE8E7042804D0C1B2D2 +:1074500068461BF0F1FBE1E7154821F02EFA019A8E +:10746000002A08D1104821F028FA68461BF081FB59 +:107470008020400011E09620029940000023FBF795 +:10748000E1FC002803D10B481AF092FAC0E7012171 +:107490000A1CFFF75FFFC305BAD505B000BDC046A3 +:1074A00096740300C18303003E4B030006010020D5 +:1074B00029480300B174030030B587B002A8202129 +:1074C0001BF02DFB444821F0F8F9444821F0F5F970 +:1074D00002A81BF059FB02A841491BF0ABFF012891 +:1074E00009D1404821F0E9F902A81BF042FB002035 +:1074F0003D4B18706EE0022803D13A4821F0DDF9C7 +:10750000E0E703281AD0042808D1364821F0D5F93D +:1075100002A81BF02EFB802040005BE0052825D14F +:10752000324821F0CAF902A81BF02EFB0CF0B4FC83 +:107530006B46C1B2DC1D2170032901D12948C5E782 +:10754000042904D1274821F0B8F9012427E002A832 +:107550001BF072FB23780D2B03D1254821F0ADF9E8 +:10756000E4E7201C01210CF0AFFCDFE702A81BF0D0 +:107570001EFB0028ACD002A81BF04BFB09F0B6FCA8 +:1075800000280BD002A80A211BF056FB02A81949BB +:107590001BF050FF0328D1D00428ECD1002402A80E +:1075A0001BF0FEFA051C02A81BF001FB021C962032 +:1075B000291C40000023FBF745FC002803D10E489E +:1075C0001AF0C8FA84E7211C0622FFF7C3FEC305A0 +:1075D00000D47DE707B030BDC0740300057503001B +:1075E0002B7503003E4B030006010020307503009D +:1075F00060750300677503009828030038B50523FC +:10760000041C094A094D1068434309481B199B0093 +:1076100018582B68146018180F23194009012860A6 +:1076200003F016FB38BDC046680100206001002051 +:1076300048D70200A839031C00B5081E06282ED81A +:1076400012F0ECF9040A10151B2027009A18E22307 +:10765000DB00D218107826E0C4329200D05C80069D +:10766000800E20E0C4329200D05AC00403E0C4323D +:107670009200D0580003400E15E0C43292009A18D0 +:1076800090780AE0C43292009A18D0780007000F70 +:1076900009E0C43292009A18D078000903E0002073 +:1076A000014A024B1A6000BD597D0300040000200E +:1076B000A83910B5041C081E062846D812F0AEF9E9 +:1076C000040A131E29333B00E221A218C9005218F4 +:1076D00013703DE03F20C4329200115D03408143AE +:1076E0000B43135534E07F21C43292000B409901C3 +:1076F000105B184B03400B43135329E07F21C43226 +:1077000092000B40105914495B0301400B43135185 +:107710001EE00F21C4329200A21890781B01014094 +:107720000B43937014E00F20C4329200A218D1785A +:107730000340814306E00F21C4329200A218D078A2 +:107740001B0101400B43D37002E0044A044B1A6052 +:1077500010BDC0463FE0FFFFFF1FF0FF647D030048 +:1077600004000020F0B585B003930723D2B2134084 +:10777000013BDBB20F1C042B02D92B4C2B490C60B4 +:107780002B49CE5C07211B028A43019308D1294B68 +:10779000C55C2D09ED43EBB23D7800932C1C1FE036 +:1077A000D443E4B20825244B019A1B199B5C5F006B +:1077B000FFB2DB0904D002200521FFF71FFF05E01F +:1077C0000120311CFFF71AFF002EF4D0013DEDB26D +:1077D0003B1C002DEBD10134E4B2002CE2D120E0BF +:1077E0000826154B019A1B199B5C5A00D2B20292D3 +:1077F000DB0902D003201A2101E004200621013E0A +:10780000F6B2FFF7FBFE029B002EEED1009B013487 +:10781000E4B25B1B1B19DBB2002BE1D1009BED1A1C +:107820003D70039805B0F0BD707D0300040000209A +:107830008380030019070000927503000022F0B551 +:10784000051CFF248BB008AB0191DA71231CC433F3 +:107850009B00EB189978604E0A09B05C0F2200017A +:10786000114001439970D9780807000F375C9143A4 +:10787000174039430809305C0A4000010243DA70BE +:10788000013CE3D2E223DB00EE5CB308F31ADBB287 +:107890000693524B1B68002B0BD081231B01E81869 +:1078A000C4239B00E918E223DB00EA18019BFEF7E2 +:1078B00033F800244823271C049303940294812264 +:1078C0002B1912019B181B7805930723059A9A43DD +:1078D00007920BD008ABD91D281C231C059AFFF773 +:1078E00041FF019B0230C4B2023B32E03C48029BA4 +:1078F000C35C9C46231C6246C4339B00EB189978FA +:10790000DB7809091143374A515C039A805C1A07F6 +:10791000120F1043334A1B09105C40183249C95DED +:107920000B43D15C01234118FF2801DC6B461B7F10 +:10793000C9187839C9B209090020FFF75FFE049B16 +:10794000013BDBB20493002B0AD1019B0134E4B26A +:10795000013BDBB20193019B002B3BD02B780493BE +:10796000013EF6B2002E0CD1E22200272B19D200E4 +:107970009B181E780397B308F31ADBB2069302979D +:107980009DE7069B013BDBB20693002B02D1059BD2 +:10799000002B16D1221CC4329200535D02999B0623 +:1079A0009B0ECB18DBB20293535B0399DB045B0E97 +:1079B000CB18DBB2039353591B035B0EFB18DFB2EA +:1079C0007DE708ABD91D281C231C059AFFF7CAFECA +:1079D000041CC9E70BB0F0BDDE7D03006C01002084 +:1079E000BF800300E27A03003F7E0300064A125C78 +:1079F000002A05D0054A135C4B43D811C0B201E000 +:107A0000034A105C7047C046DF7F03008880030094 +:107A1000927A0300064A125C002A05D0054A135CDC +:107A20004B43D811C0B201E0034A105C7047C04616 +:107A3000DF7F0300827C030033800300F0B5037A0C +:107A40008BB07F2B00D14DE1031C071C0025041CCB +:107A50000933FF330837099300953E787F2E03D111 +:107A6000002302930093DEE0012E02D1201C311C82 +:107A700003E0022E05D1201CFF21009A2B1C1CF0D4 +:107A80000EFF994ABB78301CD3185B780093FB78C3 +:107A90000193A178FFF7AAFF3F2318400290E178F5 +:107AA000301CFFF7B7FF7F23904A1840925D039088 +:107AB0001A408F4B04929A5D0F231A4005928D4A0B +:107AC000925D1A4006928C4A925D1A408B4B079247 +:107AD0009B5D08937B78EB18DBB29C462A1C3F2108 +:107AE000C4329200135D8B4302990B431355105B14 +:107AF000039B83499B01014019431153049B105977 +:107B00005903804B18400B1C03430F201351059958 +:107B10001E0C06400901A21831431B0E069E9170EF +:107B2000834307993343090118400843D0706946DD +:107B30002020812209186319097812019A181170FE +:107B4000E222D2009B180199009A01355218EDB239 +:107B50001A706545C2D1099B04379F4200D07CE76B +:107B60007EE76949CD5C8E5C6849AE4264D18D5C2C +:107B7000CB5C0493039B597A009B5918CBB20093BA +:107B8000049B5B19DBB20693023B1B0647D4A82675 +:107B9000009B5D1BEBB20593A82E55D1039B311CB6 +:107BA0005F7A5A7B7F085208D3190193009B201CEF +:107BB0009A18D2B2DF1BFFF73DFDFFB2051C311C46 +:107BC000201C3A1CFFF736FD2D1AEDB27F232A1C2C +:107BD0006DB29A43EB17E81858400199079212F0DA +:107BE000B1F8281CCBB20199089311F0C5FF00250C +:107BF000C3B2059F09933A1C311C201CFFF71AFDE4 +:107C0000019A0599099B01375218C318FFB2D2B2E5 +:107C1000DBB2BA422BD10136F6B2AF2EBCD1029BF9 +:107C20000133DBB20293029B9B00E31803931A7AA1 +:107C30001B7B7F2B95D133E03548AE4201D2C55C2A +:107C400096E78D5C835C94E7049B009A311C9A183C +:107C5000D2B2201CFFF7EEFC311C051C059A201C3B +:107C6000FFF7E8FC069B2D1AEDB20193AEE7089AE8 +:107C7000AD18019AEDB295420CD3AD1A6A46127F47 +:107C8000EDB252B2002A03DB002B03D0013300E037 +:107C9000013BDBB2201C311C3A1CFFF709FDAAE7AF +:107CA000029B02339B00E3185978009B59186368C4 +:107CB000C9B2002B03D0201CFFF7C0FD12E0E22266 +:107CC000D200A0181A1CC4329200125D05789206E8 +:107CD000D20EAA1A02708022013301305200934260 +:107CE000F0D1E8E70BB0F0BDD37D0300E27B0300E9 +:107CF0003F7F0300837D0300327C0300EF7D0300A0 +:107D00003FE0FFFFFF1FF0FFB97C0300097D030088 +:107D10008F7F03000D4B73B530CB161C012804D99F +:107D20004D682C1C022800D08C68086801A904F05A +:107D300033FD011C2C20019A0023FF30FBF782F851 +:107D4000311C2A1C231C00F077FF76BD882E0020F2 +:107D500070B5F8F7C7FA0B4C0026231CA0331E6041 +:107D6000266301F089F9084D0121281CFCF7B2F9BE +:107D7000281C6E215E221BF0ADFD656025606664E7 +:107D800070BDC046882E0020BC2E002070B5062491 +:107D9000134EC3001C4373680022051C211C181DD0 +:107DA000FCF77EFE021E18D1706C002807D004304C +:107DB000211CFCF775FE002801D040680EE000226F +:107DC0000848211CFCF76CFE021E06D106492A1C3D +:107DD000064809F0D9FAF8F71EFA506870BDC04697 +:107DE000882E00205CF70200BF810300FCF902002E +:107DF0000A4B10B5041C18685B6898420AD006212B +:107E0000E300043019430022FCF74AFE002801D0A9 +:107E1000406802E0201CFFF7B9FF10BD882E00204B +:107E200008B5074B586C002801D1064807E004301C +:107E300026210022FCF734FE0028F6D0406808BD59 +:107E4000882E002080F402000A1C062108B5034B8E +:107E5000C000014318681BF03DFD08BD882E0020BE +:107E6000062108B5034BC000014318681BF03CFD18 +:107E700008BDC046882E00200A1C062108B5034B09 +:107E8000C000014358681BF025FD08BD882E002066 +:107E9000062108B5034BC000014358681BF024FDC0 +:107EA00008BDC046882E002038B5051C0C1C0628CD +:107EB00006D1081CFAF72EF800284CD028484DE0CF +:107EC0000123194217D04810042D06D0052D0FD0DC +:107ED000002D42D10028F1D03DE0C0221206904290 +:107EE00004D18020C0051BF005FF37E0404200E0D0 +:107EF000C043400013E0022813D11A4B0B40062B5D +:107F000008D08B070DD10B689A69174B9A4208D19C +:107F1000486802E0C8081AF0A8FD01234000184391 +:107F20001CE0201CF9F7CCFD4369002B0DD10F4B51 +:107F3000AD00201CED581BF04EFA0D49031C2A1C05 +:107F40000C4809F021FAF8F766F9281C211C98471B +:107F5000002803D1EBE7084800E0081C38BDC04604 +:107F600078CD0200070080FF79CD0000F0EC020020 +:107F7000D881030000FD020034CD0200F8B5041CD6 +:107F80001D1C0F1C161CF9F79BFD0369201C9C4649 +:107F9000002B08D11BF01FFA0549021C054809F007 +:107FA000F3F9F8F738F9391C321C2B1CE047F8BDFF +:107FB000F681030000FD0200F8B5061C0D1C171C1D +:107FC0001C1C00290BD01868F9F77AFD73689842D9 +:107FD00005D0064906481FF092FFF8F71CF9B06873 +:107FE000291C3A1C231CFFF7C9FFF8BD12820300AD +:107FF00000FD0200F8B5061C0F1C141C1D1C930785 +:1080000014D11368174A934202D163682B6028E0A9 +:10801000154A934207D1002802D0F9F751FD071CF9 +:10802000636888C51DE0114A934201D12C6018E0B5 +:108030005B681A1CF23A012A01D9F02BF6D1002E06 +:108040000ED1201CF9F73CFD094B984208D10C20B9 +:108050001BF0FEFA074B476003608460286000E075 +:1080600050C5F8BDA8EC02006CEC02006CEB0200FD +:1080700084D8020000D80200F8B5002313605360D2 +:10808000071C0C1C151CF9F71BFD061C102C05D138 +:10809000836A002B02D00F4B88C519E0F369002BCF +:1080A00004D0381C211C2A1C984711E0B06B002812 +:1080B0000ED00621E4001A1C04302143FCF7F0FC2A +:1080C000031E05D05A68381C311C2B1CFFF792FF89 +:1080D000F8BDC0464CF7020070B5161C041C0D1C00 +:1080E000FFF7CAFF3368002B15D10B4EA30707D14A +:1080F0000A4B22689A4203D1301C0949626805E0A4 +:10810000201C1BF068F9021C301C06492B1C09F0CE +:108110003BF9F8F780F870BD34FB02006CEB02000D +:108120002A8203005182030073B5041C0D1C161C27 +:10813000F9F7C6FCC369002B09D00422019600920E +:10814000201C291C6A469847009B002B0AD0201C43 +:108150001BF041F90449021C2B1C044809F014F9D6 +:10816000F8F759F873BDC0465182030034FB020092 +:1081700013B5041CF9F7A4FC436A002B0BD1201C97 +:108180001A216A46FFF778FF009B002B08D068464B +:10819000FDF716FF0EE0201C984700280AD1EEE7F5 +:1081A000201C1BF018F90449021C044809F0ECF8E3 +:1081B000F8F731F816BDC0467382030000FD0200D7 +:1081C00037B5041CF9F77CFC856A201C002D01D012 +:1081D000A84716E010216A46FFF74EFF009B002BD0 +:1081E00005D0281C291C6A461CF0D4FB09E0201C81 +:1081F0001BF0F1F80349021C034809F0C5F8F8F731 +:108200000AF83EBD8F82030000FD020030B5051C58 +:108210008FB0FBF72DFB281CF9F752FC846A281C51 +:10822000002C01D0A04728E010216A46FFF724FF68 +:10823000009B002B17D002A8F7F7D2FF011E07D131 +:108240006A461CF0A7FB041CF7F7E0FF201C14E0B3 +:10825000039B0B49186803F04DFC031C201C002BEA +:108260000BD1039807E0281C1BF0B5F80549021C48 +:10827000054809F089F8F7F7CEFF0FB030BDC046CA +:10828000BCFA02008F82030000FD0200F0B585B049 +:1082900002900E1C171C202802D1914214D1A1E19A +:1082A000029B1B2B01D01E2B10D1301C391CF9F75F +:1082B0009FFC002803D0029B1B2B05D192E1029B5F +:1082C000BA481B2B00D099E1B94897E1029B212BBA +:1082D0002AD1101C09F0A0F8002807D0301C391C46 +:1082E0001FF017FE002800D07CE1EDE703243C409E +:1082F00000D042E1AF4B3A689A4200D03DE17B6842 +:108300009C42E1D2A300FB189D68281C09F084F868 +:10831000002800D130E1301C291C1FF0FAFD002894 +:1083200000D05FE10134EAE70123194200D1EAE01D +:108330004D101A4200D1DEE0029B54101D2B00D9D3 +:108340001BE1181C11F07EFB1E00200023002600FC +:1083500038003F00410043004E0056006B0074009F +:10836000A3001E0020002300260038003F0041002B +:1083700043004E0056006B007400BC00C0001901A1 +:10838000C400C800254300E065402E1CA8E02C4036 +:10839000261CA5E0002C02DA8748884902E11F2C40 +:1083A0006FDC874B23419D426BDCC0231B062341BE +:1083B0009D4266DBA540E8E7002CEDDB1F2C00DDCD +:1083C0001F242541E1E72E198AE02E1B88E0281C96 +:1083D000211C00F085FC002853D101206C4364006F +:1083E00020430BE1002C00D1DAE0281C211C1CF0FA +:1083F0001BFB1BE0002C00D1D2E0281C12F01AFC61 +:10840000051C201C12F016FC011C281C11F050FF4A +:108410000323022598436B4B2843C018EEE0002C41 +:1084200000D1BDE0281C211C1CF0EEFA061C57E010 +:10843000002C02DB0395012617E0281C12F0FAFB42 +:108440000323022698435F4B0643F61889E0E307AF +:108450000ED4012C44D003986410011C00F040FCA1 +:1084600000280ED1039B5B430393002CEFD137E030 +:10847000301C039900F034FC002802D1039B5E43BA +:10848000E7E7E917281C1BF026FC061C69E0002C16 +:1084900000D185E00021022001F014FC211C061C03 +:1084A000281C1CF0C1FA012740003843B060211C91 +:1084B000281C1CF0A9FAB8403843F060301C9DE03D +:1084C000A54200DB00E78DE0A54200DCFCE689E088 +:1084D000A54200DDF8E685E0A54200DAF4E681E099 +:1084E00073001A1C724002D40120184386E0301C2D +:1084F0001BF000FC82E003231340022B03D1324B1C +:108500001340062B70D1029B1F2B2AD1381CF9F780 +:10851000D7FA8369051C002B07D16B6A002B16D094 +:10852000381CFFF725FE041C0BE00298391C321C96 +:108530009847002862D1F0E7311CF9F759FB002871 +:1085400050D1201CFFF762FE0028F5D1BCE6381C94 +:108550001AF041FF1D49021C1D4808F015FFF7F7EE +:108560005AFE301CF9F7ACFA8369002B05D002984B +:10857000311C3A1C98473FE02F1C029B301C9A008C +:10858000144BD5581AF027FF041C381C1AF023FF8F +:10859000114900902A1C231C0D4808F0F5FEDEE767 +:1085A0000E480F491FF0ABFCD9E7C04634CD02009E +:1085B00078CD0200BCDC020010F80200BD4A0300C6 +:1085C000FFFFFF3F00008080070080FF73820300F1 +:1085D00000FD0200A8EB0200AE8203006CFC02006A +:1085E0004D4A0300064809E0281C12F023FB3A1C00 +:1085F000011C0298FCF788F90028BED005B0F0BD38 +:1086000034CD0200F0B513688DB00693002803D175 +:10861000131D0393041C03E0131C546808330393D5 +:10862000FF220B1C13400193090A1140019A4B00D1 +:1086300005939B18039A9B00D558D3185F68049143 +:10864000381E09D00020BB0706D17F4B3A689A42FA +:1086500002D1381C1BF03BF9049BC618002D16D123 +:10866000019B760001339B19980000931AF0F0FFEC +:10867000251C061C002C01D001250460019BA800CC +:108680009A003018039922F0B7FD019B30E0AB0748 +:1086900031D12B686D4A934202D06D4A93422AD160 +:1086A000281C09A90AAAF9F797FB099B019A01332B +:1086B0009B1876009B19980000931AF0C9FF251C9F +:1086C000061C002C01D001250460019BA8009A0023 +:1086D0000399301822F090FD019B0A99E818099B34 +:1086E00080009A00301822F087FD019B099A9B18A0 +:1086F0005B19029338E0019B7600181D83199800DE +:1087000000931AF0A5FF0294061C002C02D001234E +:1087100004600293029B03999800019B30189A0011 +:1087200022F06AFD019A029B9446281C634402933E +:10873000FFF71EFD029B07909C000798FFF766FD60 +:10874000051E11D0029B009A934207D3301CD10022 +:108750001AF094FF061C009B5B000093029B3551AE +:10876000013302930434E8E7029B9800049B30181D +:10877000DA00019B9900039B591822F03DFD029AF3 +:10878000059B944663441C1C002F4ED00325381CC7 +:108790003D4019D12C4B3A689A4215D11BF0ADF8E7 +:1087A00041688D4241D08368EA009F58002F09D06C +:1087B000042F07D0A300F7508768F318BA1852683F +:1087C00002345A600135ECE7C5210AAAFFF784FCA0 +:1087D00000200AAA011C1CF0DDF8FFF7C9FCA50067 +:1087E00001900198FFF712FD071E1ED0009A631C2E +:1087F00093420BD353000093032B01D8042300931F +:10880000009B301C99001AF039FF061C09AA381C7D +:108810000221F9F703FB099B02341B687351099B82 +:108820005A6873195A600835DBE7029B0698E21A0A +:10883000191C5208331CFFF7A1FB041C301C1AF052 +:108840002EFF201C0DB0F0BD64CE0200BCDC020087 +:108850009CC6020073B50C1C161C83071FD103684D +:10886000224A934207D0224A934218D1694601AA6C +:108870001AF05DFB03E0694601AA1CF07DFB009B3A +:10888000A34227D32AD80023019DA000A3422CD0C5 +:108890009900421A043AAA5801337250F6E7FFF7DA +:1088A00067FC0023051C0093009B281CA3420CD2EC +:1088B000FFF7ACFC00280DD0009A0E49A31A5B18F4 +:1088C0009B00013298510092EEE7FFF79FFC0028D1 +:1088D0000BD003E008480949009A02E0221C064830 +:1088E000074908F051FDF7F796FC73BDBCDC0200A8 +:1088F0009CC60200FFFFFF3F10F80200D382030076 +:10890000F6820300F7B5141C0A0AFF230E1C151C7F +:108910001E401D4083073CD107683E4B9F4203D059 +:108920003D4B9F4235D104E0694601AA1CF024FB6F +:1089300009E0FF231143194201D1206068E0694634 +:1089400001AA1AF0F4FA009BAA19934259D39A008B +:108950009446002001998200A84206D06746BF1ABB +:10896000043FCF590130A750F5E79B1BB500181AFB +:108970004919A4181AF0C3FA019B20605D1900235D +:1089800001360133B34243D09A0051426958A15095 +:10899000F7E7FFF7EDFB0023071C0093009BB342B2 +:1089A0000CD2381CFFF732FC00282AD0009AB31AE8 +:1089B0005B199B00013218510092EFE70020011C67 +:1089C0001AF09DFA061C381CFFF720FC011E03D08C +:1089D000301CF8F74FF9F6E7B168A94211D3AB00A4 +:1089E000E3181E6088009C4206D0C21AF768A218DD +:1089F000D259043B1A60F6E7491B301C1AF09CFA66 +:108A000006E00649009A064808F0BEFCF7F703FCAA +:108A1000F7BDC046BCDC02009CC60200D382030046 +:108A200010F80200F0B587B01D1C061C0C1C01924A +:108A3000F9F746F82F4B984206D1301C211C019AB9 +:108A40002B1CFCF7F9FF53E0876A2B4B002F07D054 +:108A50009C4220D1301CB8472860002816D147E03E +:108A60009C4218D1301C102103AAFFF705FB039B81 +:108A7000002B0DD1301CCD2103AAFFF72DFB0120C7 +:108A80000021059403AA1BF085FF286001202FE038 +:108A9000381C391CF6E7002CECD1019B201C002B64 +:108AA00026D0181CF9F70CF8144903F023F8002815 +:108AB0000FD0301CCC2103AAFFF7DEFA039B002B5A +:108AC00007D0201C211C03AA1BF064FF2860201C77 +:108AD0000EE0301CCE2103AAFFF7CEFA039B002B39 +:108AE00003D00120002101AACDE70220019B2B60C9 +:108AF00007B0F0BD20D2020074E00200B4FD020015 +:108B000010B5041C08F088FC002806D00021201CA9 +:108B10000A1C0B1CFFF732FA0AE0201C1FF0F3F9C5 +:108B2000031C201C002B03D1024803491FF0E7F966 +:108B300010BDC04600FD02001E8303007FB5062362 +:108B4000C0001843054B01900491052001A9029330 +:108B500003930592FDF72AFC07B000BD74E0020004 +:108B60000C23F0B58BB000AFFA18051C0C1CFFF7F6 +:108B700083FA3B69002B06D02B49221C2B4808F0B6 +:108B800003FCF7F748FBF86800284AD1281C1BF0C3 +:108B90000FFA0028F0D00C23281CFA180D21FFF73B +:108BA0006BFA0823F868F91803F0F6FD3860201C0A +:108BB000BD6819F05FFF6A4601352B187B600E33E4 +:108BC000DB08DB00D31A9D46BD6839682A1C68465D +:108BD00022F012FB6E462E23201C735519F04FFF16 +:108BE0003860201C19F046FF01357519021C3968E0 +:108BF000281C22F001FB79686846F7F7B5FB0623CD +:108C0000C00018430A4B0822BB61FB61094BBA182C +:108C10003B6201237B620B337861D1180520FDF79D +:108C2000C5FBBD460BB0F0BD48830300B8FB020096 +:108C300074E0020034CD0200F0B5174C0F1C6168DF +:108C400095B003912168061C08A804916260236016 +:108C5000F7F7C6FA051E06D0039B09986360049BCC +:108C60002360F7F7D8FA336805A8311C3A1C019342 +:108C7000F8F78EFB2A1C2B1C019905A807F09AFA1D +:108C80001BF079FE051CF7F7C1FA281C039B6360F3 +:108C9000049B236015B0F0BD882E002010B5041C85 +:108CA000FDF7D0FF031E064803D006491FF027F941 +:108CB00003E00549221C08F067FBF7F7ACFAC04651 +:108CC00090F802005E83030087830300011C08B54F +:108CD00002481FF014F9F7F79EFAC046A8FC0200FC +:108CE00070B5061C0D1C002811DD002906DD154895 +:108CF00010F042FF0124864213DC11E0C020311C39 +:108D0000000610F039FF012485420ADB08E0002943 +:108D100009DDC020000610F02FFF0124864200DB91 +:108D20000024E4B20BE00024A04208D00548311C26 +:108D300010F022FF0123854200DB231CDCB2201C43 +:108D400070BDC046FFFFFF3FF0B5051C89B002AF04 +:108D50000E1CBA603B60FAF78BFDAB687B61142395 +:108D6000F8181CF03BFB14237860F8181CF036FB55 +:108D7000032358437B68C0188300FB602C2B0AD860 +:108D80006B46F8682A30C008C0001B1A9D460023B5 +:108D900002ACFB6005E0F8681C301AF066FC041EAB +:108DA000EED0AA687B69201C9B1A63607B68321C2A +:108DB000A3613B68291C0093BB6801F07DFF184E3E +:108DC000201C7368002163616B68736008F098FB76 +:108DD0006369B8607360002802D0022803D00BE0FA +:108DE000E3681D6809E07B6805339B00E3185D6854 +:108DF000FB68002B0CD005E00A4DFB68002B0AD065 +:108E00000023BB60201C1AF04AFCBB68002B02D078 +:108E1000281CF7F700FA281CBD4607B0F0BDC04675 +:108E2000882E002074E002000122031C30B513409C +:108E300085B04510002B4ED128491D1C88424AD0D0 +:108E4000274B984247D0274B151C984243D0032309 +:108E5000041C034006D1244A0168914202D11AF051 +:108E600086FF0EE0214A251C2240062A05D0002B51 +:108E700009D11F4B22689A4205D1201C01A903F099 +:108E80008BFC051C27E0201CF8F71AFE194B9842B2 +:108E900007D1FF23DB05E0180323984311F0AAFE56 +:108EA000EFE7154B984205D1201C694601AA1CF03A +:108EB00063F80FE0114B984205D1201C694601AAC6 +:108EC0001AF035F806E0201C01A902221AF099FADE +:108ED000002800D0019D281C05B030BD74E00200C0 +:108EE00078CD020034CD020030D30200070080FFAD +:108EF00080CA02000CD00200BCDC02009CC602004A +:108F0000F0B585B0051C0E1C029203931F4F00287C +:108F100004D043680193002903D125E0002903D040 +:108F20000190019B581C01E0081C01910430800055 +:108F30001AF08EFB164B041C03607B684360029B97 +:108F40008360039BC360002D07D0291C201C019B5C +:108F500008319A00103022F04FF9002E13D0019BF7 +:108F600004339B001E510EE0019B181D80001AF077 +:108F70006FFB074B041C03607B684360029B8360AC +:108F8000039BC360E1E7201C05B0F0BD882E0020E4 +:108F9000C0D8020070B5061C10200D1C141C1AF05D +:108FA00057FB034B466085600360C46070BDC046DC +:108FB00048D8020008B50B1C02495A681DF0F9FD9B +:108FC00008BDC046B583030070B5151C12680C1CA3 +:108FD0008368002A09D1CC000621181D2143FBF724 +:108FE0005FFD00281ED043681BE01A79181C920709 +:108FF0000BD50D4A934215D10C4E736C002B03D147 +:1090000001201AF02EFC7064706C06216A68E4007E +:109010002143002A02D11AF067FC01E01AF05AFC41 +:1090200000232B6070BDC04658F70200882E002038 +:10903000F8B50625C3001D43071C291C0C48012256 +:10904000FBF72EFD061C4068002810D10C301AF0EA +:10905000FFFA084B041C0360476001201AF001FC72 +:109060006E21A0602A1C1AF035FC201C7460F8BD2B +:10907000AC2E002028D9020008B502480321FBF7D6 +:1090800029F808BDA82E002010B50C1C0621C00030 +:10909000014301220248FBF703FD446010BDC046B6 +:1090A000AC2E002073B50625C3001D43061C291CE9 +:1090B0000F480022FBF7F4FC041E17D1221C0D48B8 +:1090C000291CFBF7EDFC041E11D0606808216A46DC +:1090D000FEF7D2FF009B002B08D000206A46011C3F +:1090E0001BF058FC301C6168FFF7CEFF606876BD4E +:1090F000AC2E002064D9020010B588B0694601AAE0 +:10910000041C08F0E7F9009B022B2AD904A832219D +:1091100002AAF7F7F3F9019B13495A6802A81DF058 +:1091200048FD201CF8F7CCFC104BC2689A4210D1C5 +:10913000236802A85A680E491DF03BFDE368002B26 +:1091400007D05A68002A04D002A899680022F8F7CC +:10915000D1FC04A819F05DFD0AF0FEFE04A819F088 +:1091600008FD08B010BDC046C383030071120100A2 +:10917000CC83030070B5051C90B0002803D11F48B4 +:1091800018F0E8FC38E004A8F7F72AF8041E19D113 +:109190002E6801A8291C0122F8F7FAF8221C231CCA +:1091A000311C01A807F006F8041C03200AF058FE41 +:1091B000201C1BF0E0FB012040420AF051FEF7F7B3 +:1091C00025F819E0012040420AF04AFE05990C48B2 +:1091D000F8F7B4FC0598F8F773FC0A49041C02F090 +:1091E00089FC002808D1201C074902F083FC0028D4 +:1091F00002D10598FFF780FF10B070BDD083030047 +:1092000010F0020030F90200C8F7020037B5294B10 +:1092100001AA1A60FAF706FBE120C000FAF716FB74 +:10922000254B2648C118FDF7D1FCFEF791FD0AF049 +:10923000F5FDF9F747F80BF0D1FE0023204CA367AA +:10924000204B1A781D1C012A1FD1F8239B021A7883 +:109250004D2A07D15A78502A04D159881A481BF050 +:109260008FFC12E0002219480721131CFBF726F996 +:10927000002802D01BF08FFC07E0A6201449012231 +:109280004000FFF75BFC1BF09EFB2B78002B0ED100 +:10929000FEF7B6F80028F8D00E481FF00EFB0023AA +:1092A0000D4A5360136063671BF061FB37BDFEF727 +:1092B00003F9EFE74C270020DC25000070010020B7 +:1092C000882E00200601002004E00300FD83030037 +:1092D000F8DC020005840300F42E002007B5FDF73A +:1092E00001FD054B01A81968091A8908FDF7B4FCAE +:1092F000FDF70CFD07BDC0464C2700209F23002131 +:10930000024A5B000248D1527047C046882E0020B6 +:1093100074E002009F230121024A5B000248D152FF +:109320007047C046882E002074E002009F23044A44 +:109330005B00D35A0348002B00D103487047C04656 +:10934000882E002034CD020078CD020008B5FFF74A +:10935000C5FF014808BDC04674E002000023820733 +:1093600008D10268044901338A4203D0034BD31A5F +:109370005A425341181C704764DC02002CDB020087 +:1093800070B5061C0D1C0124B44206D2A300286847 +:10939000E9581BF02AFC0134F6E7014870BDC046CD +:1093A00074E0020010B5041C10201AF051F9044BAF +:1093B00084600360034B43600023C36010BDC0465C +:1093C0003CE20200C94C020038B5051C10201AF01E +:1093D0003FF9041C074B696808C01AF09DFBAB6895 +:1093E000E968A3606B68E0689A0021F005FF201C23 +:1093F00038BDC04664DC02000023F7B5041C0D1C18 +:1094000001938B0705D10B68224FDF1B7A427A410B +:109410000192AB68002B09D1019B002B03D0201CCB +:109420001D491DF0FAFA201C1C492FE0019B002B5E +:1094300003D0201C1A491DF0F0FA201C19491DF018 +:10944000ECFA002601236A68964216D2B200171C75 +:10945000EA68D259002A0ED0042A0CD0002B03D17E +:10946000201C11491DF0D9FAEB68201CD9590122A2 +:10947000F8F740FB00230136E5E7201C0B491DF0FF +:10948000CCFA019B002B03D0201C09491DF0C5FA22 +:10949000F7BDC0462CDB0200138403001A840300CE +:1094A00020840300A04903008B400300DD44030037 +:1094B0001B43030008B5FFF751FF002805D10349FE +:1094C000034807F061FFF6F7A6FE08BD2B840300F2 +:1094D00000FD020038B50D1C041CFFF7EBFF281C33 +:1094E000FEF746FE051C281CFEF790FE011E07D065 +:1094F000201D00221AF01AFB0028F4D0014800E0D9 +:10950000014838BD78CD020034CD020008B583078C +:109510000BD10368084A93420DD0084A934204D104 +:10952000074908481EF0EBFC03E00748074907F02D +:109530002BFFF6F770FE08BD64DC02002CDB020096 +:109540004184030034FB020000FD02002B84030071 +:1095500038B50D1C041CFFF7D9FF281CFEF708FEC8 +:10956000051C281CFEF752FE011E04D0201D0322FC +:109570001AF0DCFAF5E7014838BDC04674E0020095 +:1095800038B50D1C041CFFF7C1FF291C201D01224A +:109590001AF0CCFA004838BD74E0020038B50D1C52 +:1095A000041CFFF7B3FF291C201D02221AF0BEFA8B +:1095B000004838BD74E0020010B5041CFFF7A6FF98 +:1095C000201D1AF03CFB014810BDC04674E00200AB +:1095D00008B501221BF042FB004808BD74E0020000 +:1095E00038B5041C0D1CFFF791FF201D291C022219 +:1095F0001AF09CFA002804D103481EF073FCF6F719 +:109600000AFE024838BDC046F0FD020074E00200C8 +:1096100010B5041CFFF77AFF201D1AF0F2FA00289B +:1096200005D1034903481EF06AFCF6F7F4FD10BDAE +:1096300063840300F0FD0200F8B501280AD0002879 +:1096400002D002280AD029E08B681548002B26D1C9 +:10965000144824E08B685B00184320E003250020B9 +:109660000D4085421BD10C680F4B281C9C4216D123 +:109670000E1C4F68BD420DD0F268AB00995800290E +:1096800006D0042904D00220FEF70EFC4010241856 +:109690000135EFE701206400204300E00020F8BD21 +:1096A00034CD020078CD02002CDB0200F7B5071C98 +:1096B0001020019119F0CCFF051C0A4B061C08C5AF +:1096C000281C391C1AF028FA0024BC4208D0019A40 +:1096D000A300D158281C01221AF028FA0134F4E71B +:1096E000301CFEBD64DC0200F7B5051C0E1C171E05 +:1096F00005D0FFF70BFF1A4CB54209D12EE0FFF75A +:10970000D9FEB54204D1281C1BF080FA041C25E0C8 +:109710000020011CFFF7CAFF041C301CFEF728FDC7 +:1097200001900198FEF772FD061E0BD0281D311C1A +:1097300000221AF0FBF90028F3D0201C311CFFF79F +:109740001FFFEEE7002F09D0E86819F0A8FF636853 +:109750006B60A368AB60E368014CEB60201CFEBD4E +:1097600074E00200F0B585B0041C039002910192F0 +:109770000027FFF7F3FDB84207D13A1C204801212A +:1097800003AB1BF0C6FA041C0137029D0026281CFF +:10979000FFF7E4FDB04207D1321C1948012102ABAA +:1097A0001BF0B7FA051C0136019B002B05D0A368FE +:1097B000AA68934201D1002310E0201CFFF7F2FDBC +:1097C000019001981BF080FA011E06D0281D00228E +:1097D0001AF0ACF90028F4D1EDE701230193002F32 +:1097E00002D0201CFFF7E8FE002E02D0281CFFF755 +:1097F000E3FE019B0348002B00D1034805B0F0BDF8 +:1098000064DC020034CD020078CD020037B500914F +:1098100001921F2850D8151C0C1C10F0FFF81015D1 +:109820001A4D4D4D1F4D4D4D4D4D4D10151A4D4D71 +:109830004D1F4D4D4D4D4D24272C393E4D43081C99 +:10984000111C1BF0EDF938E0081C111C1BF0F6F997 +:1098500033E0081C111C1BF051FA2EE0694602206F +:109860001BF02DFA29E0081C111C00E0101C01223D +:10987000FFF778FF21E0081CFFF71CFE281CFFF70C +:109880006DFD031E0D4818D0A368AA68934214D139 +:10989000201C291C1BF06EFA0FE0081C111C1BF089 +:1098A00061FA0AE0081D111C00221AF03FF9031E9C +:1098B000034802D1014800E000203EBD78CD0200FF +:1098C00034CD02003E2803D0402809D03C280ED1D8 +:1098D0004239C9B22F290AD8084B585C012308E045 +:1098E000712904D8064B585C064B5B5601E00123F6 +:1098F0000020002A00D013607047C0465D85030039 +:1099000079840300EB84030008B5512836D00FD8C2 +:10991000492827D006D842281CD048281FD0002824 +:109920004BD117E04F2840D042D84C281AD044E001 +:10993000682811D007D864282AD0662825D0622844 +:109940003BD188563AE06C2832D071280FD0692874 +:1099500033D12DE0885C31E05200505E2EE05200A1 +:10996000505A2BE0920050581AF0DFF929E0D2004B +:109970008A18106851681AF0AEF922E0D2008A18ED +:10998000106851681AF0C2F91BE09200505805E0C7 +:10999000D2008A181068516813F01CF8032398430A +:1099A000013B1843074BC0180BE09200505808E0E9 +:1099B000920050581AF09EF903E000200123400065 +:1099C000184308BD00008080F7B5161C156801AA71 +:1099D000041C0F1CFFF776FF402C05D1019B043CB3 +:1099E0005A1EAD185B421D402B183360221C5A26AC +:1099F0003E3ABE42B6415442624176422B1CD2B23C +:109A0000311C1BF0BCF9041C0D1C4F2F3ED0532FF2 +:109A100008D1201C21F012FD0022011C201C02F0A4 +:109A200003FA33E0662F06D1032302209C43184B30 +:109A30000443E0182AE0642F09D1201C12F0CAFF69 +:109A4000032302249843124B2043C0181EE0002E2B +:109A500010D080220023D20512196B41201C002B4C +:109A600004D1002A02DB1AF045F90FE0291C1AF094 +:109A700032F90BE0201C002905D1064B9C4202D88C +:109A80001AF053F902E0291C1AF040F9FEBDC04655 +:109A900000008080FFFFFF3FF0B587B0141C03AAD1 +:109AA000071C0E1C01931D68FFF70CFF0090402F50 +:109AB00005D1039B043F5A1EAD185B421D40009B1D +:109AC000019AEB1813603E3F642E09D0662E02D037 +:109AD0004F2E22D140E0201CF8F740F9041C3BE057 +:109AE000201CF8F73BF97C427C4112F01FFFE4B2E6 +:109AF00004900591A30006AAD318083B211C2A1C38 +:109B00001B6804201BF064F901235C40A40006AB31 +:109B10001C19083C043524681EE0A3070CD1154B22 +:109B200022689A4208D179427941201CC9B2009A30 +:109B30002B1C1AF0B7F81AE0201CF8F7ABF8009BC2 +:109B4000041C042B08D95A2E06D9002804DA281D33 +:109B50001A1FFF2121F06DFB0098042800D9042072 +:109B6000794279412A1CC9B2231C1BF031F907B094 +:109B7000F0BDC04630D3020070B5061C0D1C141C8D +:109B8000181C642E0CD0662E04D04F2E11D19400D8 +:109B9000635127E094000D19F8F7E0F8286021E000 +:109BA000D4000D19F8F7DAF812F0C0FE28606960E9 +:109BB00018E020233343712B0CD10321014009D13C +:109BC000094B02689A4205D1E4002B1908221AF0C9 +:109BD00069F807E0F8F75EF8291C031C221C301C0A +:109BE0001BF009F970BDC04630D3020070B50E1CE1 +:109BF0001049041C00251CF010FF73689D420ED212 +:109C0000002D03D0201C0C491CF007FFAB00F318FB +:109C1000201C99680122F7F76DFF0135EDE7012B54 +:109C200003D1201C05491CF0F8FE201C04491CF03F +:109C3000F4FE70BD638703008B4003008D85030035 +:109C40001B43030070B501281ED0002805D0022850 +:109C50001ED10D1C0F4C002605E04B680E48002B52 +:109C600017D10E4815E06B689E4209D2B300EB187D +:109C700002209968FEF718F9401024180136F2E71F +:109C800001206400204304E04B685B00184300E0BF +:109C9000002070BDF8DC020034CD020078CD020057 +:109CA00010B5041C102019F0D3FC044B8460036031 +:109CB000034B43600023C36010BDC0463CE202007A +:109CC000374F020070B50E4A002816D0841CA4003D +:109CD000061C201C0D1C19F0BBFC0A4A46600260E1 +:109CE000021C002D09D00022083CA24204D0AB582F +:109CF00081188B600432F8E7021C101C70BDC0464E +:109D0000F8DC0200BCDC02007FB5041C0E1C151C34 +:109D1000072829D002D8052805D062E0031C193B8A +:109D2000042B3ED95DE0101CF7F7CAFE2F4901F065 +:109D3000E1FE011E56D06B68726800219818FFF78B +:109D4000C1FF311C7368041C9A000831083021F0EF +:109D500053FA291C70686B680230800020189A0042 +:109D6000083121F049FA18E003A9101CF7F7D0FFD9 +:109D70000021884236D00398884210DD736858432A +:109D8000FFF7A0FF041C231C301C0833009308308D +:109D900004217268039B1BF041FB211C22E0144943 +:109DA00020E0081CF7F78CFE281CF7F789FE114B02 +:109DB000426A9A4206D0281C0C491BF0B2FC0E499C +:109DC000051E0FD0311C2B1C6A6808310092083325 +:109DD000201C726801F07AFA0849002802D106496D +:109DE00000E00021081C04B070BDC046BCDC0200CD +:109DF000F8DC0200A19C000078CD020034CD020006 +:109E000030B585B0042A2DD103240A1C051C0C4052 +:109E10001FD1164B096899421BD1111C406801AA39 +:109E200001F01AFA002802D11148FEF74FFF019BFA +:109E30000298211CC01AFFF745FF041C6368083014 +:109E40009A00019B991C8900691821F0D5F9201C02 +:109E500009E0286869680023F7F7F4FF0230800002 +:109E6000405900E0002005B030BDC04600E20200CD +:109E70009B400300F0B51D1C002385B0081C009317 +:109E80000C1C111C1A1C0133F6F7AEFB1748002CF2 +:109E90002AD02868830703D1154B02689A4223D041 +:109EA000102019F0D5FB041C2868FEF761F9002585 +:109EB000042603900398FEF7A9F9071E0BD0B542BC +:109EC00005D3F100201C19F0D9FB041C7600AB006F +:109ED0001F510135EEE7281C211CFFF7F3FE051C7E +:109EE000201C19F0DCFB281C05B0F0BDF8DC0200DA +:109EF000BCDC020010B5041C081C1BF05FF8031C3E +:109F0000002C04D0012C07D14000204305E0034879 +:109F1000002B02DC024800E0002010BD34CD02001E +:109F200078CD020070B54568C6688468102019F0C5 +:109F30008FFB034B4560C6600360846070BDC04604 +:109F400058DD020038B50D1C041C6A680749AB686F +:109F50001CF02FFEEA68201C012A03D104491CF0E2 +:109F60005CFD02E003491CF024FE38BD8F85030030 +:109F70001B4303009C85030030B5041C87B0002000 +:109F8000042A30D1201C0D1C1BF018F8011CAB0753 +:109F90001DD1164B2A689A4219D1291C03AA01F037 +:109FA0005BF9102019F054FB114B039A0360E3682E +:109FB00061685A4352184260049A111C5943019235 +:109FC00062688A188260059A5343C3600BE00023DD +:109FD00020682A1CF7F736FFE36858436368C01807 +:109FE00001234000184307B030BDC04600E2020024 +:109FF0001CDD020008B5F7F7B1FE12F097FC002255 +:10A00000074B11F00DFE074B074A11F0CBF912F088 +:10A01000E1FC03239843013B1843044BC01808BDDF +:10A0200000806640FB210940182D445400008080C8 +:10A0300008B5F7F793FE12F079FC084A084B11F0C7 +:10A04000EFFD084B002211F0ADF912F0C3FC032321 +:10A050009843013B1843044BC01808BD182D4454C5 +:10A06000FB210940008066400000808008B5F7F7BA +:10A0700075FE034B184002231843024BC01808BD5D +:10A08000FCFFFF7F0000808008B5F7F767FE13F044 +:10A09000F9F8034B002800D0024B181C08BDC0463D +:10A0A00034CD020078CD020008B5F7F757FE13F063 +:10A0B000E9F8034B012800D0024B181C08BDC0462C +:10A0C00034CD020078CD020008B5F7F747FE13F053 +:10A0D000D9F8034B012800D8024B181C08BDC04614 +:10A0E00034CD020078CD02001FB500230193F7F7AD +:10A0F00035FE01A913F036F90322031C0220934315 +:10A10000064903435B180293019B934303435B1887 +:10A1100002A90393FFF7D6FD05B000BD00008080C3 +:10A1200038B50D1CF7F71AFE041C281CF7F716FEAD +:10A1300010F060FD011C201C13F0F0F8032398437D +:10A14000013B1843014BC01838BDC0460000808059 +:10A150001FB500230193F7F701FE01A913F0B2F830 +:10A16000032302249843074B2043C0180290019810 +:10A1700019F0C0FD02A90390201CFFF7A3FD04B055 +:10A1800010BDC0460000808038B50D1CF7F7E6FD15 +:10A19000041C281CF7F7E2FD011C201C13F06EFBC9 +:10A1A00003239843013B1843014BC01838BDC046F8 +:10A1B0000000808038B50D1CF7F7D0FD041C281C6A +:10A1C000F7F7CCFDC00FC307600040081843032316 +:10A1D0009843013B1843014BC01838BD00008080F4 +:10A1E00038B50D1CF7F7BAFD041C281CF7F7B6FDAF +:10A1F000011C201C13F0CAFA03239843013B1843A7 +:10A20000014BC01838BDC0460000808008B5F7F784 +:10A21000A5FD12F03DFE03239843013B1843014B7B +:10A22000C01808BD0000808008B5F7F797FD13F04F +:10A230005BFA03239843013B1843014BC01808BD48 +:10A240000000808008B5F7F789FD13F0FBF90323C0 +:10A250009843013B1843014BC01808BD00008080A3 +:10A2600008B5F7F77BFD13F069F903239843013B29 +:10A270001843014BC01808BD0000808008B5F7F7EF +:10A280006DFD13F019F903239843013B1843014B6B +:10A29000C01808BD0000808008B5F7F75FFD12F018 +:10A2A0005FFF03239843013B1843014BC01808BDCF +:10A2B0000000808008B50349034807F065F8F5F70A +:10A2C000AAFFC046A285030010F8020070B5061C64 +:10A2D00008680D1CF7F742FD0021041C0FF098FDE3 +:10A2E000002801D0FFF7E6FF201C13F029FB041C17 +:10A2F000012E06D1032302209C430D4B0443E0189A +:10A3000015E06868F7F72AFD0021051C0FF080FDB5 +:10A310000028E7D1281C13F013FB011C201C0FF0B0 +:10A32000C7FF032302249843014B2043C01870BD8C +:10A330000000808008B5F7F711FD13F02BFA032316 +:10A340009843013B1843014BC01808BD00008080B2 +:10A3500038B50D1CF7F702FD041C281CF7F7FEFCAE +:10A36000011C201C13F06AFB03239843013B184394 +:10A37000014BC01838BDC0460000808010B5F7F70B +:10A38000EDFC0021041C0FF039FD002801D0FFF77F +:10A3900091FF201C13F0FAFC03239843013B184360 +:10A3A000014BC01810BDC04600008080F0B5071CEE +:10A3B000443787B0041C381C0191002618F0E4FBD8 +:10A3C0002069431C18D00A2804D1201C1AF036FF3B +:10A3D0000126F5E7FBF716FC002823D12369232B80 +:10A3E00008D1201C1AF02AFF23695A1CE8D00A2B36 +:10A3F000F7D1E5E75C2B07D0E369256A019AA363EF +:10A40000E563002A12D117E0201C1AF017FF236918 +:10A410000A2B07D0E369A363236AE3630423403470 +:10A420002370F9E2201C1AF009FFC9E7012B03D1C0 +:10A430000622012D00D07AE1636A002B04DA221C87 +:10A440000721403211702FE0002B06D0221C06217C +:10A4500040321170013B6362B8E1002E39D0A36A2B +:10A46000002B36D1211C052240310A706362226B19 +:10A47000BA4B606BD3185B001B5A013D9D4200D163 +:10A48000A4E113D9E16A8A4207D30831490019F0DF +:10A49000F5F8E36A60630833E362236B5A1C2263B6 +:10A4A000626B5B009D52636A0133D4E7236BAB4A56 +:10A4B0009A185200125A954205D2013B2363636AEF +:10A4C000013B6362F2E7954200D17FE102230B700A +:10A4D0007CE12069431C1BD1A04A236B616B9B1854 +:10A4E0005B005A5A231C4033002A00D121E1052287 +:10A4F0001A7000236362994A236B9A185200525AC9 +:10A50000002A00D162E1013B2363636A013BF1E76A +:10A51000272800D17EE1222800D17BE1752804D0D4 +:10A520001023021C9A43622A04D16369272B11D09D +:10A53000222B0FD0722803D16369622B2ED104E045 +:10A5400062282BD16369722B28D1A369272B01D0F4 +:10A55000222B23D1752803D1201C1AF06FFE59E15C +:10A5600062280ED1201C1AF069FE00230193236992 +:10A57000722B00D048E1201C1AF060FE01230193E9 +:10A5800042E100230193722800D045E1201C1AF01B +:10A5900055FE2369622BEED001233CE1FBF73EFB25 +:10A5A0002169002803D15F2901D07F291ED9231CEE +:10A5B000082240331A70C9B2381C18F03DFB201C29 +:10A5C0001AF03CFE2069431C00D1FFE0FBF726FB9C +:10A5D000002801D0217CEFE720695F28FAD07F288E +:10A5E000F8D8FBF727FB0028F4D1EFE0081CFBF7B5 +:10A5F00021FB002808D0251C216940352E290CD1CB +:10A600000A2300262B7035E023692E2B52D1606976 +:10A61000FBF710FB0028EED14CE0092300262B703D +:10A62000302927D16269173313430122161C622B8C +:10A6300020D06F2B1ED0783B5E425E411AE020692D +:10A64000431C00D1C2E0002E1BD12023021C9A43E0 +:10A65000131E452B15D13B3B2B706521381CF5F79C +:10A6600059FF201C1AF0EAFD216902220B1C2B3B2A +:10A670009343E4D1381CF5F74DFF201C1AF0DEFDA2 +:10A68000DDE7FBF7CBFA002803D021692E2909D199 +:10A690000DE02069FBF7CEFA0028F6D123692E2BB6 +:10A6A000F3D093E020230A1C9A434A2AE2D10A23DA +:10A6B0002B70DFE721692E291FD1261C381CF5F7E6 +:10A6C00029FF201C1AF0BAFD236940362E2B00D03A +:10A6D00093E165692E2D00D08FE1381C291CF5F718 +:10A6E00019FF291C381CF5F715FF201C1AF0A6FDD0 +:10A6F000201C1AF0A3FD0D2380E10026184D2F78B1 +:10A70000002F0ED0B9420CD03B1CFD20633B6A1CCD +:10A71000034202D0452F01D1013E151C01360135FF +:10A72000EDE7201C1AF08AFD002F04D10122231C22 +:10A7300040331A704AE0371C01352B78652B11D154 +:10A740006B78226901379A4205D1201C01351AF035 +:10A7500075FD3E1C06E00235EFE7C046FFFFFF7FB8 +:10A76000DF8503002B78452B0AD16B7822699A424A +:10A7700004D1201C1AF062FD3E1C0EE001220EE006 +:10A78000632B0AD16B78226901379A4205D1201CCC +:10A790001AF054FD02353E1CCFE7A04B9A5D231CF6 +:10A7A00040331A70231C40331B780422191C914338 +:10A7B000422901D0442B02D1A36A013305E0432989 +:10A7C00001D0452B02D1A36A013BA362211C403179 +:10A7D0000B78082B00D01FE10023E56CA66C904A93 +:10A7E0009800805800228418B24205D0875CAC5C87 +:10A7F000A74205D10132F6E72278002A00D1FFE016 +:10A800000133222BEBD107E1231C0C2240331A70B9 +:10A81000012306E000230193231C0B2240331A700E +:10A8200000232722049323690392222B00D1039350 +:10A83000201C1AF003FD0123039A05932369934218 +:10A840000AD16369934207D1201C1AF0F7FC201C3F +:10A850001AF0F4FC032305930026236902930133C5 +:10A8600000D1B0E0059B012B03D1029B0A2B00D144 +:10A87000A9E0059B9E4200D3ACE0029B039A934261 +:10A8800005D1381C111C0136F5F744FE97E0029BF8 +:10A890005C2B00D08DE0201C1AF0D0FC019B2569B8 +:10A8A000002B02D0381C02996BE0622D00D1A2E08F +:10A8B00012D84E2D4BD007D8222D66D0272D64D02C +:10A8C00000260A2D7BD045E05C2D5ED0612D00D1A5 +:10A8D0008FE0552D3ED11BE0742D11D007D86E2D81 +:10A8E00010D0722D12D0662D34D10C2550E0762D6B +:10A8F0000AD00DD30226782D16D06B1C5ED029E02D +:10A90000092545E00A2543E00B2541E00D253FE000 +:10A91000049B002B04D0381C5C21F5F7FBFD37E0CD +:10A920000426752D00D0B6190025013E2BD3201C1E +:10A930001AF084FC2369181C0293FBF787F900289E +:10A940004DD0029819F0A0FA2D014519EDE73548D0 +:10A95000FEF7BCF92B1C303B072B10D81D1C03261F +:10A960006369303B072B0ED8013E002E0BD0201C14 +:10A970001AF064FC2369ED00303B5D19F0E7381CE8 +:10A980005C21F5F7C7FD6B1C18D0274B9D420BD8F7 +:10A99000049B002B04D1381C291CF5F7BBFD0DE0EE +:10A9A000FF2D01D8E9B206E0231C012240331A70C2 +:10A9B00004E06B46197A381C18F03EF90026201C7A +:10A9C0001AF03CFC49E7059B9E4203D2231C03225C +:10A9D00040331A70381C311C18F076F9F6E6231C47 +:10A9E000012240331A70049B051C002BDAD11D1C78 +:10A9F000D1E70725CCE70825CAE74A233370E5E607 +:10AA0000212B07D1094BA0331A681023002A02D04A +:10AA1000023B00E00E330B7007B0F0BDB4850300BD +:10AA2000ECDF020021860300FFFF1000882E0020CB +:10AA3000054B002805D00023022802D101224B003B +:10AA40001343181C7047C04678CD020008B5024970 +:10AA50001BF0E3FF08BDC0465C29030073B501A9E4 +:10AA600001F09AFE019B061C502B02D91848194987 +:10AA70001CE08020400018F0EBFD174C051C231C47 +:10AA8000883318600023019A934203D0F15CE954A3 +:10AA90000133F9E75B22281CEA5403F01DFA2B1C52 +:10AAA000002807D1883420600C4909481DF027FA96 +:10AAB000F5F7B1FB5A1B0133591E09789B29F9D1CF +:10AAC000291C07481AF0B5FE00238834236076BDA0 +:10AAD00010F80200A0860300882E0020AF86030035 +:10AAE00080CA0200F0B58BB0061C10A80778364863 +:10AAF00005AD00900195081C111C1A1C0523F5F7E3 +:10AB0000A5FD9120000118F0A3FD304B304A1860DC +:10AB1000059B476043702B7904A903702B7A041CB2 +:10AB200083702B7BC3702B7C301C136001F034FED0 +:10AB30000025284B071C0C201D6018F089FD264BB2 +:10AB4000061C036008F0F2F9B06008F0EFF9234B3F +:10AB500023491860234B70601D70234B301C1D70FF +:10AB6000224B0A1C1D602B1C08F0EEF8201C391C1F +:10AB7000049A18F03BFD201CF8F7F0FD1C4B071E53 +:10AB80000393134E194D164C0AD108F001F80F4BE0 +:10AB900018481F60184B19681DF0B1F9F5F73BFB19 +:10ABA0000122164B1A7008F0BBF90028FBD1039B59 +:10ABB000883318603368002B03D01148296816F0D9 +:10ABC000F7FE201C0BB0F0BDC0E00200102F0020EB +:10ABD0006C01002058270020FCE0020054270020D0 +:10ABE00074E00200FB2D0020FC2D00205C270020DB +:10ABF000882E002010F8020004000020FA2D00200A +:10AC0000C686030000220D4910B50B78DBB29342D3 +:10AC100012D10B4A1478002C02D001240C7013704E +:10AC2000084B1B78002B06D0074A136820331360AB +:10AC3000064B1A6800E08268101C10BDFC2D002035 +:10AC4000FA2D0020FB2D002058270020542700203B +:10AC5000D2235B005843134A30B51368000C83427B +:10AC600006D9114C2368013323601368203B13601D +:10AC70001F23051C14689D43A54203D901240B4BD7 +:10AC80001C70F5E703401A1D202A00D92022084C29 +:10AC90002468934203D2E51829710133F9E7054B83 +:10ACA000186030BD582700205C270020FB2D0020B5 +:10ACB0005427002050270020F0B5151C42688FB0A3 +:10ACC000944606938369CA6802938B6882606344E2 +:10ACD0005A1C42601A78041C01929A1C4260DA1CC9 +:10ACE0005F7842609A78059104921A1D4260DB7881 +:10ACF00000210393031C1833C360029B03339B00A2 +:10AD0000C31804330361029B1C309B001A1C079379 +:10AD100020F08FFA149AAB00D3180B93029B049A7D +:10AD2000DB1B08939B1A05339B00E3181E1D0122B1 +:10AD30000199BD420FD9114203D1834883493A1C7E +:10AD40002CE01E1C149BB900E81B5918FEF7BAFF33 +:10AD50003D1C706027E0114202D01E1C7C4B7360CA +:10AD6000069B002B1FD1019B1B071CD4039BFA1AC7 +:10AD7000954211D3D91B8B009C462A1CBA4212D291 +:10AD8000614693005818059901320818079900691F +:10AD9000CB1AE3189861F1E76B486C492B1C06F05D +:10ADA000F3FAF5F738FA0022AA4208D01499079866 +:10ADB0009300C958C31AE31899610132F4E7069B5E +:10ADC000002B03D1019B1B0700D494E00223019ABE +:10ADD0001A4000230A920793002A04D0069818F01C +:10ADE00040FD079030600026A3680B9D0993069BE9 +:10ADF0009E4228D000222968049BDB199A4215D272 +:10AE000009989300C35899420ED1029B013B9B1AAB +:10AE10009B00E318DA69002A03D0CA084A484D4962 +:10AE200066E06A68DA610BE00132E5E70A9B002B15 +:10AE300002D14548484963E007986A6818F04AFD1E +:10AE400001360835D3E7089B03989A1D039B9200AF +:10AE5000D91CA218059B043289005918131C00281C +:10AE600008D01D68002D01D10D681D600138043324 +:10AE70000439F4E7039B9B00D318029A0632920030 +:10AE8000A2180432934209D20433191F0968002919 +:10AE9000F3D1D21A92102C48304929E0089B099A24 +:10AEA0009D00BB00D31865190693002610E0039B94 +:10AEB000059904339B0058580699B3000430C958CB +:10AEC000F9F7EEFD00280CD04368AB610136043D74 +:10AED000049B9E421ED2AA69002AF7D1019B1B0740 +:10AEE000E5D4F619099BB600F25817481C49D20858 +:10AEF00006F04AFA55E7049B002B04D01248194982 +:10AF00001CF0FDFF4DE7019B9B0703D5049818F04B +:10AF1000A8FC306065680DA825600D951AF05EFAF2 +:10AF20002E180136731E1D78FF2D09D0029B013BA0 +:10AF30005D1BAD006519E869FBF79AFBE861F0E776 +:10AF400066600FB0F0BDC04600FD0200803F030008 +:10AF5000F8DC0200DC430300573F0300D586030002 +:10AF6000078703003787030070B5041C0D1C1049C8 +:10AF70001BF053FD6968201C0122F6F7BBFD0D4E46 +:10AF8000201C311C1BF049FDA968201C0122F6F78A +:10AF9000B1FD311C201C1BF040FDE968201C012282 +:10AFA000F6F7A8FD201C04491BF037FD70BDC04614 +:10AFB0005E8703008B4003001B43030070B5061C33 +:10AFC00010200D1C141C18F043FB034B46608560D9 +:10AFD0000360C46070BDC04600E202008022044BE2 +:10AFE00052001A600123034A1360034A136070473A +:10AFF00000E100E00C8C0040008000408022054B06 +:10B000005200DA67044BFF3A5A600022034B1A6081 +:10B010007047C04604E100E0008000400C8C004016 +:10B0200038B501251D4B1E4C18601E4BE550C0461F +:10B03000FFF7E4FF1C4A1D4BE560E25000230221AC +:10B040001B4AC220A3500432A15049180832A15013 +:10B050008021C12209039200A150053AFF21FF3A45 +:10B06000A3504024134B80001A588A432243802463 +:10B070001A500C301A5824061202120A22431A508F +:10B0800004301A588A433F390A431A508022120466 +:10B090001A60802252041A6038BDC0466027002022 +:10B0A00000800040FC0F0000701700004C050000FD +:10B0B0000405000000E100E038B5224C224D636C2D +:10B0C000002B0AD000236364204B1B689847A822FA +:10B0D000D200AB580001C018A850A36C1A4D002B29 +:10B0E0000AD00022174B9A64184B5B689847184A9D +:10B0F0000001AB58C018A850E36C134D002B0BD0C7 +:10B100000022104BDA64114B9B689847A922D200A9 +:10B11000AB580001C018A850236D0B49002B0FD06D +:10B120000022084B0B481A650B4A8B581B188B5092 +:10B130000A4A1368063313608022094B12045A60CE +:10B1400038BDC046FC800040008000401400002054 +:10B1500044050000701700004C050000FC2C002086 +:10B16000FCE100E0F7B50191032824D8134B8000DF +:10B17000C758C2230125124C9B00E75003191D64D8 +:10B18000A825ED005E59B4460E4EA659921B6244A6 +:10B19000D117090F8C4662441211013200920A49FC +:10B1A000019A4250C121009A89001201B6186750D5 +:10B1B00000205E5101E001204042FEBD78E2020025 +:10B1C000008000404C0500001400002003280BD82C +:10B1D000074B8000C158C223064A9B00D150064A43 +:10B1E000064BC250002001E0012040427047C0469B +:10B1F00078E2020000800040175402001400002092 +:10B2000008B5024B1B68984708BDC0466027002060 +:10B2100010B50024054AA358002B02D00021A150EC +:10B2200098470434102CF5D110BDC0466427002087 +:10B23000074A89008B58002B06D188508021054A87 +:10B2400049045160181C01E0012040427047C0468B +:10B2500064270020FCE100E030B585B003AB051C9D +:10B26000141C081C02AA01A91AF0C9F8019A16496F +:10B2700000238A4200D0531002984210884200D125 +:10B280002A1C002B04DA5B19D843C017034002E0E4 +:10B29000AB4200D92B1C002A01DA521902E0AA4263 +:10B2A00000D92A1C23609A4200DA1A1C039B6260B0 +:10B2B0008B4205D0032B03D05B10A360002001E07C +:10B2C0000120A06005B030BD74E00200F0B587B089 +:10B2D000061C151C0C9F1B2803D1BA4212D000205B +:10B2E0003FE0192808D01C280CD13D1C171C0A1C53 +:10B2F0001D26191C131C05E03D1C171C0A1C1A26D0 +:10B30000191C131C0397AF4200D903951C1C002382 +:10B3100002910193019B039A93421BD0029B0594D7 +:10B32000049301CB02CC0293F6F762FC002802D012 +:10B33000019B0133EDE71B2ED1D0049B301C196813 +:10B34000059B1A68FCF7A2FF074BC01A43425841FD +:10B35000C0B206E0BD4201D002D2C0E71A2EBED074 +:10B36000012007B0F0BDC04634CD0200F0B51E1C70 +:10B3700085B0039018680D1C171CF6F7A1FB7368C5 +:10B38000019002930024022F18D9291CB2680123CE +:10B39000F6F758FD041C032F10D0291C0198F26801 +:10B3A0000123F6F74FFD051C08E0039AA300D058CF +:10B3B0000299F6F71DFC002808D10134AC42F4D301 +:10B3C000054906481CF09BFDF4F725FF01206400A9 +:10B3D000204305B0F0BDC0466587030010F80200A9 +:10B3E000F8B5041C0D1CA368002B0AD0334AE96889 +:10B3F000914206D0EB58002B03D00422E3681A6078 +:10B400005AE0A86B002820D0062163680430DB00D6 +:10B4100019430022F9F744FB031E16D0227C002AB0 +:10B4200002D0002021680BE02068002807D0234AC2 +:10B43000E968914203D0224A954200D00069291C54 +:10B440005A68E368FCF7D6FD36E02368002B03D189 +:10B450006E6B002E14D12FE0227C002AF8D1174AFF +:10B46000E9689142F4D0164A9542F1D018696168B2 +:10B47000E268FCF701FEE3681B68002BE8D01BE0E4 +:10B4800075680836002D17D000276B1E0C4A9F42A6 +:10B490000CD2BB00F158914206D0201CFFF7A0FF50 +:10B4A000E3681B68002B07D10137EEE7054BED1869 +:10B4B000AD00AD59954296D1F8BDC04675B70000B4 +:10B4C00078FF0200FFFFFF3FF0B5146889B0002C41 +:10B4D0001FD143685E6B002E1BD0171C736803AD31 +:10B4E00001938368083603936960AC60EA602C744A +:10B4F000019B9C4209D0A300F158281CFFF770FF64 +:10B500003B68002B05D10134F2E7281C0249FFF704 +:10B5100067FF09B0F0BDC04678FF020008B50B1CFC +:10B5200002495A681BF045FB08BDC0467C870300F2 +:10B5300070B50E1C00218AB0041C151C05A814222D +:10B54000009101911FF075FE202307936B4605942F +:10B5500008931C23002D02D0042D07D11A23216843 +:10B5600005A80693FFF73CFF022106E01B23216894 +:10B5700005A80693FFF734FF03210098042805D19E +:10B580002069311C2A1CF6F711FD0DE000280BD0B4 +:10B5900002AB0022029403960495FCF7EFFC031C17 +:10B5A0000248042D00D1181C0AB070BD74E00200DE +:10B5B000F0B5204B82008BB0D25805AE00237260EC +:10B5C0001422019003AF05910D1C301C09680393F0 +:10B5D0007B60B260F7603374FFF702FF039C042CBA +:10B5E00005D101982969FCF75FFC041C1EE0002CC2 +:10B5F0000DD0201C291C19F0C5F9019B041C022B3D +:10B6000014D1F6F773FB0124400004430EE0019BC4 +:10B61000022B0BD12433301C29687360FFF7E0FE46 +:10B620003B68002B02D101246D002C43201C0BB081 +:10B63000F0BDC046F0EC0200F0B5161C724272413B +:10B6400089B00C1C1F3200230492082201A903AD0B +:10B650000691071C2168281C019302932B74039404 +:10B660000592FFF7BDFE019B002B08D1002E06D1ED +:10B670001F33281C21686B60AE60FFF7B1FE019894 +:10B68000042819D12069F6F71BFA164BC2689A42B2 +:10B690000ED1002E07D02368586817F0F0F9011C6E +:10B6A000381C1BF0BAF98022381C324321690BE0A8 +:10B6B000381C2169321C07E0002808D0211C19F031 +:10B6C00061F90022011C381CF6F714FA08E0201C6E +:10B6D00017F081FE0449021C231C381C1BF069FA78 +:10B6E00009B0F0BD711201008987030038B5041C50 +:10B6F0000D1C0B491BF091F96968201C0022F6F71C +:10B70000F9F9201C07491BF088F9A968201C0022C0 +:10B71000F6F7F0F9201C04491BF07FF938BDC0464C +:10B720009B8703008B400300C1830300F7B500250E +:10B73000436808300F1C061C2C1C0193019B9D4282 +:10B7400012D0AB00F358094A93420BD0084AD9688B +:10B75000914202D03B60013404E0586B391CFFF782 +:10B76000E5FF24180135E9E7201CFEBD78FF020043 +:10B7700075B70000F0B58FB0051C0F1C406B05A914 +:10B7800001920293FFF7D2FF061DB600301C17F09E +:10B790005FFF041C002120C018F08AF9321C201C15 +:10B7A000103A103000211FF044FD012F05D1029BFB +:10B7B0001B680393042B00D183E00922002309A80E +:10B7C000426007AE0332291C8260C660037407938F +:10B7D00073600993FFF704FE0798042807D10598C2 +:10B7E000391CC668019A029BB047206123E00028FB +:10B7F00021D0019A3A4306D1012106AB0695FCF708 +:10B80000BDFB041C17E0019B5C003C190134A40043 +:10B81000201C17F01DFF221F0390029920C01FF06B +:10B82000EBFC791C3068019A039BFCF7A7FB041C16 +:10B83000039817F034FF201CF6F742F9A84240D1D4 +:10B840000023082209A8291C089307930B93099445 +:10B850000A92FFF7C5FD079B002B32D001993943AF +:10B8600005D1081C07AA19F095F8061C1CE0019BDD +:10B870005E00BE190236B600301C17F0E9FE321C1D +:10B88000051C079B083A03600393089B02994360D9 +:10B8900008301FF0B1FC381C01992A1C19F07AF805 +:10B8A000061C281C17F0FBFE074B9E4209D0301CDB +:10B8B00017F091FD0549021C054805F065FDF4F7F8 +:10B8C000AAFC201C0FB0F0BD74E00200A4870300A6 +:10B8D00000FD020038B5C568041C002D06D10449DE +:10B8E0006268044805F050FDF4F795FCA84738BDA0 +:10B8F000CC87030000FD0200F8B5041C0F1C161CC9 +:10B900001D1C19F00FFE002809D1201C17F063FD43 +:10B910000949021C094805F037FDF4F77CFC0428AE +:10B9200001D1206902E0211CF8F7B2F9391C321C60 +:10B930002B1CFCF723FBF8BDF681030000FD020081 +:10B94000F0B5154B89B0161C8200D5580C1C0C2282 +:10B950000021071C68461FF06CFC182303A84560F3 +:10B96000836000256B462168C36005740394FFF76C +:10B9700037FD0098042805D1381C2169321CFCF7DA +:10B9800085FC07E0002805D00120291C6A460296A4 +:10B9900019F000F809B0F0BDA8EB0200F0B585B0D1 +:10B9A000071C0D1C081C161C01A902AA19F0E4FAB8 +:10B9B0000023019902988B420CD09A008258D468D7 +:10B9C000002C05D123495268234805F0DDFC26E010 +:10B9D0000133F0E73C2017F04DFE204B041C0360C0 +:10B9E0001F4B476083601F4B4563C3601E4B8663DC +:10B9F00003611E4B03A943611D4B83611D4BC36152 +:10BA00001D4B03621D4B43621D4BC362281CFFF795 +:10BA10008DFE012805D910481A491CF070FAF4F778 +:10BA2000FAFBA36B4E21181D0022F9F739F8051E09 +:10BA30000DD0032243681A4009D11B685B68F22BC2 +:10BA400005D1031D0121104819F0C7FD6860201CB5 +:10BA500005B0F0BDE987030000FD02006CEB0200B9 +:10BA600039B6000075B70000F9B80000B1B50000A4 +:10BA700041B900004F55020031B500009F56020049 +:10BA80005B56020012880300A8EC020037B51C1CAC +:10BA900000230D1C0093081C0333111C0122F4F732 +:10BAA000A3FD012D09D0032D0BD1206800F0DEF994 +:10BAB0006168A268FFF772FF09E02068F6F700F8F6 +:10BAC00005E0034903481CF01AFAF4F7A4FB3EBD55 +:10BAD0004088030000FD020038B5051C0C200C1C3A +:10BAE00017F0B6FD024B45600360846038BDC04668 +:10BAF00030EC0200F8B50F1CB8421ED003240440FD +:10BB00001DD1134B02689A421BD1466B002E1AD0EE +:10BB100075680836002D18D06B1E9C4208D2A30011 +:10BB2000F058391CFFF7E6FF00280FD10134F3E786 +:10BB3000084BED18AD00A859DEE7012006E0002013 +:10BB400004E0201C02E0301C00E0281CF8BDC046C8 +:10BB50006CEB0200FFFFFF3FF0B585B0051C0191C3 +:10BB6000081C8B0710D10B68154A934204D101239E +:10BB7000029301AB03930DE0124A934204D102A950 +:10BB800003AA19F0F9F905E00F4910481CF0B7F9BC +:10BB9000F4F741FB0024029E039FB4420BD0A300A4 +:10BBA000F9580B4B994208D0281CFFF7A3FF002837 +:10BBB00003D10134F1E7074800E0074805B0F0BDC4 +:10BBC0006CEB0200BCDC02005C88030000FD02009C +:10BBD00078FF020078CD020034CD020008B583075B +:10BBE00003D1064B02689A4205D0054905481CF06E +:10BBF00086F9F4F710FBFFF7AFFF08BD6CEB02000E +:10BC00009588030000FD0200F7B5CC1CA400071CBA +:10BC1000201C0E1C019217F01BFD221C051C054B5D +:10BC20004760866003600C3A01990C301FF0E4FA1B +:10BC3000281CFEBD18ED0200032210B502400121B0 +:10BC4000002A04D10A4C03688C46A3420ED00B1C78 +:10BC500003409C4608D1002A08D1036805481B1AF6 +:10BC60005A425A41944601E001239C46604610BD69 +:10BC70003CCD020030D3020010B5041CFFF7DCFFFE +:10BC80000123002809D10322031C2240022A04D1E7 +:10BC9000034B2340063B581E83410120184010BD32 +:10BCA000070080FF08B517F096FB0349021C034804 +:10BCB00005F06AFBF4F7AFFAB888030000FD020054 +:10BCC00010B5041C102017F0C3FC044B8460036003 +:10BCD000034B43600023C36010BDC0463CE202003A +:10BCE000A35A0200F7B50E1C0193041C8B180A1C02 +:10BCF00000210093009B9A420ED21378272B04D088 +:10BD0000223B58424341DBB201E0002301210132D2 +:10BD1000002BEFD0272503E02725002900D0053D83 +:10BD20001F4F201C391C2A1C1AF043FF009B9E4207 +:10BD30002FD23278AA4203D1201C1A492A1C24E0AF +:10BD40005C2A02D1201C18491AE01F2A0AD97F2A2E +:10BD500019D0019B002B02D053B2002B0CDB201C0E +:10BD6000391C12E00A2A02D1201C104908E00D2AD1 +:10BD700002D1201C0E4903E0092A04D1201C0D49E0 +:10BD80001AF04BFE03E0201C0B491AF012FF01369B +:10BD9000CCE7391C2A1C201C1AF00BFFF7BDC0464B +:10BDA000934103009241030096410300994103002F +:10BDB0009C4103009F410300A2410300194B70B551 +:10BDC000061C0D1C98420ED188684968F4F796FA53 +:10BDD000041E08D0281C16F0CCFE00230620E40028 +:10BDE0002B6020431DE0102017F032FC6968041C12 +:10BDF00081600660A868F4F763FA6B686060591C9C +:10BE00002B68994202D1AB68E36003E0A86817F0A1 +:10BE100035FCE0600023201CE268A1685354AB604D +:10BE20002B6070BD80CA020038B5051C0C1C002AAE +:10BE300002D0F4F799FA03E0F4F760FA002803D08F +:10BE40000623C000184304E00248291C221C19F0F4 +:10BE5000F0FC38BD80CA020008B5031C0A1C024869 +:10BE6000191C19F0E6FC08BD48EF020008B50B4BA1 +:10BE70000340062B01D1C0080EE0031C820708D145 +:10BE8000074A0168914204D19968C068F4F76CFAD6 +:10BE900002E0181CFFF706FF08BDC046070080FF40 +:10BEA00080CA020008B5064B0340062B03D1C00828 +:10BEB00016F0EAFD02E08368C0680B6008BDC0466A +:10BEC000070080FFF0B5002689B0051C0F1C081C78 +:10BED0001C1C111C0096321C0323F4F785FB0E205A +:10BEE000B74237D0012F0ED104A802AA1021F4F7CF +:10BEF00005FB02A82168321CF5F7FCFD281C04A9EB +:10BF0000FFF75CFF26E0206804A983071AD1124BD3 +:10BF100002689A4216D1FFF7C5FF104B061C206835 +:10BF20000340062B04D1C00816F09FFD041C00E05E +:10BF300044681020049F17F08BFB05608760C66083 +:10BF4000446007E00122F6F765F80498059900229D +:10BF5000FFF76AFF09B0F0BD48EF0200070080FF5D +:10BF6000F0B58BB0049008680D1C06920793F5F7A6 +:10BF7000A7FD041C6868F5F7A3FD061EA64202D0C3 +:10BF80006868FFF78FFE08A92868FFF78BFF041C7D +:10BF900009A96868FFF786FF089A0590A31803931C +:10BFA000049B271C022B19D9AB681F498B4206D072 +:10BFB0000121301C0091211CF5F7ACFC071C049BEF +:10BFC000032B0BD0EB68184A934207D00122301C98 +:10BFD0000092211C089AF5F79DFC0390039B381CE6 +:10BFE000D91B069B059A0093099B19F003FC011EBF +:10BFF0000AD10120079B4042002B12D00B490C486C +:10C000001BF07DFFF4F707F90A4B9E4205D1201C77 +:10C0100017F007FF0121400002E0001B4100012052 +:10C0200008430BB0F0BDC04674E00200E488030092 +:10C0300010F8020080CA0200F0B58DB0041C039114 +:10C04000F5F73EFD04A9061C201CFFF72BFF01900D +:10C05000039883070BD10368314A934204D105A9A1 +:10C0600006AA18F089FF10E02E4A934208D02D4806 +:10C070000121C36800220293029C03ABA0470390F6 +:10C08000039805A906AA16F052FF0024251C059B5B +:10C090009C421ED2069BA700D859F5F711FDB0426D +:10C0A00005D0214921481BF02AFFF4F7B4F8002CF1 +:10C0B00001D0049BED18069BD8591D4B0340062B5D +:10C0C00003D1C00816F0D6FC00E080682D180134BA +:10C0D000DDE7291C002508A816F038FD0A9C059B01 +:10C0E0009D4217D2002D06D0201C0199049A1FF002 +:10C0F00083F8049BE418069AAB00985807A9FFF749 +:10C10000D1FE079A011C201C1FF076F8079B013511 +:10C11000E418E4E7301C08A9FFF750FE0DB0F0BDAD +:10C12000BCDC02009CC60200F888030000FD02008F +:10C13000070080FFF0B5071C87B008680D1CF5F7F5 +:10C14000BFFC04A9061C2868FFF7ACFE05A9041C67 +:10C150006868FFF7A7FE0390201C022F07D9012370 +:10C16000301C0093211C049AAB68F5F7D3FB059AA9 +:10C17000041B0499A418064B8C4206D803991FF09F +:10C180002CF8044B002800D0014B181C07B0F0BD60 +:10C1900078CD020034CD020073B50D1C061C086872 +:10C1A0006946FFF77FFE01A9041C6868FFF77AFE65 +:10C1B000011C022E02D90848FCF788FD019A009B59 +:10C1C00006489A4207D8981A20181FF006F8031E4E +:10C1D000034800D0014876BD3D89030078CD0200B8 +:10C1E00034CD0200F0B58FB0079010680C1C171CFE +:10C1F000F5F766FC0690012C10D07868F5F760FC26 +:10C20000069B984202D07868FFF74CFD78680DA92C +:10C21000FFF748FE0D9B0890099303E0072309935D +:10C220002C4B089338680DA9FFF73CFE0D9B0B9033 +:10C230000493079B012B05D1049B5D1E01235B42E8 +:10C240000A9302E0012300250A930024261C049B84 +:10C2500003940593059B002B22D00B9B08985A1939 +:10C2600001230999009319F0C5FA002812D1039B04 +:10C27000002B0ED1079B002B03D1049B2E1C5D1EAF +:10C2800019E0079B012B15D001232C1C2E1C0393B6 +:10C2900000E02C1C0A9BED18059B013B0593D9E798 +:10C2A000039B002B08D10C4B069A0E209A420FD00C +:10C2B0000A480DE0039E2C1C049B0134A21B9A42E9 +:10C2C00001D1386804E00B9B0698991919F0B1FA6E +:10C2D0000FB0F0BD0B8D030080CA020054ED0200C8 +:10C2E000F0B589B0049008680D1CF5F7E9FB041C53 +:10C2F0006868F5F7E5FB071EA74202D06868FFF7FC +:10C30000D1FC06A92868FFF7CDFD061C07A96868BF +:10C31000FFF7C8FD069A0590B3180393049B341CDD +:10C32000022B19D9AB681F498B4206D00121381C5A +:10C330000091311CF5F7EEFA041C049B032B0BD083 +:10C34000EB68184A934207D00122381C0092311C36 +:10C35000069AF5F7DFFA0390079B0025002B10D112 +:10C36000039B201C191B17F06BFD013040000125B9 +:10C3700014E0201C05991EF030FF002807D101357C +:10C38000341C079A039BA6189E42F2D904E0201C95 +:10C3900017F040FD061CF3E701206D00284309B0AB +:10C3A000F0BDC04674E00200F0B58BB00E1C071C57 +:10C3B0000392F5F785FB041C301CF5F781FB8442E2 +:10C3C00002D0301CFFF76EFC05A9381CFFF76AFD90 +:10C3D00006A9051C301CFFF765FD069B021C002BFF +:10C3E00005D11A491A481BF08AFDF3F714FF1949C1 +:10C3F0008C4201D10E2100E0174907910891099163 +:10C400000399002901DD079700E009970399281C8B +:10C410000091059919F0EEF9002811D0471B3A1C3C +:10C42000291C201C19F005FA069A059BB918DF1B78 +:10C4300007906918BA1A201C089619F0FAF90990A1 +:10C4400007A90320FDF73EFC0BB0F0BD4F890300A8 +:10C4500010F8020080CA020054ED020008B5011C69 +:10C46000014819F0FDFA08BD613E020008B5011C43 +:10C47000014819F0F5FA08BD753E0200F7B5061C33 +:10C48000081C01A9FFF70EFD019B051C002B01D123 +:10C49000144826E0144B041C9E4201D1002712E0F0 +:10C4A000124B9E42FAD0019A631B934218D2207815 +:10C4B000B04701340028F6D1EAE72078F9F7AEFB5F +:10C4C000002805D10134019A631B9342F5D305E09E +:10C4D0002078B0470028DBD00127F3E7002FD7D022 +:10C4E0000348FEBD78CD0200855C00009D5C000025 +:10C4F00034CD020008B5011C0148FFF7BFFF08BD9D +:10C50000055C000008B5011C0148FFF7B7FF08BD36 +:10C510001D5C000008B5011C0148FFF7AFFF08BD16 +:10C52000355C000008B5011C0148FFF7A7FF08BDF6 +:10C53000855C000008B5011C0148FFF79FFF08BD9E +:10C540009D5C0000F0B585B0041C0D1C171CF5F7B0 +:10C55000B7FA6946061C201CFFF7A4FC041C042F34 +:10C5600022D1AB0715D1124B2A689A4211D10098FB +:10C57000291C01AAFEF770FE002802D10D48FCF725 +:10C58000A5FB019B029AE118D21A301C19F051F94F +:10C590000BE00023301C00992A1CF5F753FC012303 +:10C5A000205C4000184300E0002005B0F0BDC0460C +:10C5B00000E202009B40030070B58AB000296BD0F6 +:10C5C00018681C1C031C364D2B40062B05D0830716 +:10C5D0001ED1344B02689A421AD10239012955D82A +:10C5E00006A9FFF75FFC061C20680540062D04D154 +:10C5F000C00816F03AFA041C00E044681020069DBA +:10C6000017F026F8284B85600360C660446044E05C +:10C6100001293BD8012210420CD04410211C06A84D +:10C6200016F094FA089B0021181C221C01931EF09E +:10C6300000FE26E003A916F0E4FE002805D00399C9 +:10C64000049A194819F0F5F827E02068F5F73EFC40 +:10C65000002802D106A8102101E0411006A816F01A +:10C660005EFA2068FBF784FD041C201CFBF7CEFD5E +:10C67000002806D0F5F70EFBC1B206A816F0DCFACA +:10C68000F3E706A90848FFF799FB06E007490848C1 +:10C690001BF035FCF3F7BFFD06480AB070BDC0467D +:10C6A000070080FF80CA020048EF02005F89030094 +:10C6B00000FD020054ED020073B5041C081C01A922 +:10C6C000161CFFF7EFFB051C201C042E05D10849A2 +:10C6D000019A2B1C1AF06DFA08E006491AF09DF930 +:10C6E000201C291C019A0123FFF7FCFA73BDC046E8 +:10C6F0008D410300EB260300F7B5021C1A4B051C05 +:10C700000C1C1A401E1C062A08D10B40401A062B8E +:10C7100026D0E80816F0A9F9071C00E04768264073 +:10C72000062E03D1E00816F0A0F900E06068002FA3 +:10C7300005D0002803D0874201D0002013E0281C38 +:10C740006946FFF7AFFB01A9051C201CFFF7AAFBF8 +:10C75000009A019B011C9A42EFD1281C1EF03DFD5E +:10C7600044426041C0B2FEBD070080FF084B07B5E0 +:10C770000340062B08D0830704D103689A69054B50 +:10C780009A4201D0FFF78EFA01A9FFF78BFB0EBD8D +:10C79000070080FF79CD00000A4B13B503400C1C45 +:10C7A000062B08D0830704D103689A69064B9A4286 +:10C7B00001D0FFF777FA01A9FFF774FB019B236013 +:10C7C00016BDC046070080FF79CD0000F0B59BB0D4 +:10C7D0000B900C1C079212A810210EAA0993F3F7D4 +:10C7E0008DFE079B9C4200D3ACE221787D2909D1C4 +:10C7F000079B671C9F4202D261787D2910D0BE48FA +:10C80000BE493EE07B2904D012A816F015FA271C79 +:10C8100087E2079B671C9F4254D261787B2903D132 +:10C8200012A816F009FA7CE27D2916D0212914D02D +:10C830003D1C3A2911D02B787D2B08D0212B06D016 +:10C840003A2B04D0079B01359D42F4D140E0079B71 +:10C850009D423DD23C1C2F1C01E000252C1C3B7846 +:10C86000212B12D1079A7B1C9A4208D97E78331C5F +:10C87000723B012B03D8BB1C934208D328E09E488F +:10C880009F491BF03CFBF3F7C6FC3B1C00261A78C3 +:10C8900000273A2A00D048E25F1C5B787D2B14D039 +:10C8A0003B1C393A07998B4212D219787B2901D166 +:10C8B000013205E07D2903D1013A002A00D134E29A +:10C8C0000133EFE70026351C341C079B9F4202D33F +:10C8D00089488C49D5E7002305933B787D2B02D00E +:10C8E00085488949CDE7002C47D00023207816934E +:10C8F000F9F7A0F9211C002822D0099B1B6804939A +:10C90000002B02DD7C488149BBE716AA201C291CAC +:10C9100018F058FF209A169B013A0690934237D29E +:10C92000219A01339B009B58099A049301235B428F +:10C9300013601CE00B782E2B04D05B2B02D001314E +:10C94000A942F7D30691201C091B0122FFF76CFABC +:10C95000041C00222298211CF8F7A2F8002804D118 +:10C96000211C6B481BF0C4FA8DE743680493069BB7 +:10C97000AB4217D26748FCF7A9F9099B1B68002B4B +:10C9800002DA5D4864497CE7209A013A934202D377 +:10C990006248634975E7013321999A00525804921D +:10C9A000099A1360059B002B03D1002E00D1BAE138 +:10C9B00001E0002E12D016A8102110AAF3F79EFD58 +:10C9C000321C733A531E9A4110A8D2B20499F5F75B +:10C9D00091F8544816A9FFF7F1F9049001235B423E +:10C9E0000D931093059B002B00D1A3E0F6F740FFB9 +:10C9F000209B16A80093219B05990193229B3A1C2A +:10CA00000293099BFFF7E2FE16A816F002F9179BA6 +:10CA10000678C3180A930023041C05939E4216D07F +:10CA2000414D311C281C1EF0F1FC002800D07FE194 +:10CA300063780593002B09D0281C191C1EF0E6FC16 +:10CA4000002800D078E10590061C00E0059E2378C0 +:10CA500008932B2B05D02D2B05D00425202B05D199 +:10CA600002E0022500E00025013401E000250895E0 +:10CA70002378232B02D1133B1D4301342378302B21 +:10CA800007D1059B002B01D13D330593002E00D12A +:10CA90003036201C0A990DAA18F094FE03780690EF +:10CAA0002C2B04D10C3B1D43031C01330693069B26 +:10CAB0001B782E2B06D106980A99013010AA18F07F +:10CAC00081FE0690069B1C78002C07D01748211C7D +:10CAD0001EF09CFC002800D030E1041C069B1B7853 +:10CAE000002B02D004481249CBE616A816F041F8F4 +:10CAF000059B002B2BD121E010F80200798903005F +:10CB0000A1890300BA890300D2890300F6890300D2 +:10CB1000F0FD0200598A0300768A03006CF90200D6 +:10CB2000408A030080CA0200C08A0300C58A03004D +:10CB3000D58A0300059D2C1C2E1C08950498FFF730 +:10CB40009BF83E230593002801D1023B0593002E5C +:10CB500000D12036089B002B09D0732C02D17E48CF +:10CB60007E498EE6632C02D17B487D4989E6059B90 +:10CB70003D2B05D05E2B05D03C2B05D13B3B02E085 +:10CB8000402300E080231D430498FFF755F8002858 +:10CB90005FD0632C23D016D8472C06D8452C58D20A +:10CBA000002C27D0252C54D04CE0582C3CD0622CA3 +:10CBB00048D10D9B009502930023019603930EA884 +:10CBC000049902222EE0672C02D8652C12D340E093 +:10CBD0006F2C19D0782C27D06E2C33D10AE0049812 +:10CBE000F5F758F80D9B16A90870012200960193DD +:10CBF0000EA889E00D9B00950293002301960393F4 +:10CC00000EA804990A220DE0EB0602D580239B00B2 +:10CC10001D430D9B08220293002304990095019661 +:10CC200003930EA861330AE00D9A231C029200229E +:10CC300004990392173B009501960EA8103201F05B +:10CC400057FC6EE0049816F0C6FB4649031C4248A8 +:10CC500063E00498FFF710F8002838D0002C1FD0AC +:10CC60006E2C1DD0472C15D8452C1AD2252C27D137 +:10CC70000498F5F773F83C490DF00CFD80230D9AEC +:10CC80005B000192109A011C02922B4300960EA8A1 +:10CC9000662212E0231C653BDBB2022B10D800E0B9 +:10CCA00067240498F5F75AF80D9B221C0193109BFA +:10CCB000011C02932B1C00960EA819F02BFF30E0EC +:10CCC000049816F088FB2949031C234825E0059B9E +:10CCD0003D2B02D120482649D3E50498002C01D0F1 +:10CCE000732C15D116A9FFF757FD109B011C169A3E +:10CCF000002B00DA1092109B9A4200D916930D9BDC +:10CD0000169A009601930EA82B1C01F093FB08E0E5 +:10CD100016F061FB1749031C0F48221C04F034FB7A +:10CD2000B1E57C1C5DE5732645E605971F1CD4E53F +:10CD30000596013400268AE6023488E6069B013314 +:10CD40000693CBE60B9A12AB13CB13C21B6813608E +:10CD50000B981BB0F0BDC04610F80200EE8A03002D +:10CD60001A8B03004D8B03000000C8427E8B03002A +:10CD7000B28B0300E78B0300F0B5A1B0041C0D1CBF +:10CD80000D920A2800D0E6E1073C0692144010D12B +:10CD90001368B94A934206D1069810A90FAA18F051 +:10CDA000EBF806940BE0B54A934202D10F9410942D +:10CDB00005E00DAB0F930123109300230693109B06 +:10CDC000281C08930F9B11A90A93FFF76BF8002307 +:10CDD0000B900C93AB0705D1A94A2B689B1A5A42BA +:10CDE0005A410C9214AA18A81021F3F787FB119A44 +:10CDF000002794460B9B0B9C63440593059B9C4228 +:10CE000000D39BE12178252903D018A815F014FF41 +:10CE100092E1059B661C9E4202D39A489A4916E00D +:10CE20006178252904D118A815F006FF341C83E188 +:10CE30000025282919D1A01C061C00E001363378F2 +:10CE4000292B08D0059B9E42F8D38E488F491BF0B2 +:10CE500056F8F3F7E0F9311A0122FEF7E5FF011C5D +:10CE60000698F7F723F9051C01360023341C002629 +:10CE7000099320330793059B9C4211D223782D2BD5 +:10CE800001D12C3B06E02B2B01D1293B02E0202BCA +:10CE900002D11C3B1E430FE0232B0BD0302B05D0BF +:10CEA00000231293059B9C4208D320E04022079365 +:10CEB000164301E0102309930134DCE723782A2B81 +:10CEC0000FD1089A3B1E934202D371487149BEE7C5 +:10CED0000A9A9B009858F4F7DDFE0137129001344E +:10CEE00005E0201C059912AA18F06CFC041C012313 +:10CEF0005B421393059B9C428FD223782E2B1ED12D +:10CF0000059B601C984288D263782A2B0CD1089A22 +:10CF10003B1E9342D9D20A9A9B009858F4F7BAFE66 +:10CF200001371390023406E00023059913AA1393E6 +:10CF300018F048FC041C059B9C4200D36DE7002DB3 +:10CF400007D1089A3B1E9342BFD20A9A9B009D5874 +:10CF500001372378672B0FD8652B6AD2582B00D165 +:10CF6000D1E004D81A1C453A022A62D9DBE0632BCF +:10CF700012D0642B42D0D6E0732B07D8722B00D38B +:10CF800092E0692B3AD06F2B63D0CCE0752B35D073 +:10CF9000782B00D1B7E0C6E03F4B2B40062B05D0E5 +:10CFA000AB0714D13D4B2A689A4210D11CA9281C0A +:10CFB000FFF7F2FB1C9A011C012A02D034483849C1 +:10CFC00045E720230093129B14A801930FE0281C2F +:10CFD000FEF732FE00280ED0281CF4F75BFE20235B +:10CFE00001221CA908700093129B14A80193331C02 +:10CFF00001F020FAA0E026482A4928E703222B1C4A +:10D00000291C1340022B0AD1234B2B40062B06D0A0 +:10D01000FF23DB05E8189043F7F736FF011C079B59 +:10D0200000960193129B14A80293139B0A22039368 +:10D030001FE0281CF4F792FE079B22780093129BB6 +:10D04000011C0193139B14A80293331C19F062FD79 +:10D0500072E0099B002B02D084239B001E43291CF5 +:10D060000822079B00960193129B14A80293139B1E +:10D070000393612354E0C046BCDC020064CE02008E +:10D0800048EF020010F80200198C03002B8C0300FB +:10D0900000FD0200418C0300070080FF80CA0200EF +:10D0A000688C0300818C030016AA1CA81021F3F7DA +:10D0B00025FA23780122722B0BD000220C9B93427D +:10D0C00007D0AB0705D12B68644A9A1A51425141E7 +:10D0D0008A0016A8291CF4F70DFD139A1D9B002A3F +:10D0E00000DA1393139A9A4200D91A1C2023009352 +:10D0F000129B14A801931E99331C01F09BF91CA8E4 +:10D1000015F037FD18E0099A291C1643079A173BBA +:10D110000192129A00960292139A14A80392102276 +:10D1200001F0E6F908E00B9A4D49A41A00941A1C84 +:10D130004C4804F029F98CE601345FE6089B9F42D5 +:10D1400002D04948494982E60C9B4448002B00D153 +:10D15000474818A96EE0081CF4F7B2FC16A9061C93 +:10D16000281CFEF79FFE071C0D98072C1DD118A93F +:10D17000F4F7CEFD0025A8426DD01899A94205DC30 +:10D180003B4B0E359E4266D03A4D64E0169B1CA880 +:10D19000594315F0DBFC1E9B381C059300930121BD +:10D1A000169A189B18F03AF942E0F4F789FC864287 +:10D1B00006D10D981CA9FEF775FE1C9D05900DE08B +:10D1C000264B00259E4246D10D981CA9012216F03F +:10D1D00018F9A8423FD01C9B1D9D05931D2C06D815 +:10D1E000192C2BD2052C0DD0122C0BD032E01F2C79 +:10D1F00030D10123381C00931699059A2B1C18F086 +:10D20000F9FA22E0169B1CA8E91815F09FFC1E9B5A +:10D21000391C181C169A06931DF0EEFF169A1E9BD9 +:10D22000944606936344181C05992A1C1DF0E4FFDC +:10D23000301C1CA9FEF7C2FD051C0CE00095201C4B +:10D24000391C169A059B18F01DF90B4D002802D1C8 +:10D250000A4D00E00025281C21B0F0BD48EF020077 +:10D26000928C030010F8020000FD0200C78C03003E +:10D2700080CA020054ED020034CD020078CD0200D5 +:10D2800070B58AB0061C0C1C086804A9151CFEF7B2 +:10D2900009FE00230593049B011CC218009606A8F2 +:10D2A00005AB01940295FFF791FA06A90248FEF733 +:10D2B00085FD0AB070BDC04680CA0200F0B5071CEB +:10D2C00087B008680D1CF4F7FBFB0190012F07D90C +:10D2D0006C68022F05D0A868F4F7DCFC071C02E09C +:10D2E000444C01277F420020011C15F008FE04A9D0 +:10D2F00000902868FEF7D6FD049B051CC6183D4B20 +:10D300009C4238D1B54229D22878F8F77BFC002816 +:10D3100024D00135F6E7002F23D02C1C2078F8F715 +:10D3200071FC002802D10134B442F7D1291C621BE0 +:10D33000019818F07EFA011C0098F3F79BFCB442A8 +:10D3400055D2251C2878F8F75DFC002802D001355D +:10D35000B542F7D1FB17DB1BDB0FFF1AB542DAD35F +:10D3600045E0291C721B019818F063FA011C009813 +:10D37000F3F780FC3BE0201CF4F7A2FB019A02903B +:10D38000031C201C934201D0FEF78CFC05A9FFF77B +:10D3900003FA059B0390002B25D1174917481AF073 +:10D3A000AEFDF2F738FF019BE3189E4209D3201C23 +:10D3B0000399019A1DF011FF002803D00134002FBA +:10D3C000F1D1341C291C621B029818F032FA011C9E +:10D3D0000098F3F74FFCB44209D2059BE518FB1700 +:10D3E000DB1BDB0FFF1A059B2C1C0193E7E7009862 +:10D3F00007B0F0BD74E002004F89030010F802008E +:10D40000F0B50C1C8BB0022802D8FFF757FF7EE066 +:10D410000868F4F755FB08A9049020686668FEF7D1 +:10D4200041FD0090A068F4F735FC431C051C002169 +:10D43000181C059315F063FD364B041C9E4202D167 +:10D440003548FBF743FC301C09A9FFF7A5F9099BF8 +:10D450000690002B05D1314931481AF050FDF2F702 +:10D46000DAFE089A2F1C9446009B63440293AB009B +:10D470000393099B0193019A029B9E1A002D0BD0E6 +:10D48000009B9E4208D3301C0699019A1DF0A5FE10 +:10D49000002822D0013EF1E7E368BD005E19009A42 +:10D4A000029B04989A1A009918F0C3F93060002F73 +:10D4B00011D0059BDF1BE368BE005919181C321CF4 +:10D4C0001DF0A3FE63680021DA1BE368920098193F +:10D4D0001DF0AFFEA760201C19E0039AE368944694 +:10D4E00063440793019B0498F118029B013F9A1B28 +:10D4F000019BD21A18F09DF9079B02961860EB1752 +:10D500005B1BDB0FED1A039B043B0393B1E70BB0EE +:10D51000F0BDC04674E00200FC8C03004F8903009C +:10D5200010F8020008B50368186B00280ED0CB076E +:10D5300002D50368002B09D08B0702D54368002B66 +:10D5400004D04B0708D58368002B05D10349044854 +:10D550001AF0D5FCF2F75FFE08BDC046128D03003D +:10D56000C0F90200F0B5012189B00190FFF7DAFFA0 +:10D570008021061C490004A815F0D1FA802400235C +:10D58000069D6400009303AB0198291C221C376898 +:10D59000B847431C0ED103990B2904D1009B1848AE +:10D5A000002B21D12AE001234900194315481AF024 +:10D5B0009FFC14E0002817D0009B1B180093A0428A +:10D5C00002D2241A2D18DEE7802104A8490015F0A4 +:10D5D000F5FA051E05D10B480B4903F0D5FEF2F70D +:10D5E0001AFE80246400CEE7009B08480593337B35 +:10D5F000DB0700D4064804A9FEF7E0FB09B0F0BD44 +:10D6000074E00200C0F90200318D030080CA0200FC +:10D6100048EF0200F0B589B00091041C08680121B0 +:10D62000FFF780FF071C012C04D1009B1868FFF74F +:10D6300099FF98E0009B5868F4F72CFB051C431CED +:10D64000F3D001243B7B23426DD0041C291C04A889 +:10D6500015F065FA00230193002C62D0211C04A868 +:10D6600015F0C5FA011E04D14049414803F08CFE73 +:10D670001FE0009B3E681868221C03ABB047031CE8 +:10D68000061C013317D1211C04A815F01DFB0399BA +:10D690000B2908D1059B0093002B42D104A815F05B +:10D6A00068FA34485FE001234900194332481AF010 +:10D6B0001FFCF2F7B0FDA04202D30699059C14E0CE +:10D6C000211A04A815F000FB002EF6D129E0101C49 +:10D6D0001E3398431D3BC0280ED1019A9B18A342CC +:10D6E0001BD8013DA34216D20193019BCA5C0123C2 +:10D6F00050B20028F1DAEAE7101C0D3398430C3BD6 +:10D70000E028EAD004339A43131CF03B5A425A41B2 +:10D7100005239B1AE1E72C1C9DE7013B5B191C1BB1 +:10D720009AE716481CE0291C04A815F00FFA009B84 +:10D730002A1C1868069903AB3D68A847431C09D109 +:10D7400004A815F016FA03990A480B290BD04900D2 +:10D750002143ABE73B7B05900848234200D10848B2 +:10D7600004A9FEF72BFB09B0F0BDC0463F8D0300B6 +:10D7700090F8020074E00200C0F9020080CA0200C2 +:10D7800048EF02007FB50C1C061C08680121FFF75A +:10D79000C9FE0222051C01A96068F4F73BFC029A4D +:10D7A000022E07D9A068F4F775FA029B021E9A426E +:10D7B00000D91A1C6B462D6820680199A847431CA4 +:10D7C0000BD1009907480B290AD0012349001943BE +:10D7D00005481AF08DFBF2F71EFD012340001843A7 +:10D7E00004B070BD74E00200C0F90200F0B589B069 +:10D7F0000191041C08680121FFF794FE061C04A88F +:10D80000012C08D9019B5B685C10631C03D0211CB0 +:10D8100015F085F913E00124102115F080F9644218 +:10D820000DE0019B391C1868012203AB3568A8473D +:10D83000431C11D0002823D03B780A2B2AD0631C2C +:10D8400023D104A8012115F0D2F9071EE9D1164908 +:10D85000164803F099FD11E003990B2908D1059BA7 +:10D860000193012B0CD104A815F083F9104819E09D +:10D870000123490019430F481AF03AFBF2F7CBFC99 +:10D8800004A8012115F020FA04E0631E002C01D049 +:10D890001C1CD6E7337B0848DB0700D4074804A9E3 +:10D8A000FEF78CFA09B0F0BD3F8D030090F802003E +:10D8B00074E00200C0F9020080CA020048EF0200D2 +:10D8C000F7B50F1C0221041C161CFFF72BFE01AB41 +:10D8D0004568391C201C321CA847431C0BD10199F8 +:10D8E00007480B290AD001234900194305481AF0BB +:10D8F000FFFAF2F790FC012340001843FEBDC0463A +:10D9000074E00200C0F9020070B5051C00290CDBB0 +:10D91000032905D8081C00240CF080F80808050528 +:10D9200001238C1E9C43FE2601E00024F226B52133 +:10D9300009023143281C18F033F9002C04D00449A3 +:10D94000281C214318F02CF9EE612C6270BDC046F2 +:10D9500080B0000008B50B1C02495A6819F029F97B +:10D9600008BDC0465B830300F0B50E1C496885B056 +:10D97000041C151C002901D0002A04D1201C311CD4 +:10D9800018F0FFFA58E00F3213095918009318F0F5 +:10D9900068FA0F22A368B16870682A4000D110327B +:10D9A000009D264F2D18EF197F00DB190393234BA1 +:10D9B0000190C3185B00CB189C46039B0293002385 +:10D9C00001991027002913D061460988BF1A0B431B +:10D9D000191CF9400F1C02991B040F800199013991 +:10D9E0000191029902390291022149428C44E7E7F0 +:10D9F000BF1AFB4003994000081A104903808C4667 +:10DA0000009B01995F00C71B023763445A00381C12 +:10DA10001DF00FFC002D06D06B00023BFB5A002BC3 +:10DA200001D1013DF6E70121656033780B401A1CF6 +:10DA300023788B431343237005B0F0BDFFFFFF7FB6 +:10DA4000F0B54B68151C526887B0061C0C1C93423D +:10DA500001D22C1C0D1C0123227861681A4201D1CD +:10DA60002A7813405918301C18F0FBF9B36829784C +:10DA70009C46A3680F1C0193636820780093AB68F1 +:10DA8000474002936B68059301231A1C1F408B4388 +:10DA90000493009B8243591E6346101C03934B1C46 +:10DAA00027D0019B1F4A1B889B181818009A059BBA +:10DAB0009B1A5B188B4207D8029B1A4A1B889B183B +:10DAC000029A0232029200E0164B049A0139D318EE +:10DAD0001A1C424092B2D719039A1B0C0493131CD0 +:10DAE00002330393019B17800233000C3F0C019318 +:10DAF000D5E7009B59006144002F02D001230B8021 +:10DB00000231604618F098F90121706022782B7874 +:10DB100053400B401A1C33788B431343337007B0C8 +:10DB2000F0BDC046FFFF0000F0B55C6891B0002C6E +:10DB300002D144604C6049E1051C0B9353680E1CF4 +:10DB4000591C0692019318F08CF9069B00215B6822 +:10DB5000A8685A1C520001931DF06BFB00236B60F8 +:10DB6000069B301C5B68591C019318F07AF9301C35 +:10DB7000069918F006FAB368776802930B9B9B68C6 +:10DB800003930B9B5B680593AB680893059B9F42CF +:10DB90000ED310D80298391C039A18F0A8F900285F +:10DBA00004D10123089A7060138002E0002802DA91 +:10DBB00000236B60FFE00021059B854A9A18039BB8 +:10DBC00052009B1804931B88019119B2002905DBB0 +:10DBD00001995B0001319BB289B2F5E7931C0C936C +:10DBE0000C9A039B9B1800229C46039B63450BD217 +:10DBF000198801980C1C844022431A801022121AA2 +:10DC0000114102338AB2F1E700227C00029BA01C82 +:10DC10001A531B1801370993029B77600792099AE0 +:10DC200093420FD21988019A081C9040021C079851 +:10DC300010431022188001980233121A11418AB23F +:10DC40000792ECE7049B1B880F93029B1C19059B12 +:10DC5000FF1A5F4B6F60FF18089B7F00DB19099369 +:10DC60007368059A0A93934260D9A31E20880E9385 +:10DC70001B88000418430F990BF0EEFE0C9B00224A +:10DC8000E31A191C039F07900D93A1421AD207981B +:10DC90003B88434308888446834202D2C01A90429C +:10DCA0000AD860461B1A9A1853420B80130C92B282 +:10DCB000501E8241D21802E0821A0A8000220231EC +:10DCC0000237E2E723889A4208D3D31A5A42190C42 +:10DCD0009BB222805A1E93415A180BE09A1A228056 +:10DCE000002207E02388C018079B2080013B000C1E +:10DCF000121A0793002A0ED00020039F0D99A1420B +:10DD0000F0D20B889C463B88023763441818088081 +:10DD1000000C0231F3E76A46099B928B023B5A8062 +:10DD200009930A9B0E9C013B736099E70023049AB8 +:10DD300003998A420FD3049A01981288111C014159 +:10DD40000B4304990B8010231B1A9A4093B2049A38 +:10DD5000023A0492EBE71E4A0A9B9446029A6344F5 +:10DD60005B00D318002202998B4214D31988019CBE +:10DD7000081C204102431A801022121B9140023BD2 +:10DD80008AB2F0E7124A08999A185200525A002AA9 +:10DD90000ED1013B6B606B68002BF3D108E00C4A9D +:10DDA00002999A185200525A002A04D1013B73601A +:10DDB0007368002BF3D101210B9B1A78069B1B780B +:10DDC0005A400A4202D02B780B432B7011B0F0BDA1 +:10DDD000FFFFFF7F436830B55A0000238468A21814 +:10DDE000944207D2084D023AAB420AD815881B0468 +:10DDF0002B43F5E70278D20700D55B420B60012088 +:10DE000000E0002030BDC046FF7F0000F8B58D1E49 +:10DE100000241E2D16D81F1C40680B4B0001595CB6 +:10DE2000151C0BF019FE061CA74204D0013003217B +:10DE30000BF012FE041C281E01D01DF0FFFA033661 +:10DE400034192418201CF8BD4D8D0300064B0139F0 +:10DE5000C9B21970411880310B78044A1370044A12 +:10DE6000D25C044B1A707047FD2D0020FE2D00205F +:10DE70009C8D0300FF2D0020064B0131C9B21970A3 +:10DE8000411880310B78044A1370044AD25C044B69 +:10DE90001A707047FD2D0020FE2D00209C8D030080 +:10DEA000FF2D0020074B984204D9074B1818411842 +:10DEB000064B03E0064B1818064B4118C9180878A2 +:10DEC0007047C046A4920000228E03005B6DFFFFE6 +:10DED000E18F03000083FFFF031C20228033F0B595 +:10DEE0001A70CB4B1F3A1A70041C002389B0591CBE +:10DEF000E05C7F23CAB203406F2B01D95F2302E0AD +:10DF00005F2B01D94F230340A21880321370CBB28C +:10DF10007F2BECD1BF4A1370231C1B22FF331A70D6 +:10DF2000E432171C531CDBB203936B46B8491B7BCE +:10DF3000B94D0B70039B2E1CE31880331B782B709C +:10DF40005B2B06D19B227B1CDBB20B702A70E25448 +:10DF50002DE02E2B11D10232D2B20A70A2188032DB +:10DF60001278AC480270AD48825CD20705D47A1CA6 +:10DF7000D7B22B70E355039AD4E7A64A1370A74A89 +:10DF8000D05C820727D4002813D120220B782A7076 +:10DF9000E31880331A707B1CDFB20F70782F01D822 +:10DFA000E255E8E79B23E3556B461B7B337001206A +:10DFB00035E27F229043984A107003D1984A994BDA +:10DFC0001A602CE2413B984ADBB29849D25CCB5CA8 +:10DFD0001202134300E0964B0593059B0093009BB0 +:10DFE000002101339BB2181C0093FFF75BFF03066F +:10DFF000F5D5009B05930123029300980299FFF742 +:10E0000051FF029B0133DBB22828F5D1029D013577 +:10E01000EBB20098191C0193FFF744FF019D2928DA +:10E02000F5D10135EBB2191C00980693FFF73AFFC2 +:10E030007F23069D18403D28F3D16A46764B127B1C +:10E040001870734B039E1A70029B04965D1C714BF3 +:10E05000EDB21D70A31980331B780098291C07931B +:10E06000FFF720FF079B9842B7D10135019A731C37 +:10E07000EDB2DBB2954202D01E1C0493EAE7644B7A +:10E08000039D1E706A46029B0098013BDBB202931F +:10E09000127A604B02991A70FFF704FF5E4E030676 +:10E0A00000D590E07F225A4B18705C4B1B5C934369 +:10E0B000337009D0564B013DEDB21D7063198033AA +:10E0C0001B788342DED088E73070202812D02328C6 +:10E0D00019D02E281FD0262825D0402841D05E28D0 +:10E0E00049D02B2852D03A285FD0524A4D4B0020BD +:10E0F0001A6094E1201C291CFFF7A8FE7F223378C8 +:10E10000934340D069E7201C291CFFF79FFE33781A +:10E110005B0638D461E7201C291CFFF797FE337893 +:10E120001B0730D459E7201C291CFFF78FFE102253 +:10E1300033781340337026D1354B1B78E11880318A +:10E1400009783170482900D047E7013B3049DBB2FC +:10E150000B70E31880331B789343432B00D03CE7CC +:10E1600011E0201C291CFFF771FE042332781340B4 +:10E17000337008D131E7201C291CFFF767FE337884 +:10E180009B0600D429E7224B1D787BE7204B013DFD +:10E19000EDB21D70651980352B78452BF3D0102218 +:10E1A0009343492B00D018E7EDE7291C201CFFF70B +:10E1B0004DFE2023184A11780B40137000D161E7FF +:10E1C000134B1D78F1E7049D019B124E0133DBB226 +:10E1D00001936B461B79069A3370019B934200D1E1 +:10E1E00005E1191C0098FFF75DFE7F22084B0A4EDF +:10E1F00018700A4B1B5C934333701DD0044B0135E0 +:10E20000EDB21D70631980331B788342DCD0E4E6E5 +:10E21000FD2D0020FE2D0020FF2D00209C8D0300F1 +:10E22000888D0300040000206E8D0300088E03001B +:10E23000A5920000928D0300307020286ED0232814 +:10E2400075D02E287BD0262800D180E0402800D130 +:10E250009BE05E2800D1A2E02B2800D1AAE03A285A +:10E2600000D1B6E0252800D03FE76B1C6D4ADBB239 +:10E270001370E31880331B786B490B70452B37D133 +:10E28000A81CC0B2231880331B78684E3370684EC8 +:10E29000F65CF60900D18AE010700B70522B00D1A9 +:10E2A00085E0532B00D182E0442B00D17FE04C2B42 +:10E2B00008D10335EDB21570651980352B78592BCF +:10E2C00075D08AE6462B00D087E6EB1CDBB21370D4 +:10E2D000E31880331B780B70552B00D07DE6043596 +:10E2E000EDB21570651980352B784C2B5FD074E634 +:10E2F000492B00D071E6AB1CDBB21370E3188033FE +:10E300001B780B704E2B00D067E60335EDB215700D +:10E31000651980352B78472B49D05EE6201C291CD7 +:10E32000FFF7AAFD7F223378934340D055E6201CA7 +:10E33000291CFFF7A1FD33785B0638D44DE6201C7D +:10E34000291CFFF799FD33781B0730D445E6201CC4 +:10E35000291CFFF791FD102233781340337026D12A +:10E36000304B1B78E118803109783170482900D092 +:10E3700033E601332B49DBB20B70E31880331B7893 +:10E380009343432B00D028E611E0201C291CFFF703 +:10E3900073FD042332781340337008D11DE6201C2E +:10E3A000291CFFF769FD33789B0600D415E61D4B49 +:10E3B0001D7809E71B4B0135EDB21D7065198035DD +:10E3C0002B78452BF3D010229343492B00D004E641 +:10E3D000EDE7291C201CFFF74FFD2023124A11787E +:10E3E0000B40137000D1EFE60E4B1D78F1E7019D55 +:10E3F0000098291CFFF756FD7F2303403D2B02D0D8 +:10E400007A1CD7B2E3556A1CD2B2010605D5064A7A +:10E4100035701370049B0393ADE5151CE8E709B054 +:10E42000F0BDC046FD2D0020FF2D0020FE2D002058 +:10E430009C8D0300F0B587B0039205910D9A039966 +:10E44000051C541A0CAA12782021101C884305D0F0 +:10E45000302A05D00CAA0292012204E0224A00E0F0 +:10E46000224A02921022019280221A4005D0E30F24 +:10E470001B195B10E71A1C1C03E001210B4012D191 +:10E480001F1C002C12DD261C019B04969E4200DD01 +:10E4900004936B6828680299049A9847049BF61ABB +:10E4A000002EF1DC03E0271C141C00E00024039B79 +:10E4B000002B06D01A1C28686B6805999847039BA7 +:10E4C000E418002F0DDDE419019B3E1E9E4200DD85 +:10E4D0001E1C28680299321C6B689847BF1B002FCE +:10E4E000F2DC201C07B0F0BDF09F0300DF9F0300AB +:10E4F000F0B593B01F1C18AB10CB05901B780D1C0A +:10E50000161C0793CB070BD48B0703D1814B0A68EA +:10E510009A4205D0281CF3F7BDFB012540000543B6 +:10E5200081231C4209D1079B302B06D11A9B1B9AD1 +:10E53000934200DA1A9200231B93281C15F0B7FBB4 +:10E540000AAA131C00280DDDA30703D52B23137083 +:10E55000123B05E0131C620704D520221A70192310 +:10E5600004AA9B18E20618D5022E03D130221A7095 +:10E570007A1C10E0082E08D130221A70A20501D4AE +:10E5800001330AE03A1C0E3205E0102E05D130228C +:10E590001A703A1C17325A70023300220AA91A70F4 +:10E5A0005B1A0693A30600D52C320EAB0B931023F7 +:10E5B0000C9300231B990D93012901DD40210C438D +:10E5C00004A9CB75FBB20096610614D50021029315 +:10E5D000019103922B1C0BA80CA90DAAF7F7AAFD19 +:10E5E0000378061C2D2B15D104AAD3750D9B01367B +:10E5F000013B0D930EE00AA90191029303922B1C9B +:10E600000BA80CA90DAAF7F795FD1B9B061C012B67 +:10E610004BDC02E01B9B012B6ADC00273D1C6306E0 +:10E6200021D5172104ABC9180B78002B0AD0002381 +:10E630000122009301920598FFF7FCFE1A9B2D180A +:10E64000013B1A93069B002B0DD00023012200935F +:10E6500001920598069A0AA9FFF7ECFE1A9B069A02 +:10E660002D189B1A1A931B9B012B00DD1A93079BF5 +:10E67000059800931A9B311C01930D9A231CFFF7F8 +:10E68000D9FE2D18002F09D02023002200930197D6 +:10E6900005982149131CFFF7CDFE2D180B980EABE2 +:10E6A000984234D014F0FBFF31E00D9A1B9B93424B +:10E6B0001CDB1A9A934206DA0127D51A274004D0A8 +:10E6C0002F1C002501E000273D1C01239C43002D49 +:10E6D00009D000221F330093019505980E49131CA1 +:10E6E000FFF7A8FE051C3023079398E7131CE0E70B +:10E6F0000D9A1B9B934200DA131C172204A952188F +:10E700001278511E8A419B18069A9B18D1E7281C43 +:10E7100013B0F0BD30D30200BF740300F0B5071C86 +:10E7200000248DB005920D1C2B78002B09D18D4251 +:10E730000BD96E1A3868321C7B689847A419291CBB +:10E7400003E0252BF3D00135EEE70B78002B00D149 +:10E7500034E120230026013109930B78002B12D0DD +:10E760002D2B01D12C3B02E02B2B02D1293B1E4348 +:10E770000FE0202B01D11C3BF9E7212B01D1193BE4 +:10E78000F5E7302B02D00023069304E040220993E2 +:10E7900016430131E1E70B781A1C303A092A07D8F1 +:10E7A0000A22069801314243D318303B0693F2E720 +:10E7B00008912E2B27D14B782A2B05D00B1C013327 +:10E7C0000893002307930CE0089B02330893059BF2 +:10E7D0001D1D1B680793DB43079ADB171A4007923E +:10E7E00015E0089B1B781A1C303A092A09D80A221E +:10E7F00007994A43D318303B0793089B013308938A +:10E80000EFE7059D03E00123059D5B420793089B0D +:10E810001B786C3B59425941089B5B1808931B7845 +:10E820000493002B00D1C9E0642B00D187E013D8FA +:10E83000502B00D191E004D8453B022B00D89CE03E +:10E84000B2E0049B622B1AD032D8582B00D0ABE038 +:10E850002B1D0593412383E0049B712B34D005D8F5 +:10E86000672B00D889E0702B77D09DE0049B752B37 +:10E8700058D0782B71D0732B00D095E036E02B1D4B +:10E8800005932B68002B07D0099B381C0093069B2F +:10E890004C490193042206E0381C0522099B4A4991 +:10E8A0000093069B0193331CFFF7C4FD241882E0FC +:10E8B0002B1D05932B680BA90B70099B381C00932B +:10E8C000069B01220193EEE72B1D0BA928680593F7 +:10E8D00014F0DAF8079B011C013301D10B9B07935D +:10E8E000099B381C0093069B019311E02B1D2D689A +:10E8F0000593002D0ED0079B013303D1281C1CF07B +:10E900009DFD0790381C291C099B0093069B0193D1 +:10E91000079AC8E7099B381C0093069B2B49019373 +:10E920000622C0E72B1D059361230093099B0196E6 +:10E930000293069B381C0393296800220BE02B1DD1 +:10E9400005936123381C01220093099B01960293D1 +:10E95000069B039329680A230CE02B1D0593612372 +:10E960000093099B381C0293069B002203931023FB +:10E970000196296818F05FF898E7072307359D434B +:10E980002B1C28686968083305930EF023F8099B4F +:10E99000011C0093069B381C0193079B049A029369 +:10E9A000331C18F0B7F881E73868089901227B68B2 +:10E9B00098470134059508990131B4E6201C0DB043 +:10E9C000F0BDC046CD9F0300D29F0300D89F030037 +:10E9D00008B50B1C4179021C012904D1C06A191C1D +:10E9E00016F04FFA04E0006B0249D26A16F085FA7D +:10E9F00008BDC04628D7020008B50B1C4179021C8F +:10EA0000012904D1C06A191C16F05BFA04E0006BFE +:10EA10000249D26A16F071FA08BDC04618D7020042 +:10EA200008B50B1C4179021C012904D1C06A191CCC +:10EA300016F047FA04E0006B0249D26A16F05DFA5C +:10EA400008BDC04638D7020008B53F22014B18F078 +:10EA50003FF908BDE176020008B59122014B18F09C +:10EA600037F908BD05FC0000F7B5041CC579868A96 +:10EA70000F1CC18A00200191E071A082E082111C6C +:10EA8000201C1A1C0F4B18F023F9A368002B18D177 +:10EA9000E18A002908D0A38A002B05D1206B15F04C +:10EAA000EAFD206B15F079FCA38AE28A201C391C50 +:10EAB00018F0BEF86B1E9D416B469B88E571A682DF +:10EAC000E382F7BD09F8000038B58368002B0BD14D +:10EAD000041C0D1C0548111C19F011FAA060201C23 +:10EAE000291C0C3018F059F938BDC04678FD0200D9 +:10EAF000F0B58DB06B4601921B79041C4371012364 +:10EB0000E16203610B780D1C012B02D000219B4AAE +:10EB100046E0019B012B07D9836B01991E68231CDA +:10EB2000406B2A1C0833B047AB68181C049314F0E0 +:10EB3000C6FB63790490032B0FD109900C2109A81F +:10EB400014F0D6FBA36B021C9B68606B0999984775 +:10EB5000A3686883002B00D009E1049814F0AFFB90 +:10EB600004900378011C002B23D00A3B0F2B1CD8E8 +:10EB700009A918F031F8099B772B14D004D8032287 +:10EB80000292312B17D008E0812B04D0022202928E +:10EB9000992B10D001E001230CE0201C0499784A45 +:10EBA000FFF792FFE8E0002304E0201C754AFFF71E +:10EBB0008BFF02230293049814F081FB5A210490E6 +:10EBC00004A814F095FB049D0390039B9D4200D183 +:10EBD000C2E004952B78432B00D1B8E0392B03D049 +:10EBE000201C0499684ADBE7281C05A914F071FB76 +:10EBF0000378061C912BF3D114F061FB059B98421E +:10EC0000EED1301C05A914F064FB0378071C0A3B05 +:10EC10000F2BE5D814F053FB059B061E9E42DFD058 +:10EC20000378A02BDCD114F04AFB059B9842D7D186 +:10EC300006A9381C17F0D0FF301C14F045FB9C21AE +:10EC4000079007A814F054FB011C079814F02BFB45 +:10EC5000069B061C2E2B1FD1012804D10798037890 +:10EC60000A3B0F2B03D9201C0499484A98E72669D0 +:10EC7000731C2361019B012B66D909A917F0ACFF16 +:10EC8000A36B606BDB68311C099A984700285BD145 +:10EC9000201C04993E4A83E72F2B15D1012803D16C +:10ECA00007980378032B03D0201C0499394A77E78F +:10ECB000019B012B48D9A36B676B1E6914F0DFFA27 +:10ECC000011C381CB0473FE0302B27D1012803D965 +:10ECD00007980378032B03D0201C04992E4A5FE782 +:10ECE000019B012B30D908A914F0BAFA012707902B +:10ECF00007980378032B03D0201C0499274A4FE779 +:10ED000009A914F0ADFAA36B07905B69606B0899D1 +:10ED1000099A01379847B742EAD115E0019B012BC8 +:10ED200012D9032800D95BE7079B181C099314F03C +:10ED3000C6FA0A9014F0C3FAA36B0B909F69606B3C +:10ED40000699321C09ABB847A368002B0FD1281CC9 +:10ED500014F0B5FA051C38E76379012B04D9A36BCD +:10ED6000606B5B6802999847A368002B04D0201C55 +:10ED700004990C3018F011F80DB0F0BD0CA0030090 +:10ED800030A003003DA0030065A0030088A003009D +:10ED9000A4A00300B4A00300D0A00300F5A00300CA +:10EDA00008B5024AFFF790FE08BDC04617A1030050 +:10EDB00030B50B7885B04C1C002B7AD00C1C051C90 +:10EDC000032B09D1081C03A914F04AFA0399041C67 +:10EDD000286B15F07BFA6CE0012B07D149780234DF +:10EDE000052966D0006BF7F73BFE62E0042B07D1E4 +:10EDF0008978637809021943006B15F0ADFA16E0C3 +:10EE0000052B19D14379042B02D0006B2A490CE061 +:10EE100088784B780002184303A913F035FE039954 +:10EE20002D6BFDF719F8011C281C15F0A1FA201C08 +:10EE300014F045FA041C3CE01A1C0A3A081C0F2A7C +:10EE400008D803A917F0C8FE0399041C281CFFF773 +:10EE5000BFFD2EE0082B0BD103A914F0F7F9039B9B +:10EE60002A6A9B00041C9958286B15F081FA20E04F +:10EE700002AA03AB01A914F053FA041C0299286BEF +:10EE8000F7F7A4FD019B0D4A9B009B58281C211CF1 +:10EE9000002B03D10A4AFFF717FE09E0039A9847AF +:10EEA000AB68002B04D0EB68002B01D1029BEB6018 +:10EEB000039C201C05B030BD74E0020018F0020075 +:10EEC00034A10300F0B587B005930B1C141C5A1E27 +:10EED00093410091DBB2061C0599201C019300258B +:10EEE00014F0E1F9019B0290AB4209D0009B1B7822 +:10EEF000842B05D1291C306B029A15F03AFC009D39 +:10EF0000271C029B013B0493019B0393059B9F429B +:10EF10001CD03B78842B0ED1002D06D1306B039989 +:10EF2000049A15F026FC3D1C05E0301C391C214AD2 +:10EF3000FFF7CAFD3BE0381C14F0C1F9039B071C26 +:10EF400001330393049B013B0493DFE7002D07D1BA +:10EF5000019A029B94466344191C306B15F0FDFB2B +:10EF6000019B002B1CD0009BAB4205D1281C14F048 +:10EF7000ABF9011C301C01E0301C0099002200F0AC +:10EF80001BF80DE0AC420FD1201C14F09DF9011CC0 +:10EF9000301C002200F010F8201C14F090F9041C22 +:10EFA000059B9C42EED102E0301C211CF1E707B02A +:10EFB000F0BDC0464CA10300F0B50B78171C1A1C1D +:10EFC0000A3A85B0041C0D1C0F2A0FD8081C03A98F +:10EFD00017F002FE201C0399002F01D0022F02D14E +:10EFE000FFF70AFDE1E0FFF7F3FCDEE0192B01D8A3 +:10EFF0006F4AD8E01A3B7C2B00D183E004D8252B44 +:10F0000076D0772B06D0CBE07E2B00D188E0912BF9 +:10F010006ED0C5E0081C02A914F05BF9061C022F93 +:10F0200003D0201C311CFFF7C3FE301C14F047F93D +:10F030000299061C17F0C8FD002800D0B0E0337814 +:10F04000922B14D1301C03A914F043F9061C301C78 +:10F0500014F035F9039A0190904208D2022F01D1A1 +:10F06000019EF4E7201C311CFFF7A2FEF8E733787D +:10F07000A12B19D1022F04D1206B15F013FA206BAC +:10F080000FE0301C14F020F9011C201CFFF790FE4B +:10F09000206B012F05D115F0D9F9206B15F0A9F9D6 +:10F0A0001DE015F0BEF91AE0A22B79D1301C14F046 +:10F0B0000BF903A917F090FD012F07D1206B15F074 +:10F0C000BBF9206B039915F072F908E0022F02D109 +:10F0D000206B15F0D0F9206B039915F095F9301CD1 +:10F0E00014F0EDF8029917F06FFD00285DD157E09C +:10F0F000002F51D103A9281C14F0EBF8391C021C75 +:10F10000201C3CE0081C03A914F0E3F80399061C3A +:10F1100017F05AFD002843D1002F3DD1351C17E0D0 +:10F12000002F39D1081C03A914F0D3F80399051C4A +:10F1300017F04AFD031E04D0201C391C3A1C3B1C4E +:10F1400027E02A789A2A03D0201C291C1A1C20E0C8 +:10F1500003A9281C14F0BDF8061C14F0B0F80378BD +:10F160009D2B04D10022201C311C131C11E09E2B6E +:10F1700007D103A914F0ADF8311C021C201C039B1D +:10F1800007E0BE2B0CD014F09AF80021031C321CAF +:10F19000201CFFF797FE08E0201C291C054A02E00E +:10F1A000201C291C044AFFF78FFC05B0F0BDC046A7 +:10F1B00066A1030099A103007EA10300F0B50B78BE +:10F1C00091B00A3B041C019105920F2B00D9ECE091 +:10F1D000081C14F074F80378912B00D0E5E0019836 +:10F1E00014F06DF80DA914F074F8037842780A3B16 +:10F1F0001B021343AD2B00D0D7E014F060F8037866 +:10F20000051CA02B00D0D0E014F09EF8002800D000 +:10F21000CBE0281C14F053F80D9B984200D0C4E0BA +:10F22000281C14F051F89C210E900EA814F060F8E0 +:10F230000E9B051C0293012302980F9314F03FF8D4 +:10F24000061E0E90AE4210D014F039F80E90A8426F +:10F250000ED00378032B00D0A7E00FA914F000F81C +:10F260000E90A84200D0A0E002E07A4B029E0293EA +:10F27000029B1B784833DBB2022B00D895E0337831 +:10F280004833DBB2022B00D88FE00D9B181C04938F +:10F2900014F015F8059A2769831A5A1E9341021C27 +:10F2A0005B421A400F9B03920593238B278309939C +:10F2B000638B0A93E38B0B937B1C0693BB1C079316 +:10F2C0006B461B8B6383A38BE383FB1C08933B1D63 +:10F2D00023613578033D6B1E9D41EDB2002D03D0B7 +:10F2E000201C311CFFF764FD0299201CFFF760FD14 +:10F2F000206B089915F0EBF80799206B14F0B2FF1A +:10F30000206B15F099F80022201C0199FFF754FE9C +:10F310000499201CFFF74CFD206B069914F0A2FF06 +:10F32000206B059914F0D2FF206B122115F080F9A3 +:10F33000206B089914F096FF206B002D05D015F076 +:10F3400085F8206B15F097F805E015F075F8201C8E +:10F35000311CFFF72DFD059B206B1921002B00DAD6 +:10F360001A2115F065F9206B0121079A15F0BBF8F9 +:10F370006B469B8C23836B461B8D63836B469B8DF7 +:10F38000E383039B002B03D0201C191CFFF710FD07 +:10F39000206B391C14F066FF206B15F061F8002D0E +:10F3A00056D0206B15F05CF852E0238B256903934F +:10F3B000638B6E1C0493E38B66830693AB1C0293F2 +:10F3C000A38B0198E383244B2B432383EB1C236102 +:10F3D00013F075FF011C201CFFF7EAFC071C206BD3 +:10F3E00015F0D2F8206B311C14F03CFF206B029911 +:10F3F00015F0D4F8201C01990022FFF7DDFD391C1F +:10F40000201CFFF7D5FC071C206B14F022FF0028FE +:10F4100003D1206B311C15F05AF8206B029914F0BF +:10F4200021FF206B15F0C6F86B469B8923836B4642 +:10F430001B8A63836B461B8BE383059B9F4203D030 +:10F44000201C391CFFF7B4FC206B291C14F00AFFA8 +:10F4500011B0F0BDE04003000080FFFFF0B5171CC5 +:10F4600085B0041C081C0D1C13F029FF391C061C58 +:10F4700017F0AAFB019000281CD02379201C002B38 +:10F4800011D0E36A1E78002E0DD11321FFF7A0FAE8 +:10F49000291C201CFFF78CFC206B0121321C331C23 +:10F4A00015F0A6F902E0291CFFF782FC206B14F08E +:10F4B000D7FF58E033783B2B1BD1291C201C01229D +:10F4C000FFF77AFD301C13F0FFFE4378811C4E3BA2 +:10F4D000DBB218260A2B01D8244AD65C201CFFF781 +:10F4E00067FC206B311C15F0A3F8201C291C02229C +:10F4F00037E03C2B2ED1301C03A913F0EAFE061C8A +:10F50000071C039B9F4205D0381C13F0D8FE0197BF +:10F51000071CF6E70199201CFFF74AFC206B14F04A +:10F520008BFF201C291C0022FFF746FD019B9E42F9 +:10F5300019D0301C13F0C3FE019B051E9D4202D062 +:10F54000206B14F079FF311C201C0022FFF734FDE2 +:10F550002E1CEBE7311C201CFFF72AFC201C291C69 +:10F56000019AFFF729FD05B0F0BDC04601A00300D8 +:10F57000F0B589B0041C0D1C059104921F1C0029D4 +:10F5800024D18379002B27D0C36A02911B78012BE9 +:10F5900023D10521FFF71CFAE26A108D854211DAAA +:10F5A000D16AEB00CB1801215E780E4208D05A8850 +:10F5B000206B14F0CEFD0022206B0221131C97E07B +:10F5C0000135EBE7201C00214B4A22E005A89C21D5 +:10F5D00013F08EFE029000E0029300231E1C059D96 +:10F5E00000930393019308E0281C1E4313F06CFE64 +:10F5F0000390281C13F063FE051C029B9D4254D00F +:10F600002B78B82B08D1B73B1E42EDD0201C291C0B +:10F610003A4AFFF759FA6DE0B92B0CD1B73B1E42BD +:10F6200003D0201C291C364AF3E7281C1E4313F084 +:10F630004BFE0090DDE7BA2B2BD1281C13F044FEC3 +:10F64000051C13F03CFE0378BE2B09D1201C291C9D +:10F65000062217F0DFFB281C013713F030FEC9E744 +:10F660002B780A3B0F2B03D9201C291C254AD0E7F5 +:10F67000281C07A917F0B0FA051C0799206B14F095 +:10F680006BFE291C201CFFF793FB019B051C01331B +:10F69000A8E7019B201C291C002B01D01A4AB8E7BF +:10F6A000FFF786FB0137051CA7E7002E15D0039B4B +:10F6B000002B03D1206B14F070FE03E0201C039993 +:10F6C000FFF776FB009B002B03D1206B14F065FE47 +:10F6D00003E0201C0099FFF76BFB049B206B391C97 +:10F6E000019A002B03D0331C15F08CF802E0331C78 +:10F6F00015F07EF809B0F0BDC5A10300E3A1030039 +:10F70000FAA1030012A2030033A20300F0B589B0EE +:10F71000041C039103A8072113F0EAFD0027E36A04 +:10F7200001905E7E0398019B98424AD005A913F090 +:10F73000D0FD4021039003A813F0DAFD06A9051CB3 +:10F74000039817F049FA069B02902A2B19D1A84278 +:10F750000DD2029813F0B3FDA84208D1029807A970 +:10F7600017F03AFA079B2B2B07D02D2B07D0201C24 +:10F770000021244AFFF7A8F920E001261EE0042614 +:10F780001CE0201C0399FFF713FB0137039003983B +:10F79000A84208D007A917F01FFA07990390206B19 +:10F7A00014F005FEF3E7281C059917F00DFA002860 +:10F7B00004D1A071291C201CFFF7FAFA059B0393C2 +:10F7C000B0E7181C13F080FD019B03901B78011C0F +:10F7D000321C201C242B02D117F0B3FA01E017F0E1 +:10F7E0002FFD051C013F06D30022206B0121131CB5 +:10F7F00014F0FEFFF6E7201C291CFFF7FDF809B006 +:10F80000F0BDC04655A20300F7B50A780824131CC2 +:10F81000293BA343DBB2002B02D10133C37168E063 +:10F82000131C2A3BA343DBB2002B62D0131C0A3B00 +:10F830000E1C041C0F2B1DD9081C282A13D101A94A +:10F8400013F047FD071C13F03AFD019B0025984279 +:10F8500012D013F034FD019B051CC31A5A1E9341AC +:10F860005B421D4008E013F02FFD071C13F027FD3D +:10F87000051C01E00F1C0025381C01A917F0ACF98C +:10F88000E379002D02D02A78002A0AD1002B30D14A +:10F89000E38A002B2DD0201C311C164AFFF714F9E7 +:10F8A00027E0002B1ED0A38A01339BB2A382012B39 +:10F8B0000CD1E18A206B002902D014F0DCFE01E0BB +:10F8C00014F06BFD206B002114F0FCFE291C201CA1 +:10F8D000FFF76EFA206B019914F03EFD206B14F0D7 +:10F8E000FDFE06E0E38A201C0133E382291CFFF7BA +:10F8F0005FFAF7BD73A20300F0B5041C0E1C056986 +:10F9000087B003936B1C0293AB1C0361291C006B33 +:10F91000171C14F016FE201C17F066F9311C201C71 +:10F92000FFF746FA206B14F04BFE206B029914F09F +:10F93000CEFD206B291C14F095FC206B14F0A7FF62 +:10F940002669731C2361039B9F4200D191E0381C00 +:10F9500013F0BAFC002305932369051C01930133BE +:10F9600023610378002B0FD113F0A9FC13F0A7FC3F +:10F97000039B984223D0201C291C4B4AFFF7A4F874 +:10F98000A38B013BA3838CE0071C6A2B07D113F0E8 +:10F990009BFC071C13F093FC05A917F01DF9206BC5 +:10F9A00014F04AFD391C201CFFF702FA206B2121BC +:10F9B00014F03EFE206B0021019A14F094FD281CE7 +:10F9C00013F07DFC071C206B14F04AFD05990029FB +:10F9D00003D1206B14F044FD02E0201CFFF70CF86B +:10F9E0000025206B14F03CFD059BAB4209D0256936 +:10F9F000206B6B1C2361291C14F0AFFD201C17F039 +:10FA0000F3F8391C201CFFF7D3F9059B071C002BCA +:10FA100002D0206B14F0D4FD206B14F0F2FD059B96 +:10FA2000002B19D0206B0F21F7F71AF8206B291C37 +:10FA300014F018FC206B0F21F7F712F8201C059921 +:10FA4000FEF7DAFF201C0599FEF7EAFFA38B206B77 +:10FA5000013BA38314F08DFD206B311C14F037FDA6 +:10FA6000206B019914F0FEFB206B032114F0F6FBD0 +:10FA700069E7A38B206B013BA38314F07AFD206B15 +:10FA800014F009FF206B029914F0ECFB0C9B002B87 +:10FA900003D0201C191CFFF78BF9206B311C14F0CC +:10FAA000E1FB07B0F0BDC046A1A20300F0B587B0EE +:10FAB00003914379012B42D1C36A041C1B78002BAC +:10FAC00003D1204AFFF700F839E0039B03A8432144 +:10FAD000019313F00DFC02900398029B98422ED0E4 +:10FAE00005A90B2717F078F802AB059DFF180390C6 +:10FAF000291CE06A3A1C15F02CFB3B78061C002BF5 +:10FB000006D10378042B03D0201C01990E4A0CE087 +:10FB1000E06A291C15F04AFB002803D00378023B59 +:10FB2000022B05D9201C0199084AFEF7CDFFD3E727 +:10FB300004233370E06A291C15F04AFBCCE707B0B8 +:10FB4000F0BDC046C0A20300E5A2030006A3030067 +:10FB5000F0B585B001914379012B2BD10091041CA4 +:10FB6000432101A813F0C4FB071C0198B84221D01F +:10FB700003A90B2517F030F8039E6D440190311C4A +:10FB8000E06A2A1C15F0E5FA2B78002B08D10378DF +:10FB9000012B05D0201C0099074AFEF795FFE4E7EA +:10FBA00001250570E06A311C15F0F7FA0028DCD059 +:10FBB0000570DAE705B0F0BD24A3030010B5438B50 +:10FBC000041C002B02D1054AFEF77EFFA38BE28BBB +:10FBD000618B9A1A206BF6F769FF10BD43A30300EF +:10FBE00010B5038B041C002B02D1054AFEF76CFFF5 +:10FBF000A38BE28B218B9A1A206BF6F757FF10BD6F +:10FC00005BA30300F7B50B78041C1A1C0A3A0E1C00 +:10FC10000F2A08D8081C01A916F0DEFF201C019944 +:10FC2000FEF7FEFE76E0912B3FD1081C694613F0EB +:10FC300050FB011C201CFFF7BBF80378051C922B1E +:10FC400010D101A913F045FB051C281C13F037FB4C +:10FC5000019B071E9F4205D0291C201CFFF7A8F816 +:10FC60003D1CF2E72B78A12B0BD1281C13F02CFBA9 +:10FC7000011C201CFFF79CF8051C206B14F01CFCD9 +:10FC80000CE0A22B41D1281C13F01EFB01A916F099 +:10FC9000A3FF0199051C206B14F0F7FB281C0099A9 +:10FCA00016F092FF002830D034E0962B2DD1081C9E +:10FCB00013F04AFB002828D1301C13F005FB061C6A +:10FCC00013F002FB051C201C291CFFF79BFF281CBE +:10FCD00013F0F5FA0378011C9D2B1BD09E2B0ED13F +:10FCE00001A913F0F6FA019B051E9D4212D0201CBB +:10FCF000291CFFF787FF281C13F0E1FAF3E7BE2B5E +:10FD000003D0201CFFF77EFF04E0201C311C024AB8 +:10FD1000FEF7DAFEF7BDC04670A30300F7B5022672 +:10FD20000D1CC16A041C097E314003D0201C291C13 +:10FD3000334A5EE001912978081C0A380F2801D85F +:10FD4000281C05E01A32914212D1281C13F0BCFA8B +:10FD500001A916F041FFE279E36A002A04D15A8B27 +:10FD600001325A83012635E09A8B01329A83F9E7F2 +:10FD70001A33994223D1E379002BD7D10127281CCC +:10FD8000E77113F0E1FA0326002823D1281C13F0B1 +:10FD90009BFA0278E36A0A3A0F2A04D81A7E281CD2 +:10FDA00017431F7605E01A7E281C17431F7613F0B1 +:10FDB0008BFA13F089FA01A916F00EFF0AE0281C4D +:10FDC00013F082FA01A916F007FFE26A137E1E43C0 +:10FDD000167605260199002911D06B46DF1CE06AD2 +:10FDE0003A1C15F0B6F93B78002B05D1201C291CD4 +:10FDF000044AFEF769FE02E0022346700370F7BD75 +:10FE00007E41030088A3030038B5C36A041C1B7835 +:10FE10000D1C012B04D000210B4AFEF755FE11E00A +:10FE2000081C111C16F0D0FE002804D0206B0F21F6 +:10FE3000F6F716FE03E0201C291CFEF7B9FF206B25 +:10FE400014F0EBFC38BDC046A1A3030038B5C36A6B +:10FE5000041C1B780D1C013B012B04D90021164A00 +:10FE6000FEF732FE26E0081C111C16F0ADFE00283D +:10FE700004D0206B0F21F6F7F3FD18E02B78C22B8E +:10FE800011D1281C13F020FA011C201CFEF790FF52 +:10FE9000206B14F079FB206B0F21F6F7E1FD206B4E +:10FEA00014F0E5FC06E0201C291CFEF781FF206B06 +:10FEB00014F0CEFC38BDC046BBA30300F0B5041C53 +:10FEC00085B00D1C081C111C16F07EFE002804D005 +:10FED000206B002114F0F6FB80E02B78AF2B0BD1C8 +:10FEE000206B012114F0EEFB201C291CFEF760FFA3 +:10FEF000206B14F0F3FB71E0AE2B67D1281C13F0DC +:10FF0000E3F9051C13F0DBF902900378B22B53D10F +:10FF100003A913F0DEF9039B0290984203D002A8D4 +:10FF2000992113F0E5F92B78AF2B11D103990298A1 +:10FF3000266B13F0B8F9411C301C14F0C3FB291CCC +:10FF4000201CFEF735FF206B14F0C8FB012304E0F2 +:10FF5000201C291CFEF72CFF0023029F0193039B0A +:10FF60009F421ED03E78391CAF3E201C73425E413A +:10FF7000FEF71EFF019BF6B2071C002B09D0002ED6 +:10FF800003D1201C291C164A08E0206B14F0A6FBA4 +:10FF9000E5E7002EE3D0201C291C124AFEF794FD51 +:10FFA0001CE0019B002B19D1391C0298246B13F023 +:10FFB0007AF9411C201C0FE02B78201C291C0422FC +:10FFC000AF2B00D0052216F025FF07E0291C201CCE +:10FFD000FEF7EEFE0121206B14F098FB05B0F0BD9A +:10FFE000D4A30300F7A30300F0B50123041C0D1CE8 +:10FFF000427187B0E1620361111C006B2A1CF6F7A5 +:020000040001F9 +:100000001DFC6379012B02D100236B84AB84AE68A5 +:1000100033781E2B07D1301C13F056F9011C201C1D +:10002000FEF7C6FEB9E02B78002B04D1201C311C52 +:10003000FEF7BEFEA7E0012B1ED1301C13F03FF9E6 +:100040006379051C012B07D10023201CE371291CB7 +:100050000C22564B16F03CFE281C13F030F913F01E +:100060002EF9011C201CFEF7A3FE206B14F0F1F802 +:10007000002800D094E086E0022B18D16379012B90 +:1000800007D10023201CE371311C1422484B16F0C9 +:100090001FFE301C13F013F9011C201CFEF788FE14 +:1000A0002B7E5B0779D5206B14F0DAF96BE0033B0C +:1000B000032B3AD8301C13F002F905A913F009F903 +:1000C00013F0FDF867790390012F09D10B2202ABE1 +:1000D000D218E06A391C15F03CF8022303706F83D4 +:1000E0002B78032B04D1206B002114F0D1FA0CE003 +:1000F000042B04D1206B002114F0E4FA05E0052B59 +:1001000003D1206B002114F001FB201C0121FEF71C +:100110005FFC0023201C00930399331C059A17F001 +:100120008DFB2B78062B38D12DE06379012B06D17E +:10013000281C052105AA15F00CF80223037005A957 +:10014000A86816F049FD201C0D21FEF741FC201C7B +:100150000C21FEF751FC206B296914F0FDF81121E8 +:10016000201CFEF749FCA86813F0A9F813F0A7F8C3 +:10017000011C201CFEF71CFE281C052114F0D9FFD1 +:100180000378022B04D1206B0F21F6F769FC04E001 +:1001900042880521206B13F0DCFF206B14F03DFB3F +:1001A000206BF6F7D9FB07B0F0BDC04665740200BE +:1001B00059740200F0B51E1C0F1C99B009AC002147 +:1001C0000590151C201C3C221BF033F8059B099759 +:1001D0005B6826712362059B186813F070F813F0B2 +:1001E0004EF86062800013F045FA0021059BA06282 +:1001F00000951B68201C0A1C16F000FD14F013F873 +:1002000000230290206303930026331C626A964207 +:1002100002D3002BF8D12CE0A268002AF9D1A16A00 +:10022000B2005558002D16D06A69002A13D113F078 +:100230008BF96B7E6861291C201C0122042B02D1E2 +:10024000FEF756FC01E0FFF7CFFE2369039A9A42BE +:1002500000D2039301230136D8E70B9A002A00D07D +:10026000AEE00499139B8900CB58002B09D1049B65 +:1002700001330493129B0693069A049B9342ECD39A +:100280009EE0197EC90723D51C8D601EC000002C7E +:100290001ED0D96A09184D78AE0711D5002A17D09B +:1002A00050880F1C8446506816780690557811CFF8 +:1002B00011C262464A80069A0E704D704A6007E08D +:1002C000002A02D1012D00D10A1C013C0838DEE7CA +:1002D000002119841A8D944691421CDAD86ACA000A +:1002E00082181878072802D15468052C11D00138DB +:1002F000052804D81078002801D10130107010783A +:10030000022802D05078C00703D5188C441C1C84E6 +:1003100050800131DEE7002161450ED0D86ACA0065 +:1003200082181078032806D15078C00703D4188C9F +:100330005080013018840131EEE75E68002E96D0BF +:100340000024328D0792221C07998C421CDAF16A34 +:10035000E00009180691097800250339012911D810 +:1003600065450FD0DF6AE90079180F78042F07D1AF +:1003700006984768381E4F68B84201D14A8001325A +:100380000135EDE70134DFE70020824200D16EE75E +:1003900060450DD0DC6AC10061180C78042C02D1D4 +:1003A0004C78E40702D54C8814194C800130EFE7F3 +:1003B000598B92B251185983198C52181A8456E7E6 +:1003C00000260298039913F033FF351C129B049307 +:1003D0009E4210D30B9B0393002B4FD0149B0CA871 +:1003E000996816F0DAFC149B0B9809990C9A1B6912 +:1003F00001F038F842E00B9B0493002BEAD1139BE9 +:100400000493049AB3009C58002C35D0637E042BCF +:1004100019D1002D03D1039813F078F8051C00239F +:1004200015932D4B09A8211C032217931695FEF74F +:100430005FFB0B9B0493002B1ED109A8211C0422F7 +:10044000FEF756FB18E0029B09A8211C0222159317 +:10045000FFF7CAFD0B9B0493002B04D109A8211CB4 +:100460000322FFF7C1FD0B9B0493002B04D109A8C5 +:10047000211C0422FFF7B8FD0136A7E7029813F00C +:10048000DFFE002D02D0281C13F051F8002405983F +:1004900012F064FF139B1B685D69129B02939C42E0 +:1004A0000AD2139B0293029AA3009858002801D005 +:1004B00014F036FE0134F0E7139813F0F0F80B9ABD +:1004C000002A02D0101CEFF7A6FE281C111C13F006 +:1004D00046F819B0F0BDC046ECCB0200F0B5051CE3 +:1004E0008BB008680C1CFCF741F9049004A817F0C5 +:1004F0000EFC0027049B03900693069B19780029A5 +:1005000012D0081CF5F796FB0126002807D006A894 +:1005100017F00FFC069B1B78732B00D0061C069B64 +:10052000BF1901330693E8E7381CF9F7CBFB01222A +:10053000009007A96068F1F76DFD079B089A059385 +:100540009B1801920293022D0AD9A068F1F7A2FB31 +:10055000002802DA089BC01826D4059B18180590BD +:1005600000240DE0291CFBF777FC059B009A5D1920 +:10057000A31C9B00059501349850049B0133049300 +:10058000BC4230D2049B187800282CD0F5F752FBDF +:100590000125002803D004A817F0CBFB051C059803 +:1005A000029A43199A4205D21049114817F0A7FC44 +:1005B000EFF731FE049B1B78732BD3D0009BA60072 +:1005C0009E190195019B0436002B0AD0049B0398C9 +:1005D000197805AAF9F7F8F9019B7060013B0193BE +:1005E000F0E76419C9E700980BB0F0BD16A403004A +:1005F00010F80200F0B589B0039101921E1CFCF7BF +:10060000B5F8049004A817F082FB00250290B542CB +:100610004ED2049B187800284AD0F5F70BFB012432 +:10062000002803D004A817F084FB041C039B019A44 +:100630001B199A4205D21F491F4817F060FCEFF7BB +:10064000EAFD049B1B78732B04D02D190E9BAF0081 +:10065000DF191CE00E9B6F1CAD00E85805A90122B4 +:10066000F1F7D8FC069B251E9D4200D91D1C2A1CB3 +:10067000059903981AF0C0FD039B621B58190021CD +:100680001AF0D7FD039B3D1C1C1903940CE0002CB1 +:100690000AD0049B02981978A3005B42FA5803AB76 +:1006A000F9F7FAF9013CF2E7049B01330493AEE752 +:1006B00009B0F0BD16A4030010F80200F0B50E1C3E +:1006C00089B0039001CE0F1C17F049FB4410211C88 +:1006D00004A812F03BFA069D221C281C00211AF0E7 +:1006E000A8FD039B00962A19013B3868291CFFF7D7 +:1006F00081FF04A90248FBF761FB09B0F0BDC046C9 +:1007000048EF020030B50C1C89B0051C0222486875 +:1007100005A9F1F77FFCA068F1F7BCFA002809DA17 +:10072000069B0393C01805D509490A4817F0E7FB53 +:10073000EFF771FD059B069A1918201C0C309A18CA +:100740000090EB1E2068FFF755FF034809B030BD4D +:1007500016A4030010F8020074E00200F0B50024B3 +:100760000E1C85B0071C0393081C0D4B111C009434 +:10077000221CEFF739FFB01C800012F069FF051C46 +:1007800007604660B44208D0039BA700D859F7F72A +:10079000EFFCEF19B8600134F4E7281C05B0F0BD98 +:1007A000FFFF0000014B58687047C046882E0020AC +:1007B000014B18687047C046882E0020F0B5194ECE +:1007C00087B03368051C00200C1C019313F049F816 +:1007D00030600090206814F0CEF8019B071C336055 +:1007E000114E022D03D0A068F1F76AF9061C211CF6 +:1007F00063680831A81E0393F9F764FA009B04901C +:100800000593301C03AB03210022F7F7B7FB074B1E +:10081000041C9F4203D0381C211C13F0D5FB201C64 +:1008200007B0F0BD882E00206CEB020074E00200DF +:10083000F8B50326051C071C3540022D15D10E4BBB +:100840000340062B11D0FF23DB05C418B443201C42 +:10085000002109F0D3FA00280BD080231B06E018F2 +:10086000B043064B2843C01804E0381CF4F7E4FA00 +:1008700000E0381CF8BDC046070080FF0000808003 +:1008800010B5F7F775FC041C201CF7F7BFFC002817 +:1008900005D0F1F73FFB0028F6D1024800E00248FE +:1008A00010BDC04678CD020034CD020010B5F7F778 +:1008B0005FFC041C201CF7F7A9FC002805D0F1F709 +:1008C00029FB0028F6D0024800E0024810BDC046CF +:1008D00034CD020078CD020007B5044B0190694683 +:1008E000022000220093FCF7CBFC0EBD06040000A2 +:1008F00008B5F1F76BF9034B002800D1024B181C27 +:1009000008BDC04634CD020078CD020037B5F1F7FE +:10091000C1F901AB7F2802D8187001213CE02149C0 +:10092000820988420AD8402149420A431A703F226C +:100930001040BF3A1043587042312DE01A49040B61 +:1009400088420ED8202149420C431C7080245F311C +:100950000A4064420840224320435A7098703C3950 +:100960001AE01249884211D81025810C6D422943A2 +:1009700019703F21703D0C400A4008402C432A4327 +:1009800028435C709A70D8703B3905E008490948E3 +:1009900017F0B5FAEFF73FFC181C0122FBF744FAF9 +:1009A0003EBDC046FF070000FFFF0000FFFF100034 +:1009B00027A4030010F8020008B5021C02490A200F +:1009C000F7F764FC08BDC046BE04000008B5021C71 +:1009D00002490A20F7F75AFC08BDC0463E05000050 +:1009E000F0B585B002900192101C0C1C0022324917 +:1009F0000393F4F755F80090002801D04368009362 +:100A0000029B012B03D000252E1C01953CE02068A1 +:100A10000024F7F7ADFB271C02900298F7F7F6FBCE +:100A2000051E17D0009B2E1C002B04D0181C291C5F +:100A300013F0A8FF061C002C09D00398311C3A1CA7 +:100A4000F7F724FC1D4B984201D0251C3E1C2C1CA2 +:100A5000371CE2E7221E2BD101981949F4F720F840 +:100A6000002801D0426823E01649174817F047FADA +:100A7000EFF7D1FB009B002B0AD12768002E0DD188 +:100A80002668019701350434029B9D42F2D10EE0A5 +:100A90000098216813F076FF071CEFE70398391CD4 +:100AA000019AF7F7F3FB054B9842EBD1E8E7321CCC +:100AB000101C05B0F0BDC046D606000034CD0200C3 +:100AC0001E05000048A4030010F8020037B501A974 +:100AD000051CFBF761FE1E4B041C2B40062B05D0AA +:100AE000AB072AD12A681B4B9A4226D1201C0199B8 +:100AF00013F0A6F90190012822D1207843B2002BEF +:100B000004DB012320784000184320E07F230134D8 +:100B100018403F3B184202D098435B10FAE7227816 +:100B20003F23111C9943802904D1800113400134D3 +:100B30001843F4E713F0DEF809E0019B012BE0D045 +:100B40000549019A054800F01FFCEFF764FB3EBD24 +:100B5000070080FF80CA020061A4030000FD0200BC +:100B6000F0B587B0141C02900391101C2349002299 +:100B7000F3F796FF2249051C0022201CF3F790FF93 +:100B80000123041C049305931E4F002D07D06868B1 +:100B90001D4B984203D004A9FBF7FEFD071C1B4D1B +:100BA000002C07D06068184B984203D005A9FBF7CA +:100BB000F3FD051C0024029B154E9C4212D0002C14 +:100BC00007D00023301C00930193391C049AFDF7D1 +:100BD00031FC039AA300D158301C0022F0F78AFFA1 +:100BE0000134E8E70023301C00930193291C059A87 +:100BF000FDF720FC044807B0F0BDC046EE0500003C +:100C0000F6050000CDA7030074E002003F4B03008F +:100C100010F002007FB50D4DA84214D0041C0C4EFC +:100C20000122301C211CF0F765FF0A49301C15F029 +:100C3000F4FE04230293084B0394DB690748032165 +:100C400002AA01939847281C04B070BD74E002000A +:100C500010F002003F4B030028D9020078F3020095 +:100C600010B5041C86B002A86A461021EFF746FCB6 +:100C70006846211C0122F0F73DFF02A90248FBF75C +:100C80009DF806B010BDC04680CA020070B50C6861 +:100C9000031C201CE2074AD4A20703D1244A25687A +:100CA000954244D0012B1FD94868F0F7F3FF061C8A +:100CB000201CF1F753F8051C301C09F0BBFF011C88 +:100CC0001C480CF0BBFE041C211C281C09F0E2FC93 +:100CD0000CF066FB211C09F0EBFA03239843013B5F +:100CE0001843154BC01822E0201CF1F737F8061CFA +:100CF0000CF056FB051C09F07DFF291C041C301C60 +:100D000009F0FAFDFC218905051C09F071F800289D +:100D100001D0013406E0BF21281C090609F068F85B +:100D2000002801D001239C43201C12F0E3FF70BD7A +:100D300030D30200000020410000808013B5041C65 +:100D4000081CFBF793F86A46011C201CF7F794F97E +:100D5000009B0248002B00D1014816BD34CD020093 +:100D600078CD020037B50024022800D98C68486885 +:100D70000D68FBF77BF8094B011C002C00D0084BD9 +:100D8000281C6A4698470098002805D00199002938 +:100D900003D0F2F77DFF00E0201C3EBDD9800000AB +:100DA0007980000038B5051C081C141CFBF75EF8A0 +:100DB000221C011C281CF7F7B7F9014838BDC046B2 +:100DC00074E0020008B5F7F7FBF9002804D10348E6 +:100DD00017F088F8EFF71FFA08BDC046BCFA02000A +:100DE00030B50B1C85B0141C012805D90A490B48E5 +:100DF00017F085F8EFF70FFA09480121C268019250 +:100E0000019D0022A84703A90390221C0120EFF7AF +:100E100095FF039805B030BD9BA4030000FD0200C0 +:100E20009CC60200F8B50E1C002803D12A4B041CF6 +:100E30001D6823E0086883070AD10368274A9342A4 +:100E400003D113F09AFE051C0EE0254A934201D00F +:100E5000F0F736FE856B002D06D02A68214BD31A99 +:100E6000594259414B421D403068F0F729FE1E4B54 +:100E7000C26800249A4201D1346804340020011C65 +:100E800012F03DF80027061CBD4209D10025AC42F6 +:100E900016D11FE0EA68FB009958002904D10137F8 +:100EA000AB689F42F6D3F1E70429F8D0301CEFF786 +:100EB000E1FEF4E7A268EB009958002904D101355E +:100EC00063689D42F6D305E00429F8D0301CEFF7A3 +:100ED000D1FEF4E7301CF8BD882E002028D902008E +:100EE0006CEB020064CE020075B70000F8B5041C7C +:100EF00003780020834200D19AE0402B01D10125E4 +:100F000028E0201C4B4916F0CAFF0028F7D1201C0E +:100F1000494916F0C4FF0028F1D1201C474916F0BA +:100F2000BEFF0028EBD1201C454916F0B8FF002871 +:100F3000E5D1201C434916F0B2FF0028DFD1201C68 +:100F4000414916F0ACFF0028D9D1201C3F4916F0CA +:100F5000A6FF051C0023191C1E1C1F1C2278002A3A +:100F600051D0272A10D1002B01D0032B08D1627851 +:100F7000272A05D1A278272A02D10234243A16E082 +:100F80000122012B3DD812E0222A12D1181C1E3A50 +:100F9000904309D16078222804D1A078222801D179 +:100FA000023404E0002B01D0022B2AD10222D31AF2 +:100FB00027E05C2A09D16078272801D0222804D1B3 +:100FC0001A1C501E8241A4181BE0002B19D15B2A69 +:100FD00012D006D8282A0DD0293A50424241BF1AD1 +:100FE0000FE07B2A0AD07D2A0AD05D3A5042424166 +:100FF000B61A06E0013704E0013602E0013100E0F4 +:1010000001390134AAE70120002F11DC002E0FDC8A +:1010100000290DDC033B83420AD9013C23785C2B79 +:1010200006D0101C002D03D00A3B581E8341D8B2B5 +:10103000F8BDC046598603008A8603007086030007 +:1010400086860300F22C030056B00300B28803002A +:10105000F0B5051C8BB04618049207930296029BCC +:101060005C1EAC4210D32078F4F7D8FD002809D1DB +:101070002078F4F7DFFD002804D123785F2B01D01E +:101080002E2B02D10294EAE70295724B1D68029C56 +:10109000B44209D3029BE31A0193B44209D300245A +:1010A000261C271C039448E023782E2BF2D0013411 +:1010B000EEE70027AB689F421CD2FB000393039A24 +:1010C000EB689858002817D0042815D009A9FBF719 +:1010D00063FB019B099A011C93420DD102981A1CD3 +:1010E0001AF0B3F9002807D1EB68039A9B185868E7 +:1010F000002803D10020AAE00137DBE783070AD1EB +:101100000368554A934203D113F037FD051C0BE0E9 +:10111000524A934201D0F0F7D3FC856B002DE9D001 +:101120004F4B2A689A42E5D1631C0293AFE7EA6805 +:10113000E3009858002804D10134AB689C42F6D3F0 +:1011400029E00428F8D009A9FBF726FB099B0590A4 +:101150000693069A019B9342EED8029805991A1CB1 +:101160001AF073F90028E7D1019B002F0BD0B3428E +:101170000DD8069A93420AD8059AF95CD25C91423E +:1011800004D10133F3E7069E059F00E01E1C039B7C +:1011900001330393D0E7039B002BABD0012B02D08C +:1011A000019B9E4206D9019B079AFB181360019B85 +:1011B000F01A4CE0002340260393039BAA68934255 +:1011C0003FD2039BEA68DB009858002835D00428FA +:1011D00033D009A9FBF7E0FA099F019B0590BB42B8 +:1011E0002BD8029805991A1C1AF02FF9002824D13F +:1011F000331C0F33DC17240FE41824112401A41B23 +:10120000012C00DC10343319DB190027402B0ED8D9 +:101210000498A74204DA134915F0FFFB0137F7E7FA +:10122000059915F0FAFB099BF618361905E00498A4 +:101230000D49059A15F0BDFC099E039B01330393EC +:10124000BBE70498094915F0E8FB012040420BB0C8 +:10125000F0BDC046882E002028D902006CEB0200A9 +:1012600064CE0200CDA70300C6A403003F4B0300D9 +:10127000F7B51F1C0023061C0093081C0D1C111C35 +:101280001A1C0B4BEFF7B0F9102012F0EEF9041E08 +:1012900004D1084A084B094CDA6104E0281C391CC7 +:1012A000F8F710FDE06000232660201CA360FEBD5F +:1012B000FFFF0000F8DC0200882E0020982E00209E +:1012C00010B5013810C9F8F7FDFCE060004810BD0A +:1012D00074E00200F8B57F23171C151C041C0E1CBB +:1012E0001F409A430AD17B1E012B07D80B68586810 +:1012F00011F0C5FB011C201C15F08FFB022F04D13F +:10130000201C0F4915F089FB01E0002F12D1F36872 +:10131000002B02D05A68002A04D1201C094915F07C +:101320007CFB0CE0012A05D1201C99680022F0F713 +:10133000E1FB04E0201CF1682A1CF8F757FCF8BD1B +:10134000A1870300BF740300C36803485A68002ADA +:1013500000D098687047C04674E00200136810B56A +:10136000002B0ED17D2902D1C368136009E0054B23 +:1013700004689C4205D1BA2903D1141CFFF7E4FF8D +:10138000206010BDBCFA02000EB470B5051C87B019 +:10139000102012F06AF9041E06D11B4B1B4A1D6176 +:1013A0009861DA611A4C29E0002105608160012012 +:1013B000F8F788FC0B9B051CE060002B1ED0181C66 +:1013C00025211AF023F8061E08D10B981AF036F8DA +:1013D000321C011C0B98FAF727FD0EE002A8102121 +:1013E00011F09DFB0CAA02A80B990192EFF7E6F809 +:1013F000084802A9E568FAF7E1FCA860201C07B0DC +:1014000070BC08BC03B01847882E0020F8DC02002E +:10141000982E002080CA020008B5031C820708D15C +:10142000064A0168914204D1054AD96801209142D7 +:1014300003D0181C0349FAF75DFB08BD6CEB0200F2 +:10144000711201007CFB020010B5041CF0F738FBA0 +:10145000034BC2689A4200D024690023A36010BDE8 +:1014600071120100F7B5161C0193041C0F1CF0F754 +:1014700027FB174BC2689A4200D02469A568002D4B +:1014800009D10C2012F0F1F8A06000281ED003232F +:10149000E580A38010E0E388A18802338B420BDB58 +:1014A00003318900281C012212F0F5F800280DD024 +:1014B000A388A0600333A380E288A168930003326D +:1014C000E280019ACB181F605E609A60F7BDC0464B +:1014D0007112010070B5151C041C0E1CF0F7F0FA17 +:1014E000064BC2689A4200D02469A368002B01D140 +:1014F000336001E0E28832602B6070BD7112010040 +:10150000F0B5836999B05A1E04925A1D9200821850 +:101510000432079102920F21012206339B00C31867 +:10152000043303930369019006A81A4009180A704E +:10153000032293430A930CA8EEF752FE031E01D038 +:1015400000F08CFD019A5568D468079A002A26D0CD +:101550002A785E2A23D00798079300F0BEFCAB7868 +:101560006A781B021343B84AEB189B186360EB7848 +:101570000834236023685A0600D1B1E20A9A013B7D +:101580005268920700D49FE2221C08C205236360C0 +:10159000141C0A9B1F680A9B0C3B0A933D1C019B71 +:1015A0006F1C5D602B78181C10385A2801D900F088 +:1015B00005FD08F03DFA5B005D0062000305640074 +:1015C0000305730081008700030589009E00AF00BA +:1015D000BE00CD00DB00EA00EF00F70005011901B5 +:1015E0002901380155015E01710189019601030548 +:1015F000030503050305A301A5011A05AC01B2010A +:10160000BC01C401D101DE01E901030503050305A5 +:10161000F90126029C029C02B902CF02D302E60223 +:10162000E602D4FF030503050305030503050305CF +:10163000030503050305F20204031503260334031F +:101640003D03520363037B039703A90354048004FF +:10165000A70495040305C003CC03D703E003F003FC +:101660000B0420043C04DE04EE04FE04774B00E08F +:10167000774B6360043400F0E5FC764BF9E76B7858 +:101680005B06DB177F213A78DB01114052B20B4336 +:101690000137002AF6DB5B0001220BE000237F21EB +:1016A0003A78DB01114052B2CB180137002AF6DB41 +:1016B0000622DB001343DCE70323FD1C9D432F1CA4 +:1016C00008CFD6E70023D4E700237F213A78DB0157 +:1016D000114052B2CB180137002AF6DB9B005B4267 +:1016E000029A9858002800D049E25B485B4900F014 +:1016F0005CFD00237F213A78DB01114052B2CB1808 +:101700000137002AF6DB029A9B005B42985812F0E0 +:1017100059FCE7E700207F223B78C0011A405BB20A +:1017200010180137002BF6DB251DF6F761FB00F0E2 +:101730003EFC00207F223B78C0011A405BB21018AB +:101740000137002BF6DB251DF6F720FB00F02FFC00 +:1017500000217F223B78C9011A405BB25118013742 +:10176000002BF6DB206813F023F926E200217F220C +:101770003B78C9011A405BB251180137002BF6DBE8 +:101780002068221CF6F7A8FC74E7251DF6F748FB35 +:1017900000F00DFC251F286821680422F0F706FCE4 +:1017A00000F036FC00237F213A78DB01114052B271 +:1017B000CB180137002AF6DB9B005B4200F012FCDD +:1017C00000237F213A78DB01114052B2CB18013758 +:1017D000002AF6DB029A9B005B4298582168251F7D +:1017E00012F0F2FB00F015FC00207F223B78C001D4 +:1017F0001A405BB210180137002BF6DB2168251F59 +:10180000F6F722FB00F005FC00207F223B78C001A8 +:101810001A405BB210180137002BF6DB2168251F38 +:10182000F6F72AFBF5E300217F223B78C9011A4035 +:101830005BB251180137002BF6DB231F20681A68B2 +:10184000F6F772FC07E2C0460380FFFF78CD020086 +:1018500074E0020034CD0200FCF90200CAA40300C7 +:10186000231C221F083B106821681A68F0F79EFBB2 +:101870003BE100237F213A78DB01114052B2CB18C3 +:101880000137002AF6DB029A9B00D31A1A68002A55 +:1018900000D12AE700223EE000257F223B78ED01BF +:1018A0001A405BB255190137002BF6DB029BAD00E5 +:1018B0005D1B286812F086FB002800D115E7286818 +:1018C000002112F081FBBDE300207F223B78C001A4 +:1018D0001A405BB210180137002BF6DBF6F7C0FA9E +:1018E000B0E300207F223B78C0011A405BB21018A1 +:1018F0000137002BF6DBF6F7CBFAA3E32368B8E653 +:101900002368A360231F1B68636008349AE3231FC6 +:101910001968226821601A6094E3221F1368216805 +:101920002360231C083B1868106019608AE3AB78B9 +:101930006A781B021343ED18D94BEF1882E3AB789A +:1019400020686E780593F0F7E5FAEF1C251F2C1C34 +:10195000002800D176E321E0AB7820686E7805930B +:10196000F0F7D8FAEF1C251F2C1C002800D069E3E3 +:1019700014E0AB7820686E780593EF1CF0F7CAFA94 +:10198000002800D131E309E0AB7820686E78059338 +:10199000EF1CF0F7BFFA002800D026E3059B1B02DE +:1019A0001E43C04BF618E8E0261C27681721381C98 +:1019B000221C0836F6F790FB381C1621321CF6F76D +:1019C0008BFB0020321C011C12F0E4FFAB786A781C +:1019D0001B0213430A9A0F210C320A920A9AEF1C37 +:1019E000FB181360022206ABC9180A9D0B7813433B +:1019F000221D13436B6000230A9A0B709360A06052 +:101A00000DE0261C2568A84B083E9D4209D1656063 +:101A1000A56003200021321C12F0BCFF3560341C8D +:101A200010E3012129402CD06D10231F012D10D16E +:101A3000251C1A680C3D05929B4A03201A60002160 +:101A4000226062602A1C12F0A5FF059B2B60032315 +:101A500015E0251C3268103D05921A680320069295 +:101A6000914A002132601A6022602A1C12F092FF13 +:101A7000059B069A2B60231C0C3B1A6005233360E0 +:101A8000E9E033683560251C103D23602A1C0320E3 +:101A900012F080FFF0F73EFA00280DD00122824BB1 +:101AA00006A92B600A9B5B6813400E325218137014 +:101AB0000A9B0C3B0A93ACE223682B60231C043C7A +:101AC00022680C3B1A60AAE70A9A06A8516801220C +:101AD0000A400F2109180A700A9A0C3A0A924AE53C +:101AE000221F1768002B00D1B5E00C3CAAE2AB78AE +:101AF0006A781B0213430A9AEF1C0C320A920A9A64 +:101B0000FB1813602B780A9A403B584258410F212A +:101B1000430006A8091808780343234353600023B1 +:101B20000A9A0B7093608DE22068FFF775FC251F01 +:101B3000002803D0EEF76AFB2B6817E223685A4AA5 +:101B40002C1C934200D17DE25B10DBB2012B00D054 +:101B500010E592E12068F6F70BFB2EE0AB786E788B +:101B60000593019BEF1CDC602068F6F729FB002839 +:101B700005D1059B043C1B021E43BF1962E2606055 +:101B800078E50A9B06A95A68012313400F225218D0 +:101B900013700A9B0C3B0A9354E200207F223B788F +:101BA000C0011A405BB210180137002BF6DB83002E +:101BB000E41A0434211CF8F785F8206042E2002082 +:101BC0007F223B78C0011A405BB210180137002B0E +:101BD000F6DB8300E41A0434211C11F090F9ECE7E1 +:101BE00000237F213A78DB01114052B2CB18013734 +:101BF000002AF6DB9B005B4218592168EFF73AF8A0 +:101C0000F3E100207F223B78C0011A405BB210183C +:101C10000137002BF6DB251D11F023FEC7E1251C43 +:101C2000231F083D286821681A6811F053FEF0E16F +:101C300000237F213A78DB01114052B2CB180137E3 +:101C4000002AF6DB01339B005B42221F18592168F2 +:101C5000126811F03FFE083CF4E100207F223B783F +:101C6000C0011A405BB210180137002BF6DB83006D +:101C7000E41A0434211CF7F719FD9EE700237F21A5 +:101C80003A78DB01114052B2CB180137002AF6DB5B +:101C90009B005B421859216813F035F8A5E1C04656 +:101CA0000380FFFF0080FFFF74E0020000237F211C +:101CB0003A78DB01114052B2CB180137002AF6DB2B +:101CC000251F022B05D128682168D34AF9F776F938 +:101CD0009EE1261C083E306829682268F9F76EF9F3 +:101CE00030609CE600257F223B78ED011A405BB214 +:101CF00055190137002BF6DB291C2068221CF6F74A +:101D0000A9FDC64BED1813E000257F223B78ED01BD +:101D10001A405BB255190137002BF6DB291C221C37 +:101D20002068F6F7EFFDFF232A0A1A401D405519D7 +:101D3000AD00641986E103230021FD1C9D43286842 +:101D40000A1C11F00CFC2F1D261D606067E60323A2 +:101D5000FD1C9D43261F2868316822682F1D11F045 +:101D6000FEFBBDE70323FD1C9D4329796F1D8B00FE +:101D7000E41A04340AE00323FD1C9D4329796F1DF6 +:101D8000CB439B00E41880235B0019432868221C86 +:101D900011F000FC11E700237F203978DB010840B7 +:101DA00049B2C31801370029F6DBFF20FF22191CB6 +:101DB000DD0940001140284040188000241A1B0A09 +:101DC0001A402068231DF6F7D9F8F6E600217F2295 +:101DD0003B78C9011A405BB251180137002BF6DB82 +:101DE000FF23CA095B001340CAB29B189B00E41A88 +:101DF000083C00202FE000237F203A78DB011040D0 +:101E000052B2C3180137002AF6DBFF25181CFF2247 +:101E1000DE09284052003240411C891889001B0A03 +:101E2000641A2B40191C221C12F0B4FDC5E60021D7 +:101E30007F223B78C9011A405BB251180137002B51 +:101E4000F6DBFF230120CA095B001340CAB29B18CE +:101E50009B00E41A0C3C221CF6F7D4FBADE60F22E3 +:101E600006ABD2181378002B07D00A9B59680123C0 +:101E70000B4013700A9B0C3B0A930A9B039A9342F4 +:101E800013D30A9B5B689B07F4D503220A9B216846 +:101E90005B6893431C1C59609A600A9B08341F6856 +:101EA0000A9B0C3B0A93FFF779FBEEF7AFF9019B16 +:101EB0000020DC607DE16B78022B01D1043C0BE05B +:101EC000002B09D10A9B039A934200D26BE19868D8 +:101ED000002802D10C3BF6E72068F6F711FE66E118 +:101EE000079E2168231F002E02D00021079E079124 +:101EF0001868321C0BABF6F795FD012811D12F1C89 +:101F00000B9B2360EEF782F9019B06A95F60DC6002 +:101F10000F235B180A9A1B7801201343019A13615F +:101F200047E1002806D10B9B043C002B00D13A4B23 +:101F300023600CE002281BD10B98394915F0E9FF0A +:101F4000002810D00B98FFF7FFF9043C2060002E0A +:101F500078D0301C334915F0DCFF002872D0EEF742 +:101F600055F90D967AE0EEF751F90B9B0D9375E05C +:101F7000043C00207F223B78C0011A405BB210185D +:101F80000137002BF6DB251F21682A68F6F7D6FDFE +:101F90003EE000217F223B78C9011A405BB2511814 +:101FA0000137002BF6DB251C01CDF6F7D9FD60606B +:101FB0002FE02068251F12F006FD2AE0AF2B05D880 +:101FC0000120803B5B000343FFF753FBBF2B04D88A +:101FD000B020C31A9B00FFF783FBCF2B07D8C0208C +:101FE000C31A9B00029A21689950043C2AE0D62B20 +:101FF00005D8D03B181C2168F5F756FFDDE5FA2B14 +:1020000012D8251FD73B181C29682268F6F73EF91D +:1020100028602C1C16E0C04674E00200FFFFFF3F62 +:10202000BCFA0200B4FD02006349644815F067FF82 +:10203000041CEEF7EBF8049B019A06339B00D318BF +:102040005C60AEE05E4B1A6B002A01D1FFF7A6FA86 +:1020500000221C6B1A63EEF7D9F80D940D9B5949B9 +:102060001868F9F747FD002825D0019B5A68002A17 +:1020700021D01378432B0BD19378D11C52781B02BB +:102080001343019ACB185360D3680593043B7EE059 +:102090005E2B10D1019B019ADC680D98231DD36043 +:1020A000FFF752F9019B60605B68019A0593013369 +:1020B0005360FFF740FA0D9B434A93423CD0434A9A +:1020C000934239D0019B0BA81B6805930B9313F027 +:1020D00085F9051C0BA813F081F9041C0BA813F05B +:1020E0007DF9019B011C5B680593019B1B680693AE +:1020F000069A059B981A0122401B0B9D2B78002BFA +:1021000012D0DE0904D11F361E4001355B0908E0FC +:102110000F26E0271E40FF001B011F406B78023591 +:102120003B430B95B04204D20D98231CFFF79AF95C +:1021300002E0801BD218E0E70F2306AA9B181A784A +:10214000002A08D00A9A516801220A401A700A9B94 +:102150000C3B0A93F0E70A9A03998A421AD30122A8 +:102160001A700A9B0D991B680593059A019B0591AE +:102170005A6003220A9B5B6893430A9A9160144A4F +:102180005A600D9A9A6012680C331A60019AD360F3 +:10219000FFF7D1F9049B019A06339B00D3180D9ADF +:1021A0005A60022005E00B480B4915F0A8FE041CFC +:1021B00051E719B0F0BDC046F6A40300A8FC020028 +:1021C000882E0020BCFA0200CCF802002CFE02008F +:1021D00074E002004CF8020010A5030010B5041CC6 +:1021E000F1F72AFB074B021C9C3307491B68074881 +:1021F00014F0DFFCF4F7F4FF012C01D1F5F710F82F +:10220000034810BD882E00202FA5030010F0020007 +:1022100074E0020008B5F4F70DFD014808BDC046A2 +:1022200074E0020008B5F4F7FDFC014808BDC046A3 +:1022300074E0020010B586B0041C03A902A804AA29 +:1022400005ABEEF7FDF8049B07480093059B074993 +:102250000193029A039B14F0ACFC012C01D1EEF720 +:102260002BF9034806B010BD10F0020044A503008E +:1022700074E00200F7B501911149041C171C0025F8 +:1022800014F0CBFB7B689D4214D2002D03D0201CA0 +:102290000C4914F0C2FB019BAE009A590A49201C5C +:1022A000BE1914F086FC201CB1680122EFF722FC55 +:1022B0000135E7E7201C054914F0AFFBF7BDC04628 +:1022C000638703008B4003008CA503001B430300BE +:1022D000F0B5214B8DB005AC013800930431019469 +:1022E0000723EEF7B3F9A0681C4D0027A84202D0DF +:1022F000EFF7D0FCC7B260691826A84202D015F0EB +:1023000001FF061CA0691922A84202D015F0FAFEAE +:10231000021C2069A8420DD003AA0221EFF77EFD1E +:10232000039B186815F0EEFE039B061C586815F019 +:10233000E9FE021C71B252B203A803F0DDFC03A84F +:10234000059903F035FD03A861683A1CE36803F0C2 +:102350003FFD281C0DB0F0BD2002030074E0020018 +:1023600008B501F08DFD034B002800D1024B181C6D +:1023700008BDC04634CD020078CD0200012183683B +:10238000034A0B4200D1034A8B438360101C704701 +:1023900034CD020078CD020008B5406816F013FF76 +:1023A000024B002800D1024B181C08BD34CD02009E +:1023B00078CD020082B0000C012804D1034A936852 +:1023C00002331843906002B07047C04624000020DA +:1023D00082B0000C012804D1034A936802331843E9 +:1023E000906002B07047C0463000002037B5C0256D +:1023F0000121074C00950A1C201C064B04F098FD97 +:102400000095201C02210122034B04F091FD37BDF1 +:10241000B4290020B5230100D123010073B5009039 +:10242000000C431E01910A2B1BD801231C1C844065 +:102430000C490A88224392B20A800B4A11780F296C +:102440000FD816781178094CD94033409B0098403A +:10245000031C655C2B43DBB2635413780133DBB29E +:10246000137073BDE02D0020002E0020012E0020EF +:10247000094A38B51378002B0CD1084D2C78E4B2FA +:10248000002C07D10068013313702B7003685B6860 +:1024900098472C7038BDC0460A2E0020092E002017 +:1024A00010B5041C0430FFF7E3FF606817F0BAFFB3 +:1024B000034B8000C0580623C000184310BDC0461F +:1024C0003804030038B50430FFF7D2FF124C13482C +:1024D0002378002B1FD020780021C0B2F7F7F2FB41 +:1024E00000232278934214D20D495A088D5C0122B0 +:1024F0001A40920015412A1C0F252A40094D9200CE +:10250000525906259900D20041182A438A600133A6 +:10251000E7E70023237038BD002E0020F8DC02001E +:10252000012E00203804030008B5F9F79FFC0023B2 +:10253000074A99008A58904208D001330C2BF7D1F2 +:102540000449054815F0DBFCEDF765FED8B208BD7F +:102550003804030090A5030010F8020038B5041CED +:10256000081CFFF7E1FF051C201DFFF781FF6068D5 +:1025700017F058FF024BA84200D0024B181C38BD80 +:1025800034CD020078CD020038B5041C081CFFF7DA +:10259000CBFF051C201DFFF76BFF0122AA40064B55 +:1025A00006481988114200D1054819889143002234 +:1025B0001980044B1A7038BDE02D002034CD020084 +:1025C00078CD0200002E0020C02307B503480093F9 +:1025D0001B210022024B04F0ABFC07BDB4290020F4 +:1025E0001D240100F0B52B4D87B003902B78002BF4 +:1025F0001CD05AB2002A10DA80246E1C6D785C4020 +:10260000002D13D0631EDCB2FF2C0DD004AB981D3F +:102610000121057001F066FCF4E704AAD01D012138 +:1026200003702E1C01F05EFC751CDFE70526039885 +:1026300001F09AFC0124B44226DA0025164F291C29 +:10264000381C221C02F0A4FC6B4601901B79002B65 +:1026500014D0631E1A1C381C291C029302F098FC2B +:10266000031E0BD1381C291C221C02F057FC6B46A0 +:10267000381C1B79291C029A02F050FC0135052DEB +:10268000DCD10134E4B2D6E7013E002ECFD107B051 +:10269000F0BDC046A0A503005000002008B5C8202A +:1026A000FFF7A0FF004808BD74E0020008B54068CD +:1026B00006F0E6F8024B002800D1024B181C08BDBA +:1026C00034CD020078CD020010B5041C081CEFF7D1 +:1026D000E1FA011C431005D00549064815F00FFC2E +:1026E000EDF799FD606806F023F8034810BDC04679 +:1026F0003EA6030010F8020074E00200032310B5A8 +:102700000B40041C081C022B03D1114B0B40062B61 +:1027100002D1EFF7BFFA09E0EFF720FB0AF006F964 +:1027200000220C4B08F016FB0AF08EF80A4B011E33 +:10273000994205D909490A4815F0E1FBEDF76BFD0F +:102740000D2063681856F2F7A7FD064810BDC04675 +:10275000070080FF0000E03FFF03000053A60300D6 +:1027600010F8020074E0020008B5081CEFF792FAB6 +:10277000FA239B005843F2F757FD002805D004497F +:10278000044815F0BCFBEDF746FD034808BDC04604 +:1027900074A6030010F8020074E0020008B5081CDB +:1027A000EFF778FAF2F740FD002805D00349044816 +:1027B00015F0A5FBEDF72FFD024808BD74A6030038 +:1027C00010F8020074E0020010B5041CEFF778F96D +:1027D000084B98420BD0084B984208D0074B9842C0 +:1027E00005D00749074815F08AFBEDF714FD60682E +:1027F00010BDC0464006030094050300DC0503003D +:1028000083A6030000FD020001220020074B0849B7 +:102810005A600860A821DA60064AC9005A50064981 +:102820005A5004315A5005495A50704700900040A0 +:102830000C9C0040FCFF0000440500004C0500001B +:10284000034B04481B78002B00D103487047C04657 +:102850000C2E002034CD020078CD0200F7B5A82759 +:10286000A9253248324B01681A6884468A185118E3 +:102870001960304B00911C780193121109112E4BF5 +:10288000FF000420ED002D4E002C15D0002A03DAA5 +:10289000821AD8515A5102E004325851DA51812239 +:1028A0009200002904DA2648511A1A5099510CE076 +:1028B0009A518122920005E00432D8519A51812226 +:1028C00092005A5189181E4A995001221D4CDA6013 +:1028D0002378002B23D03F201B4A1C4B1168019DFD +:1028E00004330131DB6F2D7808401B5C002D01D0D3 +:1028F000803B5B0010600820009A801A1C22534322 +:102900006246C3189B1013601F23194007D1104B58 +:102910001A78002A03D00F481970F8F789FC0122B1 +:102920002378042053402370FEBDC0467827002042 +:102930007C27002008010020009000404405000092 +:102940004C0500000B2E002074270020882E00204C +:10295000070100207581020038B5051C081C0C1CFD +:10296000EFF7AEF8094A0023904205D0084909481C +:1029700015F0C5FAEDF74FFCE2181179EA180133AA +:102980001171202BF8D1044838BDC0463C07030024 +:1029900093A6030000FD020074E0020038B5041C99 +:1029A000081C151CEFF776F91F2802D90E480F49AD +:1029B00003E0002D05D10E480E4915F0A0FAEDF701 +:1029C0002AFC2418042D04D1012320794000184347 +:1029D00009E0281CEFF75EF9FF2802D902480649F2 +:1029E000EBE72071054838BD10F80200AAA60300E5 +:1029F00000FD0200BEA60300E3A6030074E002008F +:102A0000A02270B51E25A321104BD2009C58C900EE +:102A1000AC439C500E4C0F4E5C500F490F4C800045 +:102A2000195104341E510E4C1951A5210D4CC900E9 +:102A30005C5009490C4C40180C49585004315C500A +:102A40000B49585099582943995070BD00F00140E6 +:102A50004091004044910040006000401C0500008F +:102A600024050000489100404C9100402C050000D6 +:102A700034050000074B8000C018A223DB00C158BA +:102A8000054A0A40C250C25804490A43C2500022B3 +:102A9000C250704700600040FFE0ECFF001F0300E1 +:102AA0000123A022834010B5134CD2051351031CFF +:102AB000C133124CFF339B009C50114B8900C91845 +:102AC000A223DB00CC580F4A00022240C024CA5087 +:102AD000CA58A4021443F822520110402043C8509F +:102AE0000320CA58084C10432243CA50C046C0466F +:102AF000C046C85010BDC0460C05000003030000CE +:102B000000600040FFE0ECFF031F0000F8B50E1C62 +:102B100015F0F8FA194B041C194D1A4F9E420FD1AB +:102B20000123A0228340D20528700021D351FFF752 +:102B3000B7FF0020FFF764FF0023134A13701CE067 +:102B4000301C15F0DFFA2C7001252A1C0F4BA24017 +:102B50001870A023DB05DA512A1C8240061CDA51CA +:102B6000201C0021FFF79CFF301C291CFFF798FF59 +:102B7000281CFFF745FF044B1D70F8BD74E00200F0 +:102B8000090100200C050000080100200A010020B6 +:102B900070B50024FFF738FE164B201C0833DC67A5 +:102BA000F8F714FBA0221E20134B14491C70144B81 +:102BB000D2001C60134BA0261C608B58124D83431F +:102BC0008B50201C0134FFF755FF221C0F4BF605DC +:102BD0001B785BB29A400E4B72511B78002B07D0CA +:102BE000201CFFF747FF0B4B1B785BB29C407451D6 +:102BF00070BDC046882E00200C2E002000F0014041 +:102C00007C270020782700200C0500000901002007 +:102C1000080100200A010020F0B53E4E8DB0331CA3 +:102C20000833DB6F041C002B02D1FFF7B1FF6EE00D +:102C3000002801D0F3F7F6FF6846EDF7D1FA002837 +:102C40000CD1331C0833D86FF5F7BAFA051CEDF731 +:102C5000DDFA002C25D0F3F7EDFF22E0002C01D0A7 +:102C6000F3F7E8FF019B2C491868F8F743FF0025AC +:102C7000041EAC4215D1019F381CEEF721FF274BF3 +:102C800098420BD1211C0120F7F71CF81F21051CCD +:102C9000F860221C2248F9F7C7F8A8600025019BBC +:102CA000336301271F4B1C68331D641101343C4002 +:102CB000DB6F64011C19002D07D10836201C291C6C +:102CC0002022F56718F0B5FA1FE0281CEEF7F8FE91 +:102CD000154B984209D0331C00220833134814497D +:102CE000DA6715F00CF9306311E06B682360AB68AC +:102CF0006360EB68A3602B69E3606B692361AB6978 +:102D00006361EB69A3612B6AE3610A4B1F700DB02D +:102D1000F0BDC046882E0020BCFA020090F80200E8 +:102D2000F6A60300742700203C07030000FD020004 +:102D300016A703000701002008B5FFF729FF014887 +:102D400008BDC04674E00200F0B587B00493574B4D +:102D500003901B780D1C161C002B01D0FFF718FFE9 +:102D6000534B1A78002A0AD1524C4020211C0831BA +:102D7000CA6701321A7010F06BFC0434E0678027D8 +:102D800001224D4BBF004D4CDF674D4BE250FFF72A +:102D90003BFD00234B4AF021A3500432A3500832DC +:102DA000A350C22209039200A150474AE35105945F +:102DB00095423BD1AE4233D11C1C444BA200D758A4 +:102DC000381C15F09FF9031CA0220321C133FF33E7 +:102DD0009B00D2059950631C019301238340019C01 +:102DE00002930426394BA200D558A123A0220299B0 +:102DF000DB00D205D150281C15F09AF9012848D1E2 +:102E0000A022334B0299D205D150281C15F090F91D +:102E100000283ED1013E002EE7D1381C291C07E0D6 +:102E20002C492D4815F06BF8EDF7F5F9281C311CED +:102E3000FFF76CFE0398F5F79BF91E4C0026231C48 +:102E400001253F220833D867244B80211E70244B74 +:102E50001D70244B1A60231DD86F521918F0E9F920 +:102E6000301CFFF7D9FE204B104F1D60059B301C16 +:102E70001D601E4950223D70F8F774F9049BB3425F +:102E800012D03B78002B0FD0236B002B0CD120BF2E +:102E9000F7E7012C01D10224A3E7019B0124022BB7 +:102EA0008BD113480849C3E707B0F0BD0C2E0020B2 +:102EB0000D2E0020882E002004E100E0009000404C +:102EC000FC0F00000405000074E00200140703007A +:102ED0000C05000028A7030000FD02000B2E0020B7 +:102EE00007010020742700200C9C00405D28010091 +:102EF0000805030010B5084B86B002AC009301949E +:102F00000423EDF7A3FB02982379A168E268FFF799 +:102F10001BFF024806B010BD8C07030074E00200DE +:102F2000014B1878C0B270470C2E002010B5242039 +:102F300010F08EFB041C044B802108C0202218F0E6 +:102F400078F9201C10BDC0463C070300F8B5051CED +:102F5000081C0C1C161CEEF7B3FD314FB8425CD1B7 +:102F6000681F0F2859D806F059FD080833585858DB +:102F70005858585858585813133EFFF7D7FF002396 +:102F8000E2181179C21801331171202BF8D1041CF9 +:102F9000301CEEF795FDB8423FD10120052D04D03D +:102FA000123D6B1E9D416D422843002173181B7911 +:102FB0006518803B43432A799B18FF2B03D9FF22D6 +:102FC000DB179A43131C01312B712029EED122E02B +:102FD000FFF7ACFF0023E2181179C2180133117119 +:102FE000202BF8D1041C301CEEF7B8FE0F2115F091 +:102FF000C6F8211C221D24311378803B4343DB1388 +:103000008033FF2B03D9FF25DB179D432B1C137047 +:1030100001328A42F0D1201C00E00020F8BDC046F9 +:103020003C07030008B5024816F076F8014808BDD1 +:10303000C828002074E0020008B5C30708D483073D +:1030400009D10368094A934202D0094A934202D146 +:10305000EEF720FE03E0EEF781FE07F0CBFD00283F +:1030600001DD00F081FF034808BDC04630D30200F7 +:103070003CCD020074E0020008B5034803F03EFDB9 +:1030800001234000184308BDC828002008B50348A4 +:1030900004F06EFE10F02EFE08BDC0461C2B002072 +:1030A00010B5031E064C02D1201C191C04E0086850 +:1030B000EEF7F0FD011C201C03F026FD014810BDB9 +:1030C000C828002074E00200031C203B5E2B00D9BE +:1030D0003F2005235843024BA0381B68181870473F +:1030E0008C00002038B5051C081C684301304010D6 +:1030F00008300C1C10F0ACFA0122044B85710360FF +:10310000037944719343037138BDC046140A030028 +:1031100010B5041C102010F09BFA044B0360636888 +:103120004360A368C3600023836010BDAC09030043 +:1031300038B5051C202010F08BFA0C4B041C0360E2 +:103140000520011CFFF7CEFF6B68EA68A0602361D1 +:1031500062602A7C201CA276AA689B1863616B7C43 +:10316000E37615F05DF8201C38BDC04670090300F9 +:1031700070B5061C081C141CEEF78CFD051C201CE9 +:10318000EEF788FD041C002D01DB002802DA0E4852 +:103190000E490BE0301C15F0ACF8854204DA301C07 +:1031A00015F0B5F8844205DB0748094914F0A7FE7D +:1031B000EDF731F8301C291C221C15F08DF8012385 +:1031C0004000184370BDC04610F802004AA7030033 +:1031D00063A70300F8B50C680D1C2379DB0702D543 +:1031E00019481A490DE04868EEF754FD071CA86815 +:1031F000EEF750FD061C002F01DB002805DA14480D +:10320000144914F07CFEEDF706F8E868EEF742FD8D +:10321000051E092D02D90E480F49F2E7201C15F0B2 +:1032200068F8874204DA201C15F071F8864202DB48 +:1032300007480A49E5E7201C391C321C2B1C15F0F5 +:103240002DF80748F8BDC04600FD020073A7030033 +:1032500010F802004AA70300A8A7030063A7030011 +:1032600074E00200F7B50E1C2749041C009213F00D +:10327000A0FC009B002B03D1201C244913F099FCD7 +:103280000025234F201C391C13F093FC0197301CA0 +:1032900015F03DF8854221DA0027301C15F029F899 +:1032A00087420CDA391C2A1C301C15F015F8194B12 +:1032B00019491A5C201C13F07CFC0137EDE7201C37 +:1032C000164913F076FC009B002B05D1301C15F03D +:1032D0001EF80138854211DB0135D8E7201C019921 +:1032E00013F067FC009B002B03D1201C0C4913F04A +:1032F00060FC201C0B4913F05CFCF7BD201C0A4944 +:1033000013F057FCE8E7C046C2A70300C9A70300B3 +:10331000D5A70300D7A703009341030070740300EF +:103320003F4B03001B430300CFA70300F0B51E1C57 +:1033300000238BB00F1C0093081C111C1A1C0333B4 +:10334000EDF752F9032F55D8381C06F067FB5602EB +:1033500010103068684B0340062B50D0830700D014 +:10336000C4E0664B02689A4200D0BFE047E0306894 +:10337000EEF790FC051C7068EEF78CFC0290029949 +:10338000281CFFF7AFFE0390022F02D114F099FF23 +:103390002EE0B06807A90122EEF73CFE002D08DB05 +:1033A000029B002B05DB00266B43089A371C9342D7 +:1033B00017D05348534914F0A2FDECF72CFF079B9C +:1033C0001A5D131C092A00D90923DBB20398321CA9 +:1033D00014F064FF0134049BE11B9C42EFD17F1980 +:1033E0000136029B9E4203D07B1904933C1CF2E7FA +:1033F00003987EE044484549DDE7454879E007A960 +:10340000F9F7CAF9079B041C0593012B03D1207817 +:1034100015F0F3F96DE00023221C181C1D1C059EFD +:10342000111BB14214DA11780A2901D03A2905D1C9 +:103430009D4200DA1D1C0130002307E001332029E2 +:1034400004D0392902D92E483249B4E70132E6E7DF +:1034500003900295002B05D0021C013203929D427D +:1034600000DA029302980399FFF73CFE0026071C3E +:10347000351C0494049B059A1B1B934227DA049B7A +:103480001B780A2B01D03A2B0DD1029B9D4207DA03 +:10349000291C381C321C002314F000FF0135F4E70E +:1034A000013600250FE0202B04D1381C291C321CCA +:1034B000002305E0392B06D8381C291C321C303B70 +:1034C00014F0ECFE0135049B01330493D2E7039B17 +:1034D000381C9E420DDA029B381C9D4209DA291CD9 +:1034E000321C002314F0DAFE0135F4E706480A49DD +:1034F00061E70BB0F0BDC046070080FF80CA020044 +:1035000010F802000CA8030000FD020029A8030027 +:10351000000A0300E2A7030048A80300F0B585B045 +:103520000191051C081C002106F068FC041E05D052 +:103530002349244814F0E3FCECF76DFE281C14F03A +:10354000D8FE061C281C14F0E2FE011C301CFFF7FC +:10355000C9FD071C281C14F0CCFE84422CDA00267E +:10356000281C14F0C6FE864224DA321C211C281CBA +:1035700014F0B2FE07F05EFB019907F08BF809F03A +:10358000D5F90022104B07F0E5FB104B002202900A +:10359000039106F0F9FB0923002804D0029803994F +:1035A00009F052F9031C321C381C211C14F076FE61 +:1035B0000136D5E70134CDE7381C05B0F0BDC04673 +:1035C00061A8030010F802000000E03F0000224064 +:1035D000F0B587B003910592061C14F098FE041C08 +:1035E000301C14F086FE0190039814F090FE071E24 +:1035F000A74205D01B491C4814F081FCECF70BFED8 +:103600000198391CFFF76EFD00240290019B9C423B +:1036100024DA0025BD421FDA211C2A1C301C14F0BC +:103620005BFE211C04902A1C039814F055FE059B98 +:10363000002B05D0049BC318092B06DD092304E0E9 +:10364000049B1B1ADA43D21713402A1C0298211C30 +:1036500014F024FE0135DDE70134D7E7029807B006 +:10366000F0BDC0468DA8030010F80200F8B5041C98 +:10367000081C0E1C151CEEF723FA164FB84226D173 +:10368000053C042C23D8201C06F0C8F9141403218F +:103690000700281CEEF762FB07E0281CEEF75EFB34 +:1036A000011CFE20800506F003FE011C301CFFF704 +:1036B00035FF0DE0281CEEF703FAB84207D162424D +:1036C0006241301CD2B2291CFFF782FF00E00020CB +:1036D000F8BDC046140A0300F7B5071C0193142077 +:1036E00008AB0E1C151C1C780FF0B2FF044B476092 +:1036F00003606B461B798660C56003744474FEBD2D +:10370000E40C030038B5051C0C200FF0A1FF054B9D +:10371000041C456003600520011CFFF7E3FCA0606A +:10372000201C38BD500D030030B5124B8BB003ACDC +:1037300020C90138009301940323ECF787FF06A802 +:1037400061680FF003FA039B089A5900237A0093EB +:103750006868079B02F0C4FD021E05D006490748B1 +:10376000FDF712FEECF757FD06A90548F8F726FB12 +:103770000BB030BD980D0300ABA80300C0F90200E8 +:1037800048EF020030B5114B89B002AC20C90138B6 +:10379000009301940323ECF759FF606805A9012207 +:1037A000EEF738FC029B059A5900237A009368686B +:1037B000069B02F0DFFD021E05D005490548FDF716 +:1037C000E3FDECF728FD044809B030BDD00D03003F +:1037D000CEA80300C0F9020074E00200802108B501 +:1037E000C905064803F01CF9FE23FE2140029B0593 +:1037F000400A1843890507F07FF808BDC828002053 +:1038000038B50D1CEEF7AAFA041C281CEEF7A6FA30 +:10381000211C07F071F8051CFFF7E0FF011C281CB4 +:1038200006F038FF011C201C06F0C6FB032398435A +:10383000013B1843014BC01838BDC04600008080D2 +:1038400008B5FFF7CBFF03239843013B1843014B17 +:10385000C01808BD00008080F7B5019008680E1CF4 +:10386000EEF718FA019B041C1B4D012B06D1002812 +:1038700024DD281C211C03F0D3F829E07068EEF742 +:1038800009FA019B071C022B06D1844216DA011BA0 +:10389000281C03F0C5F81AE0B068EEF7FBF9061E25 +:1038A00002DDE043C01903E0002807D0381B0130D7 +:1038B000311C801906F060F9011E04DC074814F081 +:1038C00011FBECF7A8FC281C03F0AAF870430019C0 +:1038D00010F010FAFEBDC046C828002010F8020003 +:1038E00038B5094C094D002802D00868A04203D120 +:1038F000281C03F0BBF805E0EEF7F8F9011C281CC2 +:1039000015F00DFC201C38BD74E00200C828002012 +:1039100010B5041CEEF734FBEEF7BCF9011E04DC15 +:10392000074814F0DFFAECF776FC064803F078F865 +:1039300010F0E0F90422011C201CEEF737FB10BD4B +:103940006CF90200C828002038B50D1CEEF7A2F96A +:10395000041C281CEEF79EF9844204DD064814F08E +:10396000C1FAECF758FC0130011B044803F058F889 +:10397000001910F0BFF938BD10F80200C828002067 +:1039800010B5EEF787F9041E1E2C01DC002804D1C7 +:10399000094814F0A7FAECF73EFC80210748C90556 +:1039A00003F03EF8202301221B1B5242DA40104054 +:1039B00010F0BBF910BDC04610F80200C828002066 +:1039C00008B5406815F036FD024B002800D1024BC7 +:1039D000181C08BD34CD020078CD020070B5061C5D +:1039E000F7F70CFB0E4B0F4A0F4C9A620022DA627B +:1039F0000E4A5B629A630E49201C15F02EF80D4D9D +:103A0000281C04F097FD706803F018FC281C04F0D3 +:103A10009BFD201C15F010F8F7F7E0FA064870BD82 +:103A2000C828002019640100D4280020138802004F +:103A300070170000CC29002074E0020008B540682F +:103A400015F000FD004808BD74E00200F8B5094E0D +:103A50003378002B0CD1084D2C78E4B2002C07D120 +:103A6000012700682F7003685B6898472C703770D7 +:103A7000F8BDC0460E2E00200F2E002008B50348CA +:103A80000349044A13F095F8034808BD10F00200FA +:103A9000C7A40300F2A8030074E0020008B50348BD +:103AA0000349044A13F085F8034808BD10F00200EA +:103AB000C7A4030036AA030074E00200F0B51D4B52 +:103AC0008BB004AC20C90138009301940623ECF7B5 +:103AD000BDFD1723E068184E0393B04202D014F0E6 +:103AE00011FB039020691527B04202D014F00AFBA5 +:103AF000071C60691622B04202D014F003FB021CBE +:103B00006B4601201B7B0435404279B2009052B2D3 +:103B1000281C5BB201F008FD281C6168A268002324 +:103B200001F088FC281C049901F0BCFC301C0BB08F +:103B3000F0BDC0464C10030074E0020070B586B0C2 +:103B4000061C0122081C03A9EEF764FA039D2C1C35 +:103B5000049A631B0192934205D22178301D01F033 +:103B6000CDFD0134F4E7014806B070BD74E00200F9 +:103B7000F0B5141C89B00122071C081C02A9EEF73D +:103B800049FA201C002405A90222029DEEF742FA00 +:103B9000059E039B01939C4206D2295D381D01F0CE +:103BA000ADFD30550134F4E7014809B0F0BDC04621 +:103BB00074E00200F0B5051C87B048680C1C0F6863 +:103BC000EEF768F8011C02A80EF0C0FF0026032DD6 +:103BD00003D1A068EEF75EF8061C0024039B019356 +:103BE0009C4209D2049B381D311C1D19019301F020 +:103BF00085FD01342870F1E702A90248F8F7DEF8E4 +:103C000007B0F0BD48EF0200F0B5051C00248BB0F2 +:103C10001A4B1B48E158FFF781FC03AB18510434E1 +:103C20001C2CF5D1142300266B4300930024154F60 +:103C300003AB1959381C14F053FE0434281C00F04F +:103C400093F901971C2CF2D109AC02AF21680198BD +:103C500014F046FE043C281C00F086F9BC42F5D165 +:103C60000136082E05D0F307E0D4009800F07CF967 +:103C7000DCE701F033F90BB0F0BDC0463C110300A6 +:103C8000FCFF02005000002008B51920FFF7BCFF20 +:103C9000004808BD74E0020008B50430F2F734F8BB +:103CA000004808BD74E0020008B5043010F0F3F8D5 +:103CB000004808BD74E002000B1CF0B5061CC1886A +:103CC00087B0151C00681A1C0023EEF7BBF8041C13 +:103CD000002D40D0042D14D103204443B1680C19A9 +:103CE0000121627852000A43039222788A400A43F3 +:103CF0000492A3788B400B4303A90593F5F7E2FFE9 +:103D00002AE0281C032103AAEEF788F8039B186811 +:103D1000EDF7C0FF039B071C5868EDF7BBFF039B43 +:103D2000051C9868EDF7B6FFFF2F03D8FF2D01D8CB +:103D3000FF2805D909490A4814F0E1F8ECF76BFAB5 +:103D4000C0B204360090A1B2FAB2EBB2301C10F04F +:103D5000B7F8044800E0281C07B0F0BD0EAB030024 +:103D600010F8020074E0020073B51C1C081C00234C +:103D7000111C02220093131CECF736FC206814F08F +:103D8000C1F9051C6068EDF785FF041E05DC0949D3 +:103D9000094814F0B4F8ECF73EFA0C200FF058FC88 +:103DA000061C064BE9B208C0A2B2F1F783FF301C33 +:103DB00076BDC0461DAB030010F80200D41103000D +:103DC00010B50F4814F0D4FE002817D00D4814F099 +:103DD0008DFE0D4B1B68984203D10C4B9A6E1A63F3 +:103DE0000CE03F220A490B8801331340094A12882C +:103DF000934203D00A88084C0B80A05410BDC046E3 +:103E00001C2900205C29002080270020882E00200B +:103E1000E42D0020E22D0020102E0020002208B505 +:103E2000084B09481A80094B09491A8014F0A5FE6D +:103E30000122084B524208481A6014F053F8074B0D +:103E4000986608BDE42D00201C290020E22D0020EA +:103E5000C13D010080270020C8F70200882E002005 +:103E600010B5041C431C03D0034B986EFDF7ECFA0D +:103E7000024B1C6010BDC046882E00208027002009 +:103E8000034B044A1B881088181A431E9841704738 +:103E9000E22D0020E42D0020084B094A19881288E1 +:103EA000914201D130BFF7E71A880649885C3F216B +:103EB0001A8801320A401A807047C046E22D00205D +:103EC000E42D0020102E002038B5041C4518AC420B +:103ED00005D02178024814F0FEFD0134F7E738BD23 +:103EE0005C29002070B5041C4518AC420DD0237825 +:103EF000064E0A2B03D1301C0D2114F0ECFD217865 +:103F0000301C14F0E8FD0134EFE770BD5C2900209F +:103F100010B5041C002C08D0211E082900D9082146 +:103F20000248641AFFF7D0FFF4E710BD36AB030078 +:103F300038B5051C041C002C08D0211E082900D906 +:103F400008210448641AFFF7BFFFF4E7281CFFF7B5 +:103F5000DFFF38BD3FAB030008B5011C014814F07A +:103F60001DFD08BD5000002070B5002814D00B4D79 +:103F7000041C281C02F0C2FD0419061C844205D250 +:103F800030BF281C02F0BAFDB042F9D830BF281C5F +:103F900002F0B4FDA042F9D370BDC046C82800208D +:103FA0002022074B07491A701D3A5A7004329A7042 +:103FB00000220548DA7059601A725A727047C0467A +:103FC000882700207469627574E0020008B503490F +:103FD000034813F094FFECF71EF9C04654AB0300FE +:103FE00010F8020002220A4B10B5DA670022012104 +:103FF000084B5A61084A11615A69002AFCD0074CE3 +:10400000A06F002803D00FF04AFB0023A36710BD68 +:1040100004E100E0FC10004000100040882E002069 +:1040200008B5FFF7DFFF014808BDC04674E0020095 +:10403000F8B5FFF7D7FF334C2678657801360135A0 +:104040007543281C0FF004FB00222F4B451998677D +:104050002E4B80191D602E4B012118602D4B5A608C +:104060008022D20511605A68002AFCD003212A4B15 +:1040700061562A4A00259950A178043A9950617AEC +:10408000083299506168264A08269950217A254AB3 +:10409000254F99500121254A9D5004329950244AB8 +:1040A0009E5022788124A4042243A324E4001A51C0 +:1040B0000222204C1A51204C1F51204F043C1F510A +:1040C00018271F4C1F511F4C1851C120C0248000BD +:1040D0001E501D48640002510260802080001A5862 +:1040E000713CFF3C22431A50184A5560596053688E +:1040F000002BFCD00022154B1A61074B01329A604D +:10410000F8BDC04688270020882E00208427002084 +:1041100094270020FC000040001000400C05000027 +:104120001C05000024050000FFFF00002C05000016 +:1041300014050000340500003C05000021100100BA +:10414000540500000405000000E100E0FC10004000 +:1041500008B5FFF76DFF014808BDC04674E00200D6 +:10416000F0B5161C8DB0002804D07149714813F0C9 +:10417000C6FE3CE0704B09AA191CB0C9B0C21A783F +:104180009F7805925A78DD7806925A6804900192D9 +:104190001A7A5B7A0392029308E0631EFA2B00D925 +:1041A000C0E0E3B20593049B01330493049B72685F +:1041B00093421ED2049BDB000793079AB3689B18B7 +:1041C0001A68002AEFD0042AEDD05868EDF78EFD6A +:1041D000B368079A041C9858F7F748FE574B021C1F +:1041E000C01806287AD956485649FDF7CDF8ECF79D +:1041F00012F8554B09AC9B6F002B13D16B461B7DFE +:10420000A77023706B461B7EE5706370019B0A9359 +:104210006B461B7B23726B461B7A6372464B07CC43 +:1042200007C382E06B461B7D434E23706B461B7EAB +:104230006370228833889A4210D0FFF7D3FE019B27 +:10424000A7700A936B461B7BE57023726B461B7A43 +:1042500063720ECC0EC6FFF7EBFE66E002223B4B0C +:104260003B49DA6700238C464B613A4B013A1A61AD +:1042700063465B69374A002BFAD06946019809AB5F +:104280000A90087BDD701872087A9F7058722A486D +:104290006DB252CB52C0304B0298D550043BD75030 +:1042A0000833D05001982D4BD05003982C4BD05050 +:1042B0000020274B58600123536063465B68002B46 +:1042C000FBD00022C021224B49001A61214B013250 +:1042D0009A60244B01325A501A6026E005F0A8FB80 +:1042E0005DFF07000D00110016001B001D00631E7E +:1042F000FD2B17D8E3B2069355E7642C12D8E7B22A +:1043000051E7072C0ED8184B1D5D4CE7022C09D83D +:10431000E3B2029347E7019445E7FF2C02D8E3B2EA +:10432000039340E7064811495FE711480DB0F0BD1F +:1043300069AB030000FD02008827002039FDFFFF64 +:1043400010F802008DAB0300882E002004E100E08D +:10435000FC100040001000400C0500001C0500008F +:104360002405000000E100E04CAB0300A3AB030018 +:1043700074E00200F0B52B4B85B09D6F002D01D18C +:10438000FFF724FE0222A3242749E400CA67274935 +:10439000274E0C59274BE4B201342C1935681F1CE9 +:1043A0000391A54202D11A60234838E025780028FD +:1043B00004D1601C291CF7F74FFD0EE0022D26D911 +:1043C0006378012B23D1A278002A20D1E378012B36 +:1043D0001DD1201DE91EF7F727FD691CED43336849 +:1043E00061185A1A0190201C029316F00EFF029BCE +:1043F000039A5D19114B3560D5500022104B01987E +:104400001A610123039A9360DB183B6007E00223E3 +:104410000C493B600C4813F072FDEBF7FCFE05B055 +:10442000F0BDC046882E002004E100E000100040EE +:104430009427002000E100E074E002000405000081 +:10444000FC100040C8AB030010F80200184B30B558 +:104450005A681849002A03D000225A6001328A6043 +:104460001B69002B22D00022114B13481A61A32391 +:10447000104ADB000468D3582278DBB29A4201D993 +:104480001A1C23708025ED004D59012D0CD10B4DC8 +:1044900002339B182D68E3189D4205D30132A21800 +:1044A0000260074B0348C25001238B6030BDC046F9 +:1044B000FC100040001000409427002084270020BA +:1044C00004050000F7B5364D0C1CA96F8446019217 +:1044D0001E1C002901D1FFF779FDA3233148DB0021 +:1044E000C258A319D2B2071C934204D9161B944296 +:1044F00001D9141C002633190B70AB6F6146581C90 +:10450000221C16F079FE002E06D0AB6F013418196C +:104510000199321C16F070FE0222234BDA6700224A +:10452000224B5A6101323A615A691E49002AFBD076 +:104530000024A86F1E4A88501C484460012008606F +:10454000111C5A68002AFCD00120164A90600020F5 +:10455000164A10611869134A0028FBD015480068F4 +:104560005050002011494861012111615A69002A07 +:10457000FCD000210D4A51600A4A013151605A684D +:10458000002AFCD00022C021084B49001A61054BCB +:1045900001329A60084B01325A501A60F7BDC0468A +:1045A000882E00200010004004E100E0FC100040D4 +:1045B000040500009427002000E100E007B501A9F0 +:1045C000F8F7EAF80321021C019B0248FFF77AFF83 +:1045D00001480EBD48AB030074E002001FB5012284 +:1045E00001A9EDF717FD002201980299131CFFF7AE +:1045F00069FF014805B000BD74E002007822044B59 +:1046000004481A80743A5A801A715A717047C04629 +:10461000F800002074E0020013B5074C20880FF06A +:1046200069FB009060880FF065FB694601900220ED +:10463000F5F748FB16BDC046F800002008B5031E7C +:10464000064802D00868FEF7BFF8002104F0D2F84F +:104650000022034B03481A7008BDC046302B0020CF +:10466000502E002074E002001FB50A4B02AC0093EC +:1046700001940223EBF7EAFF029B002B01D0064ACC +:1046800053806368002B01D0034A1380034804B0B1 +:1046900010BDC04604140300F800002074E00200BE +:1046A00008B5074B1A78002A09D0064A126B002A6F +:1046B000F7D000211970044B186804F09BF808BD6E +:1046C000502E0020882E002098270020F0B51B4B8C +:1046D00087B002AE009301960423EBF7B7FFB068F2 +:1046E0007568029FFEF770F88021041C367B04F089 +:1046F00081F8391C124805F0AFF9011C201C04F0A8 +:10470000E1F8002D17DB00230E4A0F4912680B70E9 +:10471000AD180E4A15600E4A13700E4A13800E4AE9 +:1047200013800E4A53670E4B1C6002230B70002E41 +:1047300001D0FFF7B5FF0B4807B0F0BDA014030090 +:1047400040420F00FC2C0020502E00209C2700200F +:10475000512E0020E82D0020E62D0020882E00207C +:104760009827002074E0020030B5224B89B004ACD9 +:10477000009301940423EBF769FF04221E4B049875 +:104780001A715A711D4B0340062B06D0830729D19D +:1047900003689A691A4B9A4224D101230394029325 +:1047A0006068FEF711F800221649174B0D6817498B +:1047B0001A700D60257B16490D701649029D0D80FB +:1047C00015490A800399154A012D00D109685167DE +:1047D000134A106001221A70237A002B07D0FFF7CA +:1047E0005FFF04E002A903AAEDF7F6FAD8E70D4847 +:1047F00009B030BD40140300F8000020070080FF1E +:1048000079CD0000FC2C0020502E00209C27002099 +:10481000512E0020E82D0020E62D0020882E0020BB +:104820009827002074E00200F0B5724C87B023781E +:10483000002B00D1DBE0704D704E2A6833682F1CCE +:10484000934200D2D3E02378022B0AD16C4B002193 +:10485000186803F0CFFF33680A332B6001232370FD +:10486000C5E0644B1B78012B00D0C0E0654B198874 +:10487000654B1A888A4208D3644A1278002A02D00B +:1048800000221A8001E02270B1E0614A012901D1C1 +:10489000506F03E01B88526F9B0098585D4B584C3B +:1048A0005D4D98420CD10021206803F0A3FF2988B8 +:1048B0005A4805F061F901234E4A3860137096E0BA +:1048C00005A9F7F769FF2768059B061C8021381C9E +:1048D000009303F08FFF1F23347829884F481C4032 +:1048E00005F04AF9698805F047F9009B013CE4B2FC +:1048F0000290012B10D97378232B09D0622B0BD196 +:10490000002C04D0013CE4B2012C09D000E00624C4 +:1049100002230120002206E000200123019003E091 +:104920000223201CFF220192009A934207D2F25CDC +:104930003A2A04D00F2101330A402A71DBB2364AE9 +:10494000944612790392009A934217D2F15C3A2965 +:1049500014D1591CC9B2914210D2755C0F21624624 +:104960000D4055710233009ADBB2934206D20A22FF +:10497000F35C5543194063466D185D71092C1DD8D1 +:104980000399019B0439CA1852B2640000280CD064 +:10499000234B002A01DB195B0BE01B5B51428B4070 +:1049A000191C381C03F08EFF0CE01E4B195B002A0B +:1049B00001DB1141F5E752429140F2E7381C00213A +:1049C00003F018FF6B461A7A134B5B7953430A3B8B +:1049D000092B00DC0A23094A12689B18064A136057 +:1049E000094A1388013313800222024B1A7007B060 +:1049F000F0BDC046502E00209C270020FC2C00203B +:104A000098270020E82D0020E62D0020512E0020C0 +:104A1000882E002074E00200F800002060EA000008 +:104A20004C2403003E2403000023FA21084A890095 +:104A30001360084A1370084A1360084A1160084A54 +:104A40001370084AD36613670122074B1A70704728 +:104A5000A0270020522E0020A42700204C00002078 +:104A6000542E0020882E0020532E002008B5084B1D +:104A70001A78002A08D1074B1B6B002B02D0FFF7D6 +:104A8000D3FF03E030BFF2E700221A7008BDC04632 +:104A9000532E0020882E0020012383770048704782 +:104AA00074E002000023E021A0228377024B090278 +:104AB000D2050248D15070470C05000074E0020096 +:104AC000837F0248002B00D10148704734CD02009B +:104AD00078CD020010B5A0241049E4054B7F081CD6 +:104AE0005A1C002B05D1498C0D4B8B430D4963504B +:104AF0000EE010335B00CB185988A123DB00E15096 +:104B0000092A05D10120F6F761FB0120404203E0AC +:104B1000054B42775200D05A10BDC04650000020CD +:104B2000F01F00000C0500005A24030073B51B4D54 +:104B3000041EEE6E09D11A4D2B78002B2BD019488C +:104B4000194913F0CDFE2C7027E0ECF7B9FF174B95 +:104B5000984202D1301C211C15E0154B2340062B36 +:104B600005D0A30712D1134B22689A420ED1201C04 +:104B700001A9F7F711FE019B012B0CD1007813F06E +:104B80003CFE011C301C13F0ABFE06E00A480B494A +:104B900013F0B5F92863FFF747FF73BD882E002097 +:104BA000542E002050000020000A0300140A0300C5 +:104BB000070080FF80CA020000FD0200E8AB03008E +:104BC000F7B5A123A021214AC905DB00CA50012263 +:104BD000C37F1F4D0D339A404A51C37F0195013366 +:104BE000DBB2032B00D10023C377011C031C363139 +:104BF000223300221A8002338B42FAD1C77F154933 +:104C00007B000133CB18591E0E7805217143012614 +:104C1000351C1C78063309190F4C6118141DA5406A +:104C20002C1C09799219490041184D8C2C434C8455 +:104C3000092AE8D10D37A023A122BE40DB05D2000E +:104C40009E50828E01995A50F7BDC046F01F000059 +:104C50000C0500000BAC03005000002070B5304C78 +:104C60008CB0A37F002B59D0201CFFF7A9FF2D4A41 +:104C70002D4913680968063313608B4241D3002520 +:104C80002A4B15601B78012B06D0022B39D1201C32 +:104C9000274913F025FE32E0264BDA6E1E1C002A4F +:104CA0002DD01B6F002B2AD0F1F7BCFF6846EBF725 +:104CB00097FA002809D1204B1868F3F781FA051CF0 +:104CC000EBF7A4FAF1F7B6FF15E0F1F7B3FF019B9C +:104CD0001A491868F6F70EFF00280CD10198ECF776 +:104CE000EFFE174B984203D11648174911F061FFA8 +:104CF0000025019B3363281CFFF718FF01E0FFF735 +:104D000093FE0023228C6377FF33FF331A4205D0D2 +:104D1000E12201200D49D200F6F724FA0CB070BD53 +:104D200050000020A42700204C000020522E00201C +:104D3000000A0300882E0020A0270020BCFA0200F1 +:104D400090F8020010F00200F6A60300D54A010018 +:104D5000F7B50024009308AB124D1B78061C081C05 +:104D6000171C0193EC662C67F3F702FA6A460E4BA8 +:104D7000127818600D4BEE661F600D4B28671A7095 +:104D80000C4B1C70F3F71CFAFFF7D0FE01220A4B04 +:104D90001C600A4B1A70019BA34201D0FFF766FE0C +:104DA000F7BDC046882E0020A02700204C00002020 +:104DB000542E0020532E0020A4270020522E002025 +:104DC000F0B500242C4B8DB0DC661C672B4B07AC78 +:104DD00040C90138009301940523EBF737FC07988D +:104DE000636805900293237B257A0393244B277CE9 +:104DF0000340062B05D0830718D1224B02689A4244 +:104E000014D106A9F7F7C8FC069B002B30D0012B64 +:104E100008D1002D06D1002F04D1007813F0EDFC4D +:104E2000059021E00598FEF76DFC0AE0ECF748FEDE +:104E3000154B984206D1002D14D0012005A9F4F796 +:104E400041FF0590237C002B03D00598EEF72EFF41 +:104E50000590039B301C00930599029A2B1CFFF7C9 +:104E600077FF05E0002FE8D1301C059913F038FDDD +:104E700006480DB0F0BDC046882E00201C1503006A +:104E8000070080FF80CA0200140A030074E00200D9 +:104E900030B5104B89B003AC20C9013800930194A0 +:104EA0000523EBF7D3FB02A90398F7F775FC227CE7 +:104EB000237B02990092039AFEF70EFC237A011CD1 +:104EC0000093281C62680023FFF742FF024809B0E4 +:104ED00030BDC046EC15030074E00200002208B5A6 +:104EE000064B1A70064B02321A70064B064A1B68B4 +:104EF000063B1360FFF7BAFD08BDC046532E0020E5 +:104F0000522E00204C000020A427002008B5FFF7F7 +:104F1000E5FF014808BDC04674E0020010B5042951 +:104F200001D8042A02D90B480B4903E0092B05D903 +:104F300008480A4912F0E3FFEBF76DF905246143D5 +:104F40008A188218137101229A40131C028C134391 +:104F5000038410BD10F80200F6AB0300A8A70300FD +:104F6000F8B548680C1C0F68ECF794FE061CA068A6 +:104F7000ECF790FE051CE068ECF78CFE311C031C7E +:104F80002A1C381CFFF7CAFF0048F8BD74E0020075 +:104F900008B5042901D8042A05D90649064812F0A3 +:104FA000AEFFEBF738F9052359438A1880180079CA +:104FB00008BDC046F6AB030010F8020008B5064B6A +:104FC0001A680823D16C0B43D364FDF70FFAFDF781 +:104FD000FBFAF4F71BF9FCE7EC2C002008B50948B4 +:104FE00003F0B2FA13F004FDEFF75CF9064813F092 +:104FF00023FD0648F6F714F8F5F7F0FFF0F704F98B +:1050000008BDC046CC290020D42800201150010042 +:1050100038B5114C201C14F011FA002803D00F4BA6 +:105020001B78002B14D000230D4A0E4C13700E4A2F +:105030000E4D13702068002802D003681B68984743 +:105040000434AC42F6D1FFF709FEFFF7EDFB38BDA3 +:10505000201C14F06FF9E6E7E02A00200F2E002054 +:105060000E2E0020742900200A2E00209C290020EA +:1050700010B5041C044B0833036013F0DDFC201C46 +:1050800000F04EF8201C10BD18B602001FB5041C1D +:1050900000F044FF0B4B01A81A1C3C336360002353 +:1050A0000832636122600849221C0CF0B5FE0749F2 +:1050B00001A80BF0E3FE606113F0BFFD201C04B0FB +:1050C00010BDC04630B6020041AC030045AC030041 +:1050D000074B10B51A1C041C08323C3302604360B5 +:1050E00040690BF05BFD201C00F02CFF201C10BD64 +:1050F00030B60200084B10B508330360002343604C +:105100008360C360041C00F065F90449206113F05A +:105110001EFE201C10BDC04678B60200FF8A0200A9 +:1051200010B5041C034B0833036013F0F5FC201C7E +:1051300010BDC04678B6020038B50C4B041C0360A5 +:10514000002343608360C3600362436283639623EA +:10515000051D9B01C363281C00F0CEFD281C0449DB +:10516000221C00F065FE201C38BDC04698B6020027 +:10517000278B020008B5054B1B68002B04D104489F +:105180001821192200F0B8FD08BDC046B82800203B +:10519000CC2F0020074B083303600023064A9958A0 +:1051A000814201D100219950802204335200934260 +:1051B000F4D17047A0B60200A8270020F0B50F1C5C +:1051C00085B02F49051C16F02FF9041E02D1FFF7F8 +:1051D000D1FF52E0281C2B4916F026F9002803D1F4 +:1051E000FFF7C8FF012448E0281C274916F01CF9E6 +:1051F0000024A04206D1FFF7BDFF02343DE0013498 +:10520000402C0FD0214BA600F2580193002AF6D172 +:105210000BE002A8291C13F0C8FE02A813F011FF2E +:1052200000280CD10124644227E02B783A2BF0D1DE +:10523000281C174902AA0CF011FE029818E002A8D7 +:1052400013F0E9FE002803D002A813F0EEFE0FE0F1 +:1052500002A813F0D7FE051EE4D0036802A89B68DD +:10526000009313F0C2FE3A1C011C009B281C9847B7 +:105270000028D7D0019B03349851201C05B0F0BD05 +:1052800048AC030057AC03004FAC0300A827002034 +:1052900041AC030008B5031C0020022B0DDD0749BB +:1052A000033B9B005A585850824204D01368101C8C +:1052B0005B68984701E00120404208BDA827002014 +:1052C00070B50C1C151C022810DC0F4B1B68002B42 +:1052D00001D1FFF74FFF6619B44205D021780B4882 +:1052E00000F0F6FD0134F7E7281C0BE00338084B0B +:1052F0008000C058002803D003681B68984701E06D +:105300000120404270BDC046B8280020CC2F0020AC +:10531000A827002010B50C1C02280BDC0C4B1B68C6 +:10532000002B01D1FFF726FF0A4813F017FE20706B +:1053300001200BE00338084B8000C058002803D040 +:1053400003689B68984701E00120404210BDC046B9 +:10535000B8280020CC2F0020A827002008B5031C67 +:105360000120022B0BDD033B054A9B0098580028C7 +:1053700003D00368DB68984701E00120404208BD84 +:10538000A827002008B5031C0020022B0BDD033BDF +:1053900005489B001858002803D003681B699847EC +:1053A00001E00120404208BDA8270020074A1368F9 +:1053B0001818EFF30881884205D30C220120044B12 +:1053C00040421A6001E01060181C704788000020FD +:1053D000D42F0020004870474816030008B5024843 +:1053E00013F0BEFC08BDC04648160300084802681A +:1053F00003210A4302600749074A084B9B1A03DD51 +:10540000043BC858D050FBDC05488047054800479E +:1054100024050040ACB1030000000020280100205A +:10542000695F010075010000FEE7FEE7FEE7FEE7A9 +:10543000FEE7FEE770B51D1CA023041C161CDB0054 +:10544000002D03D000224068C25001E00268D55010 +:10545000082902D0104813F02CFC032E0AD8301C67 +:1054600004F0DCFA0B020406022307E0042305E043 +:10547000062303E0094813F01CFC0023A02208487F +:10548000D200002D03D061680B50022302E0216896 +:105490000B5001238B5070BD5FAC030078AC030050 +:1054A00054050000036810B55A1C2ED0A02200201D +:1054B000164CD2009850101C154AA14202DC8021E3 +:1054C00089041FE0134CA14202DC8021C90419E0C9 +:1054D000114CA14202DC8021090513E00F4CA142CE +:1054E00002DC802149050DE00D4CA14202DC802147 +:1054F000890507E00B4CA14202DC8021C90501E0CF +:1055000080210906995001221A5010BD8FD0030046 +:10551000240500001FA107003F420F007F841E00EA +:10552000FF083D00FF117A00F7B5009308AB1B7828 +:10553000051C5BB20F1C161C0193013329D1624B71 +:105540001A78022A10D15978FAB291420CD199787E +:10555000F2B2914208D1DA786B461B789A4203D1B5 +:1055600001235A4C03723BE0594A1378DBB2022BF9 +:105570000FD15078F9B288420BD19078F1B28842BD +:1055800007D1D1786A461278914202D12B72514CE0 +:1055900026E04F4B1A78002A0BD10232F9B21A706A +:1055A0005970F1B29970694609782A72D970494CDC +:1055B00013E0454B1A78002A0CD102321A70FAB265 +:1055C0005A70F2B29A706A461278404CDA7001232F +:1055D0002B7202E0404813F06CFB019B01332ED18B +:1055E00001235B426B60012000233C4A391C2C6084 +:1055F000A350A050A022C131FF31D20589008850AC +:10560000374967500099C131FF3189008850A12185 +:105610000098C9006050311CC131FF3189008B50A6 +:10562000A222D200A650FC34281CE36008211A1CD8 +:10563000FFF700FF281C2B49FFF734FF42E001234E +:1056400000225B422B60254B6C60E2500123234912 +:10565000381C6350A021C130FF30C9058000425082 +:10566000301CC130FF30800042500098C130FF3004 +:10567000800042500198C130FF3080004250A2218A +:10568000C9006750164900986650043960501649A1 +:1056900001986050211CFC318A60CA62A721C900B0 +:1056A000635010316350114811496050114912483C +:1056B00060508021042089006050F939281CFF398E +:1056C000FFF7B8FEF7BDC046572E0020003000405F +:1056D0005B2E00200040004089AC0300FC0F00005E +:1056E0000C05000040420F0014050000562E00205B +:1056F0004405000034050000552E002003681A1CE4 +:10570000FC32D0680028FAD105481950D168012927 +:10571000FCD10021D160A322D20098587047C04626 +:105720001C050000084B0068C150084B021CFC32ED +:10573000116A002904D1013B002BF7D1012001E0BF +:10574000002010627047C0461C050000A1860100C1 +:1057500010B50368002A03D08022022092009850DE +:1057600001221A62084A1C1CFC34E068002804D19B +:10577000013A002AF7D1012005E00020A322E060D1 +:10578000D2009B580B7010BDA186010010B50B4CC8 +:1057900002680B4BA14204DC0A498160CC21490418 +:1057A0000AE0094CA14203DC08498160802102E043 +:1057B00007498160CD21C904D15010BD8FD00300AD +:1057C00024050000A08601007F1A060090D0030087 +:1057D000801A060070B5041C101CA025C026C1301C +:1057E000FF30F600ED0580004651081CC130FF3047 +:1057F00080004651A1252068ED004251054A8150A4 +:10580000191C201CFFF7C2FFA02305212268DB0022 +:10581000D15070BD0C050000F8B50E1C151C041C01 +:1058200000F0FEF82648F2B20378011CDBB2012B2F +:1058300006D14778974203D18778E8B2874211D0E2 +:105840002048EFB20378012B05D14378934202D16F +:105850008078B84211D00878002806D101230B7057 +:105860004A708F706373184B15E0164B1978002936 +:1058700007D1013119705A709F7002236373134B63 +:1058800009E0134813F015FA0023FC222360657128 +:1058900026719362FFDE191C0022FC3123606571C2 +:1058A00026718A62A021C9005A500A49201C5A5008 +:1058B00001325A50311C2A1C074BFFF78BFFF8BDF1 +:1058C000572E00205B2E002000300040004000409A +:1058D0009AAC0300FC0F0000A0860100026808B526 +:1058E000031C101C0021FC308162A020C00011505C +:1058F00006481150013111500421052259569A567B +:10590000181C9B68FFF766FF08BDC046FC0F00002F +:10591000036800211A1CFC3210B5916001315961F5 +:10592000074B9168002904D1013B002BF9D10120DC +:1059300004E000240473FFF7D1FF201C10BDC04613 +:10594000A1860100036810B5191CFC318A6A002089 +:10595000012A08D1044C1C5988625A610238A407F4 +:1059600001D40120404210BDC4040000A023F0B5C2 +:10597000284FDB00FA5885B001920022A024FA508B +:10598000E023254AE405DB00E658E2507833E1588D +:1059900001250291E250A1238022DB00D205E250D2 +:1059A0000420E55013F0B0FAA222D200A3580397C6 +:1059B0009B0F2B4205D0A35813242B4202D0012069 +:1059C00018E01324013C002C13D0A0250127134B11 +:1059D000ED05EF50042013F097FAA123DB00EF5000 +:1059E000042013F091FAA223DB00EB585B00E9D509 +:1059F000E5E7201CA023E0220299DB05D2009E509F +:105A000078329950A023039A0199DB00D15005B058 +:105A1000F0BDC046004000400D0600000C0500002F +:105A2000A023E021134ADB05C90010B55A50783194 +:105A30005A50114B0022191CFC31CA600A62A12184 +:105A40001E20C9005A500D4A0D4C9850CC200D4ACA +:105A500040049850A2200C4AC00014500B4C0C4833 +:105A6000145001205050A0220521D2009950FFF778 +:105A70007DFF10BD0C060000004000400C0500003A +:105A8000384100402405000000F001401C40004067 +:105A9000140500000A480B4982680B4B002A08D005 +:105AA0001A6801321A6000228260D222022092001B +:105AB0008850064A1B688858190A1B061843704705 +:105AC000FC10014000100140B42800200405000033 +:105AD000174B70B59A68002A0AD0164902200A6846 +:105AE00001320A6000229A60D22213499200885043 +:105AF0005B6C114C002B19D0104E3378002B15D055 +:105B00000F4B1D68FFF7C6FF2D1A002D0EDC00217C +:105B1000074BD2225964802392005B02A35031705C +:105B2000C22189006350A350FFF758FC70BDC046E6 +:105B3000FC100140B428002000100140602E00201D +:105B4000B028002038B5124C2378002B1ED1A1219B +:105B5000C420104AC9005350C1390233FF39535091 +:105B6000443953500C4980000D580C4B2B40C02534 +:105B70002D022B430B508023012591389B02FF38C7 +:105B80000B500B60156013F0D6F9257038BDC04678 +:105B90005F2E00200010014000E100E0FF00FFFF49 +:105BA00008B5084B1B78002B01D1FFF7CBFFFFF79F +:105BB00071FF054A002304F069F94904C00B08434A +:105BC00008BDC0465F2E002040420F00F8B5284BAC +:105BD000041C1B78002B01D1FFF7B4FFFFF75AFF1D +:105BE000244A002304F052F94B04C00BCF0B184396 +:105BF0000026221C0023802192197B41090688423D +:105C000005D9002C03DB0020012112184B41D903D8 +:105C10000023540CD003184A214380185941002313 +:105C2000144A04F013F9154D041C2B78144E002B64 +:105C300002D0336898421AD0FFF72CFF201A0228AE +:105C400002DCFFF727FF841CA82122020D4B120A59 +:105C5000C9005A502A783460002A08D101322A70CB +:105C60008022F9395202FF395A5044395A50F8BD4E +:105C70005F2E002040420F003F420F00602E0020A8 +:105C8000B028002000100140074B1A78002A09D0E4 +:105C90008021C220054A4902800011504030115035 +:105CA00000221A707047C046602E0020001001408C +:105CB0000022024B9A605A647047C046FC100140B3 +:105CC000012310B50A4ADC00A458A14207DA013BBF +:105CD000DB00D3185A680168064BCA5007E001334D +:105CE000112BEFD180210268024B4905D15010BD24 +:105CF0005016030024050000F8B50F1C0121254BA8 +:105D0000B9400360A023244CDB05161C1A59051C5E +:105D10000A4380211A511A5909060A430121B14048 +:105D20001A511A598A4396211A511A598901520057 +:105D300052081A51FFF7C4FF002204202B681749AC +:105D40005A506C395850012199601960191CFC3166 +:105D5000CA6013495A506A6014391F325A501149A7 +:105D60005F5009185A501E517B1C03D0381C032168 +:105D700013F06CF9731C03D0301C032113F066F987 +:105D80000122094B291C1A600848073215F034FA21 +:105D9000F8BDC04600200040140500006C0500005E +:105DA0001C0500000C050000B8280020CC2F0020A6 +:105DB00008B59623DB00994202DDFFF781FF04E07E +:105DC0009E210268014BC902D15008BD2405000084 +:105DD0000168034B002A00D00E22CA507047C0460B +:105DE0006C05000008B5C1230D4A9B00D158090677 +:105DF00003D50C49096A002908D1D3585B070DD592 +:105E0000084B0021DB68002B01D107E00121064B84 +:105E10001868002802D0054B1B68984708BDC0468B +:105E200000200040FC200040BC280020C0280020AA +:105E3000034B1960436803499B005A507047C046A2 +:105E4000C0280020BC28002000681E4B70B5C31875 +:105E50005C4263415B00002A1AD0002903D001296B +:105E600005D1802100E00421C12292008150FF254C +:105E7000C021C0245BB2DE00B540B1401248A4008E +:105E80000259AA430A43025101229A40026018E0D3 +:105E9000002908D0012914D1C22280249200845004 +:105EA0008258920806E0C222042192008150825852 +:105EB0000339D209914304D001229A40131C034AAA +:105EC000D36770BD00E0FFBF00E100E004E100E047 +:105ED00003681A1CFC32106A0128FAD100201062F3 +:105EE000014AC9B2995070471C05000001704B1C53 +:105EF0000AD001238B404360044BC360044B036111 +:105F0000044B4361044B83607047C0460805005052 +:105F10000C0500501005005014050050074B10B53B +:105F20000022041C08C000F091F8054B201C1A1C2C +:105F3000343308322260636010BDC046A8B6020048 +:105F4000D0B60200074B10B51A1C041C08323433BB +:105F500002604360043000F05FF8201CFFF71AF97C +:105F6000201C10BDD0B60200234A10B51378111CB6 +:105F7000012B19D1214B1B681B0715D1204BE024A5 +:105F80001A68F023101C184022420BD11D4A1268D7 +:105F90001A4209D11C4A1D4B1A6080221C4B120266 +:105FA0001A6001E03028F1D00B68DBB2012B0DD173 +:105FB000124A1268120709D1F021114A12680A40E8 +:105FC000402A03D10F4A12680A420DD08022A3232F +:105FD0000021D205DB00D1500E4B99600131916058 +:105FE0009A68002AFCD005E0C1228021D200C905B0 +:105FF0008B50EBE710BDC046E00F00F0E40F00F05F +:10600000E80F00F0EC0F00F0DFFF07C004050040D0 +:10601000186C0040FC0000400A4B083303608368A2 +:10602000002B0DD0084A1368834202D143681360E5 +:1060300006E05A68824201D0131CFAE742685A60AF +:106040007047C04610B70200C4280020064B81608C +:1060500008330360002302734360994203D0034B6B +:106060001A6818604260704710B70200C428002008 +:10607000F8B5071C0E1C0B4B1C68002C10D0A56833 +:10608000002D0BD0281C391C321C15F0DEF900281D +:1060900004D1281C15F0D2F9B04201D06468ECE7B5 +:1060A000201CF8BDC428002037B51C4C0321201C3F +:1060B00014F01BFF1A49201C14F01CFF02F05CFCBA +:1060C00001F042FA174D281C00F078FD6421281CCD +:1060D00000F070FA01A814F01FFD01A802F0D6FC30 +:1060E000114B0268041C9A4210D1436B002B05D15E +:1060F000836B002B02D1C36B002B07D086239B0040 +:10610000E818616BA26BE36B01F040F9201C02F010 +:106110006BFCFEF753FF01F087FBFEE7982C002095 +:1061200081690100C8280020FECAFECA10B5041CFF +:10613000054B0360054B40300360054B4360FEF7A1 +:10614000C7FF201C10BDC046C8B80200E0B802005E +:1061500014B9020008B4024B9C46403808BC6047A2 +:106160002D61010008B4024B9C46443808BC6047CE +:106170002D61010010B5041C044B0360044B036443 +:10618000044B4364FFF7D2FF201C10BD28B7020068 +:1061900040B7020074B7020008B4024B9C46403876 +:1061A00008BC60477561010008B4024B9C46443846 +:1061B00008BC60477561010010B5041CFFF7DAFFE9 +:1061C000201C02F011FC201C10BD08B4024B9C46A0 +:1061D000403808BC6047C046B961010008B4024BB2 +:1061E0009C46443808BC6047B961010010B5041CE6 +:1061F000FFF79CFF201C02F0F7FB201C10BD08B429 +:10620000024B9C46403808BC6047C046ED61010027 +:1062100008B4024B9C46443808BC6047ED6101005D +:1062200038B50A4D281C00F039F9094C281C221CED +:10623000084914F0D0FE084D1321281C03F056F82D +:10624000281C0649221C14F0C6FE38BDC8280020B0 +:106250000000002061620100982C0020D59201000E +:1062600038B5E6231C4A9B00C2501433041CC018E6 +:1062700013F062F9EA239B00E01813F05DF986231E +:106280009B00E01800F0DCFE201CDD30FF3001F048 +:106290003BFB201CA530FF3000F04CFD201C7D3066 +:1062A000FF3000F047FD601DFF3001F05FFF201C54 +:1062B000EC3000F081FD201C251C5430FFF75AFF04 +:1062C000064B0C35281CE36012F0B6FB281CFEF7C9 +:1062D00027FF201C38BDC04668B8020020B6020067 +:1062E000F0B51F1C85B00AAB1B78041C0393009308 +:1062F0003B1C0D1C161C14F046FE002832D0237DDA +:10630000082B2DD823680022191CFC318A62A02199 +:106310001648C9005A5084461A5005200138C04614 +:10632000C046C046C046C046C046C046C046C0463D +:10633000C046C046C046F1D101206246236898504D +:1063400005225A50FFF76CFB039B201C0093291C6D +:106350003B1C321C14F017FE237D01332375CCE760 +:10636000034800E0207505B0F0BDC046FC0F0000FA +:106370000EFCFFFFF0B51F1C85B00AAB1B78041C98 +:10638000039300933B1C0D1C161C14F0E4FD002825 +:1063900032D0237D082B2DD823680022191CFC3114 +:1063A0008A62A0211648C9005A5084461A50052016 +:1063B0000138C046C046C046C046C046C046C0467A +:1063C000C046C046C046C046C046F1D10120624624 +:1063D0002368985005225A50FFF722FB039B201C8C +:1063E0000093291C3B1C321C14F0B5FD237D0133A6 +:1063F0002375CCE7034800E0207505B0F0BDC0462A +:10640000FC0F00000EFCFFFF024B1B6803607E23A5 +:10641000436070478C000020F8B5144B051C9B6846 +:10642000DB0701D501F0CCF82E1C2F1CD436341C10 +:10643000EC372068002815D003689B68984700282F +:1064400010D001210A4A13780B4313702C1CAC3472 +:106450002068002802D003681B6898470434B442BF +:10646000F6D1F8BD0434BC42E3D1EFE7C8280020E0 +:10647000612E0020BFF34F8F024A034BDA60BFF357 +:106480004F8FFEE70400FA0500ED00E008B5011C9F +:10649000014802F063F808BDCC29002030B5002582 +:1064A000041C91B085600C30FEF724FE201C404B8C +:1064B0002A1CE3606562A5631E213C3012F0F3FDE7 +:1064C000201C18211922543002F008FA201CEC304C +:1064D00000F082FC0522601D131C0621FF3001F034 +:1064E0006DFE201C01217D300B1C00951122FF3018 +:1064F00000F030FC201CA530009502211A22012357 +:10650000FF3000F027FC201CCD3002231A2101228D +:10651000FF3002F075FC201CDD3004213A22FF30F0 +:1065200001F09AFA86239B00E0181D22052100F055 +:1065300053FE95239B00E0181C2101F0CBFB9A230E +:106540009B00E0180A230093013301930133029367 +:10655000013303930133049301330593013306930D +:1065600001330793013308930133099301330A93ED +:1065700001330B9301330C9301330D9301330E93CD +:10658000013308220F930721103B13F057FFE62336 +:106590009B00E01802F0E0FAEC239B00E0181D21BC +:1065A00002F0F4FAF323201C9B00E55011B030BD3B +:1065B00020B6020010B500290DDB012380681840C9 +:1065C000041C081C002C03D001F0D6F8002003E0C6 +:1065D00012F0B6FBFAE7014810BDC04617FCFFFFFA +:1065E000F0B5A7B00490069107920C2104220BA8E5 +:1065F00012F0DAFFDA49242219311DA814F0FCFD4B +:10660000052108A80A1C13F0C1FFD64909A801F00A +:1066100039FC049B6E245D1DFF35281C01F0E2FE51 +:10662000D1491AA801F046F91AA97822281C01F0CC +:106630005BFF1AA812F080FF04987D30FF3012F043 +:10664000C2FD002807D10498A530FF3012F0BBFD31 +:10665000002800D17AE1281C01F0C4FE281C14F0A7 +:1066600067F90024C14F0121381C13F05CFE0121A1 +:10667000061C381C13F065FE0022BD4B03929E429F +:1066800010DB01320392321CC8320BDB042203926E +:10669000C8229200964205DC03220392C82E01DC38 +:1066A000013A039200220292984210DB01230293E6 +:1066B000031CC8330BDB04230293C8239B009842BE +:1066C00005DC03230293C82801DC013B0293652704 +:1066D00008A813F052FF04ABFF183E1C7378002B80 +:1066E00006D0731E1978327808A8FF2301F060FBEA +:1066F000892304AA03369B189E42EFD16B460C21D6 +:10670000595E6B4608A808229A5EFF2301F050FBF1 +:1067100000239848009308A91A1C13F03EFF7B1E23 +:106720001B78039A93423AD13B78029A934236D12E +:106730007E78002E33D1862292009446049B311C31 +:106740006344181C059312F015FE04F073FA321C12 +:10675000031C211C0BA812F072FF311C059812F0CB +:1067600016FE04F067FA0122031C211C0BA812F08C +:1067700066FF311C059812F017FE04F05BFA211C2D +:10678000031C02220BA812F05AFFFE23211C9B05BA +:106790000BA8032212F053FF01237B70E418892316 +:1067A00004AA03379B189F42B9D173486421FFF7AD +:1067B00001FF0B2C00DC55E70BA812F02CFF012287 +:1067C000011C0EA812F0F0FE00240BA812F023FF0B +:1067D00084423EDA211C00220BA812F01EFF211C6D +:1067E000061C00220BA812F018FF011C301C03F03D +:1067F00051FF211C061C01220BA812F00EFF0122E2 +:10680000071C211C0BA812F008FF011C381C03F008 +:1068100041FF011C301C03F0CFFB211C061C02228F +:106820000BA812F0FAFE0222211C071C0BA812F082 +:10683000F4FE011C381C03F02DFF011C301C03F07A +:10684000BBFB211C031C00220EA812F0F8FE013431 +:10685000BBE70BA90A1C01231AA813F0BDFC1AA957 +:1068600011A812F006FF1AA812F0FAFE14A80BA93C +:106870000EAA012313F0B0FC002317A811A914AA33 +:1068800013F0AAFC002117A80A1C12F0C6FE012171 +:10689000061C002217A812F0C0FE0022041C0221D0 +:1068A00017A812F0BAFEFC21071C8905301C03F062 +:1068B000F1FE04F09FF9FC21061C1A908905201CAA +:1068C00003F0E8FE04F096F9FC21041C1B908905F6 +:1068D000381C03F0DFFE04F08DF9862189008C4618 +:1068E000049A031C6244311C1C90101C221C00F0F2 +:1068F0004DFD281C14F01CF809A90AA813F035FE58 +:1069000000231E4A00930AA90192281C1A1C01F0B8 +:10691000B9FD0AA813F01CFE281C14F009F817A8EA +:1069200012F09EFE14A812F09BFE11A812F098FE21 +:106930000EA812F095FE09A813F00AFE08A813F09D +:1069400007FE0BA812F08CFE27B0F0BD049864215E +:10695000013CFFF72FFE002C00D06DE67BE6C04621 +:1069600086AE0300C3AE030008AF0300A42A0020D4 +:10697000E0FCFFFF402A0020C8280020DC050000C2 +:10698000F0B5F324214DA40028598DB0002835D04E +:1069900002F048FB836D9B0730D52C5902AE0C22C8 +:1069A0000021301C14F045FC201C02F04BFB07AC0E +:1069B000231C174F0190029707CE07C3142001F044 +:1069C000EFFF031C079746CC46C3124BC36000235E +:1069D0000361019BA4331A68002A00D00261186089 +:1069E000F3239B00E85802F02DFB036813215B6A38 +:1069F0009847FA21281C8900FFF7DCFDBFF34F8F71 +:106A0000054A064BDA60BFF34F8FFEE7C828002027 +:106A100075640100BB9002000400FA0500ED00E07F +:106A2000F0B5051C00291CDD036801390E1C00228D +:106A3000DF0F9809784058401F095C0878409B0890 +:106A400043406340DB07234301241C405000221CC9 +:106A500076080243002EEBD18A42E7D82B60101C47 +:106A600000E00148F0BDC04617FCFFFF38B5002329 +:106A70000360F323124A9B00D358002B08D0042153 +:106A8000041C12F018FB002819D00E4B236016E0EE +:106A9000012204210C4B1A60036800240B4A546045 +:106AA0005568094C002DFBD0A122D200A2581B0230 +:106AB000013913430029F0D103600123636038BD1D +:106AC000C8280020ED5EBC0B00D00040FCD0004088 +:106AD00038B5051CEC30041CD4352868002802D0D9 +:106AE00003685B6898470435A542F6D10121024A44 +:106AF00013788B43137038BD612E0020014B18684A +:106B00007047C046FC2C002008B5024801F026FD65 +:106B100008BDC046CC290020F0B587B01F1C0EABC5 +:106B20001B88019003930D9B0D1C02920C9E0093F9 +:106B3000002F39D0002E01D1DB0735D5202001F000 +:106B40002FFF041C103000F057FC6B461B8925807A +:106B50006380182001F024FF0496061C051C009B8E +:106B600080C600211022301C059314F062FB04A99A +:106B70000822301C14F040FB0D4B00226B610223F5 +:106B80000399A5600B43E260A380E2610198211C98 +:106B900000F066F9002808D0201C13F04FFF201CDD +:106BA00001F022FF034800E0034807B0F0BDC046F3 +:106BB000F190020013FCFFFF17FCFFFFF0B5041C6F +:106BC00089B0214912F0ADFA201C204912F0CBFA0D +:106BD000201C1F4912F0C7FA1E49201C12F0C3FAEC +:106BE000201CFFF743FF00250627201C1A4B0C3002 +:106BF000A3621A4B1A49A36367606462E56211F0ED +:106C00002CFF184A059504926A46261C04AB03CB58 +:106C100003C2C023EC36029305213A1C231C301C0E +:106C2000FFF77AFF104A079506926A4606AB03CB38 +:106C300003C2C023301C02930C491A22231CFFF705 +:106C40006BFF09B0F0BDC046CC290020A42A00206B +:106C5000E02A0020B42900201964010013880200F2 +:106C600070170000E1650100C9900200FD030000FB +:106C700030B5C369C2681B6885B0041C451D1A4243 +:106C80004BD0EB7F002B01D0013BEB77EB7F082B48 +:106C90000DD90123A2791A4209D11A43A271A18800 +:106CA0001A1C02A800F0C6FB1F4B1B682362EB7F77 +:106CB000012B1DD80123A2791A4219D00022A188E4 +:106CC000A2716846023200F0B5FBA31DDB7F012BE9 +:106CD0000ED1154A216A12681448521AA1888242BC +:106CE00002D902A8042201E0032202A800F0A2FBBC +:106CF0000323A2791340012B14D10B49206A0968A0 +:106D0000091A0B4881420DD902210A43A271A188B8 +:106D100002A8052200F08EFB04E0EB7F0B2BB5D818 +:106D20000133B2E705B030BDFC2C0020E7030000C2 +:106D3000DB05000010B5041C044B211C0833036064 +:106D4000034812F0FFF9201C10BDC04680B70200B6 +:106D5000C8280020F0B5071C0025161C85B002933A +:106D60000AAB1B7808370393114B041C08330360EC +:106D7000019185808571291C381C182214F059FA5C +:106D8000381C311C039A11F0AFFF6B466A469B8892 +:106D9000127AA380A31DE671DA77631D2562211C98 +:106DA000DD77044812F0BDF9201C05B0F0BDC046E7 +:106DB00080B70200C828002010B5041C044B211C19 +:106DC00008330360034812F0DFF9201C10BDC046F1 +:106DD000A0B70200C82800200023054A838008329B +:106DE000837102608360C3600361C3827047C046E1 +:106DF000A0B70200F7B50D1C012684680192002C93 +:106E00002AD023882A889A4201D0002B22D1638875 +:106E10006A889A4201D0002B1CD1C023A28813405B +:106E2000C03B59424B4101998B4212D113B2002B06 +:106E30000FDB231C291C103381C981C3530603D5E2 +:106E4000201C12F0D1F905E0211C044800F0FCFCE4 +:106E500000E00026E469D2E7301CFEBDE9910200A3 +:106E6000F7B5002952D00D1C061C8468002C19D0DF +:106E7000AA880023920702D5A3889B07DB0F22680C +:106E800029688A420CD1002B06D0A068A96813F0AB +:106E900032FE00283CD103E0A368AA68934237D0B1 +:106EA000E469E3E7B0682A88071C031E22D019882A +:106EB000914205D2D9691F1C00290DD00B1CF6E7A1 +:106EC000191C3B1C08E00C88944207D14F886C8841 +:106ED000A74203D20B1CC9690029F4D183420BD10C +:106EE00019888A4205D3914206D158886988884218 +:106EF00002D9EB61B56002E0D969E961DD616846FC +:106F00000849012300F096FA002009E0064807E04E +:106F1000A3881AB2002A02DA5B045B0CA380034840 +:106F2000FEBDC046FD03000017FCFFFF16FCFFFF7F +:106F3000F0B585B01E1C0AAB1B88071C0D1C029205 +:106F40000393002E1AD0202001F02AFD6B46041C6A +:106F50001A89039BA9B20093331C13F058FD381C07 +:106F6000211CFFF77DFF00280BD0002C08D0201C2F +:106F700013F064FD201C01F037FD01E0024800E041 +:106F8000024805B0F0BDC04617FCFFFF13FCFFFF31 +:106F900070B5002926D00D1C00268468002C1ED058 +:106FA0000222A988A3884B40134216D1114203D173 +:106FB000AB889B0707D510E0A068A96813F09BFD7C +:106FC000002804D1F4E7A368AA68934205D12B886E +:106FD000002B09D022889A4206D0E469DEE7201C03 +:106FE000002E0DDC07480BE06B88002B02D0628876 +:106FF0009A42F2D1A388044A01361343A380ECE7F6 +:1070000070BDC04617FCFFFF0080FFFF10B5041CD9 +:107010008AB0002B0FD0102092B289B2009002A843 +:1070200013F0F5FC02A9201CFFF7B2FF02A813F031 +:1070300005FD002000E001480AB010BD17FCFFFF6D +:1070400010B5041C044B211C08330360034812F0E4 +:107050009BF8201C10BDC046C0B70200C828002005 +:107060001FB503AB5A7000221970018900920348C2 +:107070001A1C0223FFF77EF905B000BD0429002089 +:10708000F0B5151C0F2285B06A44071C1C1C11703A +:10709000002D16D0002B14DD01230B4E0189009327 +:1070A000301CFFF767F9002801D008480AE0398949 +:1070B0002A1C0090231C301CFFF712F9002801D075 +:1070C000F3E7034805B0F0BD042900200EFCFFFFE4 +:1070D00017FCFFFF7FB5002303AC104D2170018921 +:1070E000061C0093281C221C0133FFF743F90028DB +:1070F00001D00B480FE02070607031890090221C95 +:10710000281C0223FFF7ECF80028F2D120786378DE +:107110000002184300B204B070BDC046042900202C +:107120000EFCFFFF13B56B46DC1D0023221C2370F1 +:107130000133FFF7A5FF002801D1207800E00148C6 +:1071400016BDC0460EFCFFFFF8B510210022041C3E +:10715000FFF786FF1D4E002835D1201C0821FFF7C0 +:10716000E1FFB0422FD00325054027D1FA23184A6A +:1071700061899B005943131C50331E1C083A1F6839 +:10718000181C8F4203D3083B061C9342F7D1FA2107 +:107190003068890002F060FC11216081A022201C6F +:1071A000FFF75EFF00280ED101223379201C1A431D +:1071B0001021FFF755FF002806D004E064210548A0 +:1071C000FFF7F8F9C9E7014D281CF8BD0EFCFFFFD9 +:1071D000D8160300C8280020F8B5051C0F1C002194 +:1071E000144B24350833041C161C036018228180BC +:1071F0008171C160016141618161C1610162281CCD +:1072000014F017F8281C1D2111F069FD01256423D5 +:10721000A7802681A5716381201CFFF795FFA379C4 +:10722000054AAB43A37108239168201C0B4393606C +:10723000F8BDC046C0B70200C8280020F7B5837962 +:1072400002271D1C3D4013D10126041CB3433B43C0 +:10725000837181880622331C684600F0EBF8A3791D +:10726000281C1A1CBA43A271334202D1014800E023 +:107270000148FEBD14FCFFFF15FCFFFFF0B583794C +:1072800085B09A0775D4041CDB0701D4FFF7D6FF3D +:10729000394D281C13F0BDF8071C281C13F0B0F85A +:1072A000A369E268061C981A03F0C4FC226A6369A9 +:1072B000051C981A03F0BEFC0290381C06F0FCF87E +:1072C0000090381C05F04CFF0190301C06F0F4F8DB +:1072D000071C301C05F044FF00990390029803F04E +:1072E000D9F90199061C281C03F0D4F9011C301CA3 +:1072F00003F002FB2369061CE069181A03F09AFCEC +:10730000039903F0C7F9391C041C281C03F0C2F9C7 +:10731000009903F0BFF9011C201C02F04DFE391C3E +:10732000041C029803F0B6F9019903F0B3F9011CAB +:10733000201C02F041FE011C301C06F027FA0F4908 +:1073400003F0A8F905F0F2FA0D4A0E4B04F02AF802 +:1073500005F040FB0021041C02F050FD002804D081 +:10736000201C064902F028FE041C201C03F042FCED +:1073700000E0054805B0F0BDA42A00200000B44399 +:10738000EA2E4454FB21194015FCFFFFF0B587B0ED +:1073900001AD071C05A8161C6A60AB600093019143 +:1073A00013F0BAFB05A801F071FB019B426B041CB2 +:1073B0009A4213D1826BB24210D1C26B00998A42B9 +:1073C0000CD1201C01F010FB3B1C0C3307CD07C374 +:1073D0000122BB791343BB7107B0F0BD054A63635B +:1073E000009B2260A663E36305A8211C13F095FBB4 +:1073F000E7E7C046FECAFECA002303804380024B73 +:107400001B6843607047C046FC2C002008B5031C75 +:10741000012904D1064806CB11F05FFF06E00229DE +:1074200004D10348191C0022FFF7E4FC08BDC04644 +:10743000B429002010B54280054A041C126801805E +:107440004260002B02D0191CFFF7E0FF201C10BD8A +:10745000FC2C002008B5031C024806CB11F03DFFB0 +:1074600008BDC046B4290020F0B5061C0027204BFB +:1074700085B01C680290039185B2360C002C2AD08E +:10748000636D1C490193A36C9AB21B0C8D4211D100 +:1074900019498A420ED1002B01D0B34219D1002FD5 +:1074A00017D1201C11F0F4FF201C144911F0DDFF4E +:1074B00001370EE0002A01D0AA420AD1002B01D0E8 +:1074C000B34206D1201C11F0E3FF201C0B4911F040 +:1074D000CCFF019CD2E70A4BEB18012B05D90948D8 +:1074E000291C321C084BFFF791FD05B0F0BDC046CA +:1074F000002D0020FE030000FF030000E82C002008 +:1075000002FCFFFFB42900206974010010B572B6B7 +:107510000B4B1C68002C03D0201C11F0B9FF08E0B5 +:1075200062B65C2001F03CFA00215C22041C13F0DE +:1075300080FE0023E364034B201CE36310BDC046C0 +:10754000F42C00200040002073B5FFF7DFFF124B42 +:107550001249186011F089FFFFF7D8FFC026104BC1 +:10756000104D1860104B114C4363114B114983634C +:1075700000220096281C231CFFF7DAFC0096281C2A +:10758000231C0D490022FFF7D3FC01230B4A91680D +:107590000B43936073BDC046EC2C0020E82C002008 +:1075A000F02C0020B4290020FC3F00206974010069 +:1075B0002D950200FF030000FE030000C8280020F4 +:1075C0000D4B70B50D481C6811F0EFFD0C4B1D1CE8 +:1075D0001A6880181860002C0DD02B68A26C666D9C +:1075E000934206D3201C11F053FF201C054911F0D3 +:1075F0003CFF341CEFE770BDF82C0020C8280020A9 +:10760000FC2C0020E82C0020F7B5002801D1002038 +:1076100019E00029FBD00193171C0D1C061CFFF775 +:1076200075FF041EF3D0084B019A43630660456062 +:107630008760064B002A00D0054B201CA363054938 +:1076400011F013FF201CFEBDFC3F0020019502003D +:1076500017950200E82C0020024B1868434258415D +:107660007047C046E82C002010B5094C201CFFF7DD +:107670002FFA084B1B68002B08D1F3239B00E0581E +:10768000002802D001F0EEFC00E030BF10BDC04683 +:10769000C8280020E82C00200121F8B52F4E3468BE +:1076A000351CE36C0B4218D002252B43E364042302 +:1076B0002B4F3868C26C1343C364636BC36311F010 +:1076C00006FF3B68181C596C01F0F7FA3068C36C70 +:1076D0002B4241D001F02BFB3EE0224F224E3A6874 +:1076E000002A03D021480078084201D0326806E021 +:1076F000216DB94203D1616D002900D00A1C2A60B6 +:107700002A6831688A420CD11B070AD52C60FFF722 +:10771000ABFF3B68002BFAD0144A1278D207F6D49C +:107720002B602B68A34217D03268934204D1104AD1 +:107730005A63104A9A6305E0944203D10020191C51 +:10774000021C06E0201C11F0C2FE2B68201C191C34 +:10775000626C5B6C01F070FAF8BDC046EC2C002046 +:10776000042D0020E82C0020F02C0020612E0020A9 +:10777000FC3F00202D95020038B50D4B051C1C6800 +:10778000E36CDB0706D5FFF7C1FE0A4B1860002843 +:1077900000D0041C084B18682818A064201C11F0A5 +:1077A00077FE201C054911F060FEFFF775FF38BD1C +:1077B000EC2C0020042D0020FC2C0020F82C0020B4 +:1077C000134B73B51C68051CE36C0E1CDB0706D558 +:1077D000FFF79CFE0F4B1860002800D0041C3304F8 +:1077E0002B43A364201C11F053FE201C0A4911F006 +:1077F0003CFE0A4BEB18012B07D9C0230848009325 +:10780000291C321C074BFFF793FBFFF745FF73BDA5 +:10781000EC2C0020042D0020002D002002FCFFFF96 +:10782000B42900206974010010B5054C206811F0DE +:107830002FFE2068034911F018FEFFF72DFF10BD41 +:10784000EC2C0020F42C0020F7B5002829D00726C6 +:10785000154F041C38680D1CC36C1E4005D0201C3D +:10786000124A11F02CFE00261CE001F048FA022119 +:107870003A68D36C1940019103D003218B43D36440 +:1078800010E001263343D364281CA0473A68D36C28 +:10789000191CB143D164019E5B0703D5FFF7C4FFF8 +:1078A00000E0034E301CFEBDEC2C00200F950200C2 +:1078B00017FCFFFF10B5041C002902D00B78002B29 +:1078C00002D1034B236001E011F03DFE201C10BDEE +:1078D00030170300014B03607047C04630170300A8 +:1078E00010B50548054C206013F0E2F8201C04494F +:1078F000044A13F070FB10BD30170300082D002060 +:10790000399502000000002010B5041C044B211C16 +:1079100008330360034811F037FC201C10BDC0463B +:10792000E0B70200C82800201FB503AB5A70002240 +:1079300019700189009203481A1C0223FEF71AFDF0 +:1079400005B000BD04290020FA2370B52A4A4189F8 +:107950009B005943131C3833041C181C083A1D683B +:107960001E1C8D420CD2061C244B227B1D1D082A96 +:107970000BD8042A09D89D1C022A06D81D1C04E035 +:10798000083B301C9342EAD1EEE7FA2130688900C7 +:1079900002F062F860812B78201C23732A210022D8 +:1079A000FFF7C2FF002801D0154824E0201C2B213E +:1079B0001022FFF7B9FF0028F6D1201C2D2101224B +:1079C000FFF7B2FF0028EFD1201C2E210122FFF784 +:1079D000ABFF0028E8D16A78201C0E21FFF7A4FF36 +:1079E0000028E1D101223379201C1A432A21FFF714 +:1079F0009BFF0028D8D170BD381703001DAF0300CE +:107A00000EFCFFFFF0B5151C0F2285B06A44071C61 +:107A10001C1C1170002D16D0002B14DD01230B4E01 +:107A200001890093301CFEF7A5FC002801D008480E +:107A30000AE039892A1C0090231C301CFEF750FCF8 +:107A4000002801D0F3E7034805B0F0BD0429002069 +:107A50000EFCFFFF17FCFFFFF7B5061C00251A4BB5 +:107A600014360833041C03600F1C01928580182211 +:107A70008571C58105824582291C301C13F0D9FB14 +:107A8000301C1C2111F02BF96B469B8802262381A8 +:107A900014236381231C032134331A79A780B24352 +:107AA0000A40A5712673201C1D705D709D701A71AF +:107AB0005D71FFF749FFA84203D1044A936833433D +:107AC0009360201CFEBDC046E0B70200C82800201D +:107AD000F7B5041C12F0EFFB251C00900E23E25EAC +:107AE0005B4F52423835BA4205DA022329780B40FF +:107AF00000D083E008E0FA21002389008A4203DDF8 +:107B00002B789B077AD500231020215E4942B94289 +:107B100003DA2E7870077DD406E0FA26B600B1426B +:107B200002DD2E78700775D51220265EBE4203DA7C +:107B30002F7838077AD406E0FA27BF00BE4202DD6C +:107B40002F78380772D5002B13D0251C38352B78A9 +:107B50009C461B09032B0CDC0F2701333B4018010B +:107B6000019060463840071C019807432F70042B92 +:107B700066D0231C39331B7838340133DBB2092B30 +:107B800001D8637014E00023637023789C461B09BE +:107B90000ED00F2560460F3328402B40051C1F01D7 +:107BA0003D432570002B03D1EBB20125AB4323707D +:107BB000012724780B233C4047D1264D0098043BF5 +:107BC000A84242DD9025DB192D04A8423DDC224D60 +:107BD000053BAA4239DBC820DB198000824234DC35 +:107BE000023BA94231DB3B1C81422EDC0433AE4216 +:107BF0002BDBDB19864228DC231C26E00123181C22 +:107C000029784E08B043061C02209E408143314330 +:107C1000297079E701202E78B30898438300181C57 +:107C200004239E4306432E7001237DE701272B7812 +:107C3000D80887430820FF0083433B432B7084E729 +:107C400001272B783B432B7093E7181CFEBDC046E1 +:107C500018FCFFFFFF700200E0FCFFFF7FB5012171 +:107C60006A460623041CFFF7CDFE051E22D16B4693 +:107C700002216846012659561B79227B5BB2534389 +:107C80000078514340B242439BB2DB006382A37948 +:107C900089B2D200B343E281CA002282A371201CC0 +:107CA00012F015FBA18802A8321C331CFFF7C2FB9F +:107CB000281C00E0014804B070BDC0460EFCFFFF68 +:107CC000034B1A68836800209A4240417047C046BF +:107CD000FC2C0020084B10B508330360FA23041C69 +:107CE00000229B0082718180C3608260211C034856 +:107CF00011F039FA201C10BD00B80200C82800207D +:107D00001FB5F323154A9B00D358041C002B03D046 +:107D100001A812F08AFB0EE00122114B1A60114BF0 +:107D20005A68002AFBD000225A600F4B01321B68B0 +:107D300001930B4B5A60019BA188DA17920FD3185D +:107D40009B102382094BE2681B6802A8D31801220A +:107D5000A360131CFFF76EFB1FBDC046C8280020A0 +:107D600000C00040FCC0004008C50040FC2C0020C2 +:107D7000054B82681B6810B5041C934201D3FFF7C2 +:107D8000BFFF1023E05E10BDFC2C002008B5044BA3 +:107D900082681B68934201D3FFF7B2FF08BDC0465B +:107DA000FC2C0020014B03607047C046781703008D +:107DB00030B504686088814206DAA588AA4203DAF1 +:107DC000002901DB002A01DA034804E0504361186E +:107DD00008188371002030BD17FCFFFFF0B5071CA9 +:107DE00085B00D1C1E1C002921DD002B1FD004684E +:107DF00063880391994200DD0393A38802929A421B +:107E000000DD0293002306340193019B029A934202 +:107E10000BDA201C311C039A13F0EEF93B6876193B +:107E20005B88E418019B0133EEE7002000E0014885 +:107E300005B0F0BD17FCFFFFF8B5041C0E1C151CA7 +:107E40001F1C002901DB002A02DA0D4B236015E01C +:107E5000101C4843063000F0A3FD206012F025FE00 +:107E60002368201C5E809D80002F05D0311C2A1CB9 +:107E70003B1CFFF7B3FF01E012F07FFBF8BDC046EB +:107E800078170300F0B5061C87B00C1E05D0002043 +:107E90000F1C051C0190011C15E0224B03603EE005 +:107EA0003022524294469C446246092A14D90A2B35 +:107EB0000DD1019B2D1801330193A94200DA291C31 +:107EC0000020051C01373B78002BE9D106E0002893 +:107ED000F8D001350020F5E70120F3E76A469288E3 +:107EE00009B212B2301CFFF7A7FF33689D1D03AB28 +:107EF0001F1C2278002A12D0111C3039092902D8FF +:107F00001A70013309E000221A70BB4205D9381CEF +:107F100013F070F83B1C287001350134E9E7301C80 +:107F200007B0F0BD78170300F0B5041C87B00F1C34 +:107F300004A82249151C1E1C12F0FFFC23685A8855 +:107F4000954208DA9B889E4205DA1F2F03D9059BCC +:107F500000939F4201DD1A482DE0052300217B4359 +:107F60000193049B0293019B029ACB18A03BD35C24 +:107F7000002203938B199C46531927680093788835 +:107F8000834202DABB889C4507DB0132052AF3D124 +:107F900001310529E7D100200DE063465843009BDD +:107FA000FB18102717411818039B1F407B1E9F4189 +:107FB0007F428771E9E707B0F0BDC046CC290020B9 +:107FC00017FCFFFFF7B503689E1D5B885A1A0192E4 +:107FD00000291CDD0C1C051C0027994202DB12F055 +:107FE000CCFA12E02B689B889F420EDA3119301CC4 +:107FF000019A13F001F9019B211CF01812F0AFFA5D +:108000002B6801375B88F618ECE7002000E0014898 +:10801000FEBDC04617FCFFFF10B50548054C2060AB +:1080200012F046FD201C0449044A12F0D4FF10BD92 +:10803000781703000C2D002051A50200000000203D +:10804000054B1A78F0231343044A13701F22C37A96 +:108050001343034A13707047100500500405005085 +:1080600005050050F0B5041C85B000252A1C636F7F +:10807000A17A06330293E37949009C465B000093A2 +:10808000637A01310393A37B277B0193304B59180B +:108090004B1E1B780878012F05D16646013E361A23 +:1080A000181C331C0FE0022F06D16646013EF31A5E +:1080B000267A013E301A06E0032F04D1267A013ECB +:1080C000F61A031C301C009E7043C3180298C31894 +:1080D0001E780398864201D9231C09331B78019826 +:1080E000034202D00123AB401A4301350631092D6A +:1080F000CED1D2430F21174B10011B78D2050B4074 +:1081000003431549DBB20B70E37AD20E1A43134BCB +:108110001A70E37B072B18D8A27B581C5200A2735D +:108120000F499A00E073022B03D8885810F0FDFD28 +:108130009BE70C4B201C2363002363630A4B895885 +:10814000E4622364143010F088FC05B0F0BDC04632 +:1081500023AF030010050050040500500505005032 +:108160008017030065800100C1A6020010B5041C41 +:108170000F4B211C083303600E4810F0E3FF201C56 +:10818000743012F0E5F9201C643012F0E1F9201C83 +:108190005C3011F0D1F9201C543011F0CDF9201CC5 +:1081A000054B14306361FCF763FF201C10BDC04613 +:1081B00020B80200C828002028B90200F7B5002521 +:1081C000041C1F1C254B8580083303608571143007 +:1081D000161C0191FCF78EFF201C214BE5626361A8 +:1081E00025644430FEF710F9201C5430FFF772FB71 +:1081F000201C5C30FFF76EFB201C6430FFF7D2FDC3 +:10820000201C710074303AB212F0C0F904231A1C19 +:10821000A0210320C132FF329200C9050133505022 +:10822000112BF4D120226B46E2721F3A9B88A27375 +:10823000FE326272221CA38000234C32E671277248 +:10824000A3722373E373237463731370054AE366A5 +:10825000916804330B43201C9360FEBD20B80200DC +:1082600028B90200C8280020F7B5437A002B69D04E +:10827000436F077B06330193C3799C465B000093F1 +:10828000827A314B520001329A1800231E1C511E73 +:108290000C781178012F05D16546013D6D1A211C1E +:1082A0002C1C0FE0022F06D16546013D2C1B057AE0 +:1082B000013D691A06E0032F04D1057A013D2D1B0B +:1082C0000C1C291C009D6943019D2C19615C00292F +:1082D00002D00121B1400B4301360632092ED6D11E +:1082E000DB430F21041C194A18011278DB050A40F0 +:1082F00002431749D2B20A70E27ADB0E1343154AE1 +:108300001370667AB31EDBB2FC2B15D8124810F03E +:108310004CFF124B051C2363002311486363114B70 +:10832000FF21E4622364704301F026FC011C201C41 +:108330006943143010F091FB637A012B02D8201CA2 +:10834000FFF77EFEF7BDC04623AF030010050050C7 +:108350000405005005050050C82800204180010098 +:10836000B6030000C1A6020007B501228188131CD4 +:108370006846FFF75FF86846024902220123FFF7CB +:1083800059F807BDFE030000154B10B59B685B074D +:1083900025D5427B041C022A02D112F0AEFA1EE05F +:1083A000C37A5B00C372837A0133DBB2032B01D043 +:1083B000837203E0002383722033C372002A02D148 +:1083C000201CFFF751FF637B012B05D1A373002312 +:1083D000201CE373FFF746FE201C12F05BFA10BD71 +:1083E000C8280020031C13B54C331A78041C002A3B +:1083F0000DD000221A7001328188131C6846FFF7E5 +:1084000019F86846044902220123FFF713F8201CDB +:10841000743012F0B2F813BDFF03000008B54C3001 +:108420000378012B03D902480221FFF7C9F908BDDF +:10843000FF03000073B5079E041C002E1ADB051C09 +:108440004C352878012817D806981BB2C0B2009086 +:10845000201C12B2743012F0A0F80023301E984293 +:108460000BD0221C4E321680062250342380181C5A +:108470002A7002E0014800E0014876BD17FCFFFFCA +:1084800012FCFFFFF0B587B00D9D002D22DB041C10 +:10849000039302920E1CFFF7C1FF231C4C331F787D +:1084A000002F19D1311C05A812F05FF80C9B05A90B +:1084B0000093029A039B0195201CFFF7BBFF05A8C0 +:1084C00012F046F8281E08D006200121FFF778F99F +:1084D000381C02E0024800E0024807B0F0BDC04688 +:1084E00017FCFFFF11FCFFFFF8B5041C171E19DD78 +:1084F000061C4C363378012B16D8021CC3795A322D +:10850000013B1370031C002558331D80543011F0BB +:108510002FF8231C4E331F80022350342580281C43 +:10852000337002E0014800E00148F8BD17FCFFFF8E +:1085300012FCFFFF0421034A93680B4201D10B4355 +:1085400093607047C82800200421034A93680B42B7 +:1085500001D08B4393607047C8280020F0B589B0E4 +:1085600002900D1C72B6FF2200238A425B410298E2 +:108570005B421D40FFF7E8FF029B1E7C002E00D1EE +:108580000136434B1022002104A81F6812F051FE4F +:10859000404B281C6421049301F0EEFA0A2101F0FB +:1085A000D1FB05246143503179180591281C0A211B +:1085B00001F0E2FA0A2101F0C5FB6143503179185C +:1085C0000691281C0A2101F0BDFB4C4350343F1991 +:1085D00020250024079700230093FA235B000193D2 +:1085E000032C01D120250024009A04ABD3582A4A39 +:1085F000039363000133D31800229446197803983B +:10860000405C591E0F7810213941014204D00121EC +:10861000604691400843844601320633092AEDD171 +:10862000F0231E481E4A0370D13B191C29431170C8 +:108630006146C9430F01FFB20770FA2709110B40C9 +:108640002B431370BF00174812F063FC002801D1C0 +:10865000FEF796F9013F002FF5D1019B6D00013423 +:10866000013BEDB2E4B20193002BB9D1009B04337E +:108670000093102BB1D1029B1B7C002BABD0013E91 +:10868000F6B2002EA7D1FEF77BF909B0F0BDC046C7 +:108690008C00002059AF030023AF030004050050F5 +:1086A00005050050982C002030B50024034D84713E +:1086B0000560818042730373846030BD48B8020056 +:1086C00010B58379041CDB0702D5806800F08CF9B3 +:1086D000A3799B0702D5A06800F086F9A3795B0710 +:1086E00007D5A0230021114ADB00D150A06800F07B +:1086F0007BF9A3791B0709D5A06812F08DFB0D2328 +:10870000E356834202D1A06800F034FCA379DB0673 +:1087100005D5A068002802D003681B69984700238C +:108720007F22A360A3799343A37110BD0070004022 +:10873000F7B5037BDB0728D5012928D802238579E3 +:108740000F1C041C1D4016D1FFF7BAFF182000F0C3 +:1087500027F9637B1822291C061C019312F069FD7E +:108760006B460421301C595610F0DAFA0222A37924 +:10877000A6601343A371A3685A68002F03D0DB6877 +:108780001A60002004E01B69FAE7024800E0024892 +:10879000FEBDC04616FCFFFF17FCFFFFF7B5012723 +:1087A000037B3B4222D08579041C3D4016D1FFF764 +:1087B00087FF182000F0F4F8637B291C1822061CA0 +:1087C000019312F036FD6B460421301C59563A1CB9 +:1087D00010F08AFAA379A6603B43A371A26853699B +:1087E00050681B681840431E984100E00048FEBDD9 +:1087F00016FCFFFF38B5037B9B0715D50C4B994240 +:1088000014D80D1C041C12F09EF8031C0020834297 +:108810000DD1281C02F00EFA064901F049FD011C99 +:10882000A06800F0C5FB02E0034800E0034838BD43 +:10883000FF03000000C07F4416FCFFFF17FCFFFF92 +:1088400070B5037B9B0716D504258379041C2B4246 +:108850000DD1FFF735FF082000F0A2F80D21061C0E +:10886000615600F08DFDA379A6602B43A371A0682B +:1088700000F0AEFD00E0014870BDC04616FCFFFFF1 +:10888000F7B5037B5B0719D510268579041C3540A5 +:1088900010D1FFF715FF282000F082F80D22071CE9 +:1088A000A188A25601230095FEF754FAA379A76088 +:1088B0003343A371A06810F086FC00E00048FEBDC1 +:1088C00016FCFFFF08B583791B0703D5806800F00D +:1088D00083FB00E0004808BD16FCFFFF10B5041C38 +:1088E000002300F0D1FCE121054B201C2360054B47 +:1088F00049022364044B636410F032F9201C10BD5C +:1089000028B7020040B7020074B7020070B5051C1A +:10891000042008F007FC061C1448801B02F0D2F962 +:1089200004F004F8124B002203F07AF901F0F0FA97 +:1089300003239843041C301C08F0FEFB2868002821 +:108940000AD1201C08F0EEFB28600028F6D1203C5C +:10895000002CF3D1074807E0A408A40004196C60B8 +:10896000281C12F00BF8002070BDC0460038002013 +:108970000000E83F13FCFFFF10B572B6064C201C48 +:10898000FFF7C4FF002802D062B6044802E0A060EE +:10899000E06062B610BDC046102D002013FCFFFF42 +:1089A00038B5104C051C2368002B04D0211C11F095 +:1089B000EDFF002809D1A368002B08D0211C281C3A +:1089C000083111F0E3FF002801D0041C07E0281C47 +:1089D00008F0A8FB041E02D11420FDF757FD201C4F +:1089E00038BDC046102D002008B5002815D00B4B0F +:1089F0001A68904202D95A68904208D39A68904205 +:108A000002D9DB68984202D308F096FB05E0802388 +:108A1000043802681B061343036008BD102D0020B4 +:108A200008B5084A03880120934209D0834202D046 +:108A30000020DB0704D404481E21FEF765F800205F +:108A400008BDC046FFFF0000C828002002200D4AD4 +:108A50000D4B30B59850101C8022D2009C58002C31 +:108A6000FAD0A124084DE400295199580029FCD0DE +:108A70000021054A11508022D2009A58002AFAD0CB +:108A800030BDC0460405000000E00140802370B501 +:108A90005B0544201D695E69FFF782FF00214422C7 +:108AA000041C12F0C6FB311C133944226943201CFC +:108AB00012F0A2FB054B22689A4204D0201C002130 +:108AC000442212F0B6FB201C70BDC046FECAFECA8E +:108AD00030B501240A480B4B1C50041C8020C000F8 +:108AE0001D58002DFAD00A601A58002AFCD0002127 +:108AF000044A11518022D2009A58002AFAD030BD7F +:108B00000405000000E0014010B5041C054B0833CB +:108B10000360143010F010FD201C103010F00CFD1C +:108B2000201C10BD60B8020038B5041C8068002805 +:108B300008D0074B1D8800F085FA0368291C1B6AC2 +:108B400015229847211C034810F01EFB38BDC04673 +:108B5000EA2D0020C828002038B50025041C094B48 +:108B600085800833857103601030FEF7B3FE201C4A +:108B70001430FEF7AFFE044BA560E560201C1C60BE +:108B800038BDC04660B80200202D002070B5002519 +:108B9000041C0C4B858008338571036014300E1C57 +:108BA00012F017F8201C183012F016F8064BA680A9 +:108BB000A571E57125726572E5602561201C1C6058 +:108BC00070BDC04680B80200242D002013B5041CDF +:108BD0000E4811F0CFFF0023226843629A4201D170 +:108BE00020600BE0516A002902D001330A1CF9E72A +:108BF000032B02DDFFF7F8FE06E050620122684613 +:108C00001D21131CFEF716FC13BDC046782C002056 +:108C100038B5051C074811F0ADFF0123041C2B706B +:108C20000430FEF717FC0023201C2B70FFF7DCFE3E +:108C300038BDC046782C0020002815D00060416067 +:108C40008260C360046145618661C7614446046215 +:108C50004C464462544684625C46C4626446046383 +:108C60006E46466374468463002A06D0C46B043C97 +:108C7000043A25681560B442F9D18C6BA6464E6B58 +:108C8000B546002B06D0CC6B043C043B1D68256028 +:108C9000B442F9D10C6BA446CC6AA3468C6AA246B6 +:108CA0004C6AA1460C6AA046CF698E694D690C6971 +:108CB000CB688A68086849687047006041608260D4 +:108CC000C360046145618661C761444604624C46E5 +:108CD0004462544684625C46C462644604636E46E1 +:108CE000466374468463C46B043C043925680D6094 +:108CF000B442F9D1C7698669456904697047006063 +:108D000041608260C360046145618661C761444619 +:108D100004624C464462544684625C46C4626446C3 +:108D200004636C4644637446846304697047846BCF +:108D3000A646446BA546046BA446C46AA346846A4F +:108D4000A246446AA146046AA046C7698669456985 +:108D50000469C3688268006841687047F0B587B0ED +:108D60001F1C0EAB1B88019003930D9B0D1C0292E0 +:108D70000C9E0093002F39D0002E01D1DB0735D592 +:108D80002020FFF70DFE041C1030FEF735FB6B466C +:108D90001B89258063801820FFF702FE0496061CBD +:108DA000051C009B80C600211022301C059312F088 +:108DB00040FA04A90822301C12F01EFA0D4B0022C2 +:108DC0006B6102230399A5600B43E260A380E2611B +:108DD0000198211CFEF744F8002808D0201C11F04F +:108DE0002DFE201CFFF700FE034800E0034807B0FB +:108DF000F0BDC046DFAB020013FCFFFF17FCFFFF16 +:108E0000F0B58180154989B000251E1C0491694682 +:108E1000134B85710360028146810573059504AB90 +:108E2000041C81CB81C1C023111C02932A1C231C6A +:108E30000C48FFF793FF094A079506926A4606AB6E +:108E400003CB03C2C023311C02932A1C231C0548F8 +:108E5000FFF784FF201C09B0F0BDC046F1AC020052 +:108E6000A8B80200B429002030B5051CA0240123B5 +:108E7000C135FF35E405AD002B511D1C8D408340ED +:108E8000291C0B4D0002615163510A4B920018439B +:108E9000094BD118A223DB00C850C046C046C046CB +:108EA000064B0021D218A823DB00D15030BDC046AC +:108EB0000C050000030003000060004000A000401B +:108EC000F7B52A4E01913568071C2949002D08D0B5 +:108ED0007368002B04D0B3680225002B0FD100E08B +:108EE000012508200D70FFF75BFD391C041C00F004 +:108EF00011FC6B461B79AD00A370745133E0002266 +:108F000002200B789C460133DC0F984262415242AA +:108F100013409C00634516D0144A10598278151CE2 +:108F200001222A4009D00B706B461B79391C8370D3 +:108F300011F067FF0D4B1C5915E0581C131C02283B +:108F4000E7DC031CE5E701233059827813401C1E3F +:108F500009D06B461B79391C837011F052FF044B0A +:108F60001B789B00F458201CFEBDC046282D002015 +:108F70000B01002070B5002403780B4A4533FF3302 +:108F80009B009C50051C00F08DFB0123AB70074E2D +:108F9000A359AB4204D1281CFFF726FD0023A3519F +:108FA00004340C2CF3D170BD00600040282D00204B +:108FB00070B5061C0D1C081C002100F01FFF041ECC +:108FC00006D1301C291C00F003FB7560201C00E05A +:108FD000004870BD17FCFFFF38B5051C0C1E09DBEF +:108FE00000F06CFB281C6968FFF7E2FF024B0020D1 +:108FF0001C8000E0014838BDEC2D002017FCFFFF6D +:1090000010B5054C0121201C11F029FF201C03493B +:10901000034A11F0E0FF10BD342D00201FAE020006 +:1090200000000020436810B5041C002B02D1044846 +:109030000FF03FFE606803681B69984710BDC0468B +:1090400062AF0300436810B5041C002B02D1044832 +:109050000FF02FFE606803681B69984710BDC0467B +:1090600062AF0300436810B5041C002B02D1044812 +:109070000FF01FFE60680368DB6A984710BDC046AA +:1090800062AF030080B2002807D1BFF34F8F034ABD +:10909000034BDA60BFF34F8FFEE770470400FA0519 +:1090A00000ED00E0F0B5264B85B01B78002B45D0D5 +:1090B000244B254E1D6834686A4255416242544132 +:1090C000EDB2E4B20193002D36D103A811F0D0FE29 +:1090D00005280CD0002804D0291C2A1CFFF7D2FF39 +:1090E00006E0019B03981B680093984700E0012568 +:1090F000002C1ED1154B03A91B8801240B80144B97 +:109100001B68181C009311F0B5FE071E052F0BD02D +:10911000002805D000210A1CFFF7B4FF002403E05B +:109120000098336898473C1C002DCCD0002CCAD046 +:1091300004E0002D02D1C6E7002CDBD005B0F0BD65 +:10914000622E00203C2D0020402D0020EE2D00201E +:10915000382D002008B5074B1B68002B07D0984717 +:10916000002806D000210A1CFFF78CFF01E0FFF762 +:1091700099FF08BD442D00200120054A08B5137849 +:109180005840044B10701B68002B00D0984708BD56 +:10919000632E0020482D002002210D4A0D4B30B5D2 +:1091A0009950111C8022D2009C58002CFAD0A12486 +:1091B000084DE400285198580028FCD00020054AAA +:1091C00050508022D2009A58002AFAD030BDC046B2 +:1091D0000405000000E001400323FF220340984300 +:1091E000DB009A40994030B5046894436318012429 +:1091F0000849094A54500C1C8021C9005558002DBB +:10920000FAD003605358002BFCD00022024B1A51B5 +:1092100030BDC0460405000000E00140F0B5104C30 +:109220000125A4460F4B1D518024E4001C59002C3D +:10923000FAD00C1C92008A188025ED00944207D0C9 +:109240002668671A3E505F59002FFCD00434F3E7BC +:10925000002261465A505A59002AFCD0F0BDC0463F +:109260000405000000E0014008B4024B9C46403871 +:1092700008BC604797AE020008B4024B9C464038D9 +:1092800008BC60479FAE020038B5041C1D1CFBF7EC +:1092900053FF201C291C4030FBF7F8FE054B201C17 +:1092A0001A1C083222601A1C543320322264636470 +:1092B00038BDC046C0B8020010B5041C044B0360A2 +:1092C0000FF0BAFB201CFBF72BFF201C10BDC04683 +:1092D00020B6020010B5041C034B083303601C3099 +:1092E00000F032FB201C10BD38B9020070B5051C1F +:1092F000041C0E4B0E1C083308C5281C0021182224 +:1093000011F097FF0023201C311CE361236263638B +:10931000A363E364064A231C1C3000F0E5FA281C12 +:10932000311C0FF0DCFC201C70BDC04638B90200B7 +:1093300041AF020070B5041C0E1C151C0021102248 +:1093400011F077FF054B201C2361311C2A1CFCF710 +:1093500063FA034B201C1C6070BDC046A086010050 +:109360004C2D002038B5054D2B68834204D0041CD9 +:109370002169FCF70BFA2C6038BDC0464C2D00204B +:1093800070B5104C051C0E1C081C211C00F036FB8F +:10939000211C28600023CB565A1C05D0B34201D1B2 +:1093A0008B6802E00C31F5E70023A0210120064A7A +:1093B000C9002B7150506A211B020B4303495350C3 +:1093C00070BDC046A01703000070004004050000F7 +:1093D0000C4B0D4A10B50D499C582140995001790C +:1093E0009C5809022143995001221A608022D20020 +:1093F0009A58D207FAD4A123024ADB00D05880B28F +:1094000010BDC0460070004004050000FF00FFFFD3 +:1094100003780D4A9B009B18A22210B58024D2002D +:109420009858640320439850002902D0995807485F +:1094300006E098580649014080209950995840020A +:109440000143995010BDC046006000400300030076 +:10945000FFFFFCFF0021114A114B1165114A1188D1 +:10946000114A9950114A1178002904D010490888EE +:10947000A821C90058505178002903D00C494888C8 +:109480000C4958509278002A04D0094A9188A922A0 +:10949000D200995001221A607047C046FCA00040DB +:1094A00000A00040FE0000204C050000642E0020BB +:1094B00000010020440500000022154B10B55A6041 +:1094C00090420ED10121134A98509950124A053109 +:1094D00098500432985008329950104A1188104A16 +:1094E0009950104A410051308A5AFF3080001A507A +:1094F000C2200D4980000C580C4A22408024E4030D +:1095000022430A508022D2000A6001221A6010BD54 +:1095100000A00040FC0F000004050000FE00002039 +:109520004C0500000001002000E100E0FFFF00FF0B +:10953000012330B51D1C021CA0248540C132FF321E +:10954000E405920013510A4A8900A550094A0A4CC1 +:109550008918A222D2008C50C046C046C0460B607B +:10956000064B000218438850C046C046C04630BD76 +:109570000C05000000600040031F02000300030010 +:1095800010B5002A02D0FFF743FF17E003780C4A1A +:109590009B009B18A222D2009C580A482040985059 +:1095A000002902D09958084806E098580749014018 +:1095B00080209950995880020143995010BDC046AF +:1095C00000600040FFFFEFFF03000300FFFFFCFF10 +:1095D000F7B500222D4B2E4C1A650123061C0D1CDD +:1095E000081C6360002100F009FC0194002809D1E7 +:1095F000FE21281C890500F015FC002803D0FE255B +:10960000AD0500E000253478224B6400E35A009356 +:10961000214B1F88381C01F00DFB011C281C01F098 +:1096200039F800F05DFC1D4B1A4982B2E2526252D9 +:10963000002A04D10121301CE152111C14E0BA426D +:1096400006D1013A301C0021E252FFF7E1FE0DE0A5 +:10965000009B002B01D0BB4208D1009B301CDA1BC1 +:1096600057427A410121D2B2FFF78AFF8022C123FB +:10967000019912039B00CA500199094A053BFF3B1F +:10968000CA500123019A1360F7BDC046FCA00040F8 +:1096900000A00040F02D0020FE000020000100206E +:1096A00008080000002108B5034A0378D1540021BE +:1096B000FFF78EFF08BDC046642E00200020104A30 +:1096C000CB17106501229B0F59180E480E4B8910BD +:1096D0005A600E4A814202D90121494202E004291E +:1096E00000D8052111808021C122090392009950E0 +:1096F0000749053AFF3A995001221A607047C0465F +:10970000FCA00040FFFF000000A00040FE00002081 +:1097100008080000F8B5051C0E1C081C2B4900F0B9 +:109720006DF92B4BC4B2C0B2195C012200290FD0D5 +:109730005978002902D15A70141C0AE0997800293E +:1097400002D19A70022404E022480FF0B2FA00E03D +:109750001A54301C6E70211C2C70FFF7E9FE1E4A53 +:109760006300DBB21D48A1008918DA0012181C48FA +:109770001A4E11501B4811501B48A1000918A22075 +:10978000C0001150A3211948C90050500121A02246 +:10979000081CD200B7585A1C90400A1C9A40031C5F +:1097A0001343A0223B43D200B350002C02D18023AC +:1097B000DB059967201CFFF77FFE281C0C49FFF78B +:1097C0007DFF281C0021FFF703FFF8BDF4170300FD +:1097D000642E002085AF03000060004000F00140CF +:1097E000140500001C05000040A100404CA10040F1 +:1097F000204E000037B5A223A022DB00D205D358AB +:10980000BE220193314B5200995800295DD0C121ED +:1098100089005958002958DA00249C502C4BA50087 +:10982000E85800284ED02B4BE35C002B30D0019B36 +:109830000121E3400B4212D0231CA022C133FF338D +:109840009B00D2059B589B039B0F032B07D0224BF9 +:109850001B68E3400B4202D0204B1B6817E0019BC2 +:109860000122E340134213D1231CA021C133FF3353 +:109870009B00C9055B589B039B0F032B08D1184B1A +:109880001B68E340134203D00221144B1B68984726 +:10989000A023DB05EA18E023C025DB00D158AD0288 +:1098A00029420FD0D1580F480840D0500198E040CD +:1098B000C10702D5D158294303E08020D158800246 +:1098C0000143D15001341F2CA8D137BD00600040A6 +:1098D000542D0020672E0020D02D0020502D002078 +:1098E000D42D0020FFFFFCFF30B5041C081C4D1CCC +:1098F0001CD00F482160BE24026000200D4A640085 +:1099000010510D4C8D002B5101240C4B5C54C12186 +:10991000802389001B065350094A0A4B54582340A0 +:10992000C0242404234353504023136030BDC04659 +:10993000502D002000600040542D0020672E002094 +:1099400000E100E0FFFF00FF00210368014A9B00E7 +:1099500099507047542D002070B5A024E025006870 +:10996000E40583001B19ED005E59214C34405C5125 +:10997000204D0124002A0ED0A14204D181402A6842 +:109980001143296015E0022913D184401A4A116855 +:109990000C4314600DE0012904D181402A688A43F8 +:1099A0002A6006E0022904D1844013490A68A243D0 +:1099B0000A602A680121C2400A4204D10E4A126894 +:1099C000C2400A4212D0A222A021D200C9058A5860 +:1099D000C240101CE022D200C10702D59958C02015 +:1099E00001E08020995880020143995070BDC04623 +:1099F000FFFFFCFFD02D0020D42D002010B5041C4B +:109A0000431C07D011F0D7FA041C431C02D10248B2 +:109A10000FF04FF9201C10BDE9AF030002B47146EE +:109A200049084900095C49008E4402BC7047C046A1 +:109A300003B47146490840004900095E49008E445C +:109A400003BC704703B47146490840004900095AF5 +:109A500049008E4403BC7047002243088B4274D3F4 +:109A600003098B425FD3030A8B4244D3030B8B421F +:109A700028D3030C8B420DD3FF22090212BA030C28 +:109A80008B4202D31212090265D0030B8B4219D309 +:109A900000E0090AC30B8B4201D3CB03C01A524129 +:109AA000830B8B4201D38B03C01A5241430B8B4271 +:109AB00001D34B03C01A5241030B8B4201D30B035A +:109AC000C01A5241C30A8B4201D3CB02C01A524181 +:109AD000830A8B4201D38B02C01A5241430A8B4244 +:109AE00001D34B02C01A5241030A8B4201D30B022D +:109AF000C01A5241CDD2C3098B4201D3CB01C01A47 +:109B0000524183098B4201D38B01C01A5241430950 +:109B10008B4201D34B01C01A524103098B4201D33E +:109B20000B01C01A5241C3088B4201D3CB00C01AAB +:109B3000524183088B4201D38B00C01A5241430823 +:109B40008B4201D34B00C01A5241411A00D2014648 +:109B5000524110467047FFE701B5002000F0FCF8C5 +:109B600002BDC0460029F7D003B5FFF775FF0EBC54 +:109B70004243891A1847C04603460B437FD400224C +:109B800043088B4274D303098B425FD3030A8B4291 +:109B900044D3030B8B4228D3030C8B420DD3FF22FB +:109BA000090212BA030C8B4202D31212090265D0C9 +:109BB000030B8B4219D300E0090AC30B8B4201D37C +:109BC000CB03C01A5241830B8B4201D38B03C01AC3 +:109BD0005241430B8B4201D34B03C01A5241030B3A +:109BE0008B4201D30B03C01A5241C30A8B4201D3EB +:109BF000CB02C01A5241830A8B4201D38B02C01A96 +:109C00005241430A8B4201D34B02C01A5241030A0C +:109C10008B4201D30B02C01A5241CDD2C3098B42F1 +:109C200001D3CB01C01A524183098B4201D38B016E +:109C3000C01A524143098B4201D34B01C01A524111 +:109C400003098B4201D30B01C01A5241C3088B4256 +:109C500001D3CB00C01A524183088B4201D38B0041 +:109C6000C01A524143088B4201D34B00C01A5241E3 +:109C7000411A00D201465241104670475DE0CA0FBA +:109C800000D04942031000D34042534000229C467A +:109C900003098B422DD3030A8B4212D3FC22890184 +:109CA00012BA030A8B420CD3890192118B4208D35A +:109CB000890192118B4204D389013AD0921100E0BC +:109CC0008909C3098B4201D3CB01C01A52418309D0 +:109CD0008B4201D38B01C01A524143098B4201D3FD +:109CE0004B01C01A524103098B4201D30B01C01A28 +:109CF0005241C3088B4201D3CB00C01A52418308A2 +:109D00008B4201D38B00C01A5241D9D243088B42F7 +:109D100001D34B00C01A5241411A00D2014663469A +:109D200052415B10104601D34042002B00D54942FE +:109D3000704763465B1000D3404201B5002000F03D +:109D40000BF802BD0029F8D003B5FFF715FF0EBCD4 +:109D50004243891A1847C0467047C0468446101CC3 +:109D600062468C46191C634600E0C0461FB501F0F0 +:109D7000F1FE002801D40021C8421FBD10B501F03A +:109D800035FE4042013010BD10B501F0E3FE002861 +:109D900001DB002010BD012010BDC04610B501F050 +:109DA000D9FE002801DD002010BD012010BDC046F5 +:109DB00010B501F05FFE002801DC002010BD01207D +:109DC00010BDC04610B501F055FE002801DA002094 +:109DD00010BD012010BDC0468446081C6146FFE747 +:109DE0001FB500F011FC002801D40021C8421FBD9E +:109DF00010B500F095FB4042013010BD10B500F0E9 +:109E000003FC002801DB002010BD012010BDC0466E +:109E100010B500F0F9FB002801DD002010BD012085 +:109E200010BDC04610B500F0A5FB002801DC0020E5 +:109E300010BD012010BDC04610B500F09BFB0028EE +:109E400001DA002010BD012010BDC046002B11D149 +:109E5000002A0FD1002900D1002802D00021C943D7 +:109E6000081C07B4024802A14018029003BDC04676 +:109E7000E9FEFFFF03B4684601B5029800F082F8DE +:109E8000019B9E4602B00CBC7047C046F0B54F46E1 +:109E9000464605042D0C2C1CC0B41704160C3F0CB0 +:109EA0009946030C7C4375435F4373437D19260C2D +:109EB000AD199C46AF4203D980235B029846C44447 +:109EC0004B465143434324042E0C240C2D0466447A +:109ED0002C1959188919201C0CBC90469946F0BDC4 +:109EE0009E2110B5C905041CFFF7A6FF002803D169 +:109EF000201C00F07FFE10BD9E21201CC90500F033 +:109F0000FBFC00F077FE80231B069C466044F2E7D2 +:109F100038B500220C4B041C0D1CFFF753FF002822 +:109F200004D1201C291C02F08FFC38BD064B0022F6 +:109F3000201C291C02F00EF902F086FC80231B066F +:109F40009C466044F1E7C0460000E041F0B583B0B4 +:109F5000161C1F1C0090019102F0EAFD041C0D1C50 +:109F6000221C2B1C301C391CFFF790FF009A019B10 +:109F7000121A8B410899201C0A604B60291C03B0FF +:109F8000F0BDC046F0B5141C83B01D1C00900191BB +:109F900002F0C6FE221C2B1C061C0F1CFFF776FFCE +:109FA000009A019B121A8B410899301C0A604B6081 +:109FB000391C03B0F0BDC046F8B54A004302440066 +:109FC0004E02C50F240E281C9B09120EC90FB7099B +:109FD0008D4240D0A01A002800DC84E0002A1CD169 +:109FE000002F5CD15A0704D00F221A40042A00D057 +:109FF00004338022D2041A40281C002A24D00134C1 +:10A00000FF2C00D17BE09B015B0AE4B25B02E4051C +:10A010005B0A2343C0071843F8BDFF2CE2D080221F +:10A02000D204174301261B2808DC391C20223E1CC1 +:10A03000C140101A8640771EBE410E439B1B5A0139 +:10A0400033D4281C5A07CFD1DB08FF2C1ED05B026B +:10A050005B0AE4B2DAE7A11A002957DD002A3AD0F8 +:10A06000FF2CBFD08022D204174301261B2972DDAA +:10A070009B195A01E5D50134FF2C00D187E001215D +:10A080008A4A194013405B080B43ABE7002B36D0DC +:10A090008022D20313435B025B0AFF24B6E7013838 +:10A0A00000283FD1DB1B5A01CBD59B019E09301CF8 +:10A0B00002F020FD05388640844223DC001B1F246B +:10A0C000321C431C201ADA408640131C741EA64121 +:10A0D0000024334386E7002F00D183E701390029AC +:10A0E00050D1DB19C5E7002820D1621CD2B2012A69 +:10A0F0005EDDDE1B720128D5FE1A0D1CD7E7FF249A +:10A10000002383E7694B241A33406BE7002958D1B9 +:10A11000621CD1B201293CDDFF2A37D0FB185B0855 +:10A12000141C5FE7FF2C00D07CE75BE7002C1ED0FF +:10A13000FF2A23D08024E404404223431B285BDD14 +:10A140000123FB1A141C0D1CADE7002EAFD1002318 +:10A150000020002478E73A1CCA40944620223E1C86 +:10A16000511A8E406246771EBE41164380E7002B8F +:10A170003ED0C0430028E4D0FF2ADFD13B1CFF249F +:10A180000D1C2FE7FF2C00D06FE72BE7FF240023E7 +:10A190005AE7002C5AD1002B7FD0002F00D121E7A5 +:10A1A000DB195A0100D44CE7404A0134134019E747 +:10A1B000002C15D1002B2FD1002F5DD03B1C0D1C86 +:10A1C00010E7002C21D1002B53D0C943002904D023 +:10A1D000FF2A4BD01B2957DD0123DB19141C48E74C +:10A1E000002B22D1002F4AD03B1C0D1CFF24F9E686 +:10A1F0003B1C141C0D1CF5E61D1C2024C540201A18 +:10A200008340581E83412B439BE7FF2A2ED0802496 +:10A21000E40449422343DDE7002F00D1E2E6DA1BE4 +:10A2200050013CD5FB1A0D1CDCE6FF24002F00D1A9 +:10A23000D8E68022DB08D203134204D0FE0816427F +:10A2400001D1331C0D1CDB00FF24CBE6002B0DD00D +:10A25000FF24002F00D1C5E68022DB08D203134281 +:10A26000F1D0FE081642EED1331CECE73B1CFF2474 +:10A27000B8E63B1C141CB5E6231C0020E4E6802352 +:10A2800000209B04FF24DFE61E1C2024CE40611A20 +:10A290008B40591E8B4133439FE73B1CA2E6131EA4 +:10A2A00000D0CEE600230020CEE6C046FFFFFFFB35 +:10A2B000F0B556464D465F464446F0B4430245006D +:10A2C000C70F83B08A465C0A2E0EB94641D0FF2ED6 +:10A2D00026D080231B042343DC00002398469B46A2 +:10A2E0007F3E53465B025D0A53465A00DB0F120E57 +:10A2F0009A4639D0FF2A33D080231B042B43DD003C +:10A3000000237F3A5146B21A46467940081C019212 +:10A310001E430F2E00D976E07E4AB6009659B74606 +:10A32000002C30D108239846063B9B46D9E7802372 +:10A330000021DB03FF245B02E4055B0AC90723431A +:10A340000B43181C03B03CBC90469946A246AB4652 +:10A35000F0BD002C28D104239846033B9B46C0E760 +:10A36000002D1FD1022302E0002D11D10123B21ACA +:10A3700050464646784001921E430F2E27D8664924 +:10A38000B60089598F460C239846093B9B46A8E79F +:10A39000281C02F0AFFB7622431F52429D40121A46 +:10A3A0000023AFE70323ADE7201C02F0A3FB431F0C +:10A3B0009C4076235B421E1A002398469B4690E7FA +:10A3C0000025D1469B465B464846022B6FD10121B2 +:10A3D000FF2401400023AEE77E23019A5B429B1AD3 +:10A3E0001B2B6DDD01214B46194000240023A2E701 +:10A3F0008023DB031C4249D18023DB0323435B0220 +:10A400005B0A391C96E763016D01AB4237D389467D +:10A410001A2001215B1B01241E1C49005B00002E39 +:10A4200001DBAB4201D35B1B214301380028F3D190 +:10A43000581E83410B431D1C019C7F34002CCBDD37 +:10A440006B0704D00F232B40042B00D004352B01C5 +:10A4500004D5019A314B8032141C1D40FE2C07DDBF +:10A460004B460121FF241940002364E7251CAAE77D +:10A4700001214A46AB015B0AE4B211405BE7019A55 +:10A480008946013A01921B200021C4E71D4207D0F2 +:10A4900023435B025B0A391C4CE700256302ABD502 +:10A4A0008023DB032B435B025B0A514642E7032B0D +:10A4B00025D0012BC0D101210024014000233AE71F +:10A4C000291CD9402B1C019A9E3293405D1EAB4142 +:10A4D0000B435A0704D00F221A40042A00D0043339 +:10A4E0005A0105D54B46012101241940002322E7DA +:10A4F00001214A469B015B0A114000241BE780238F +:10A5000001214A46DB032B435B020A405B0A111C14 +:10A5100010E7C0465C1903009C190300FFFFFFF71A +:10A52000430270B542004C005D0AC30F4802120E90 +:10A53000460A240EC90FFF2A05D0FF2C08D001209F +:10A54000A2420BD070BD0120002DFBD1FF2CF6D113 +:10A550000120002EF6D10120A242F3D1B542F1D163 +:10A560008B4205D0002AEDD1281C431E9841E9E713 +:10A570000020E7E7F0B543024D024A0044005E0ABE +:10A58000240EC30F6D0A120EC90FFF2C0DD0FF2A27 +:10A5900031D0002C0DD177427741002A23D1002DF4 +:10A5A00021D10020002F0BD107E0002E28D1FF2A57 +:10A5B00021D0002A05D08B4207D0584201231843EE +:10A5C000F0BD002DF9D08B42F7D19442F5DC04DBCD +:10A5D000AE42F2D80020AE42F2D2584243410120AE +:10A5E0005B421843ECE7002FE5D04842414101208F +:10A5F00049420843E4E7002D02D1002CCBD0DAE732 +:10A6000002204042DCE7C0464302F0B542004C0065 +:10A610005E0AC30F4802120E450A240EC90FFF2A14 +:10A620000FD0FF2C1AD0002A10D177427741002C8E +:10A6300029D0002F17D04842414101204942084308 +:10A640000BE00220002E08D1FF2C07D0002C0AD1ED +:10A65000002D08D1584201231843F0BD0220002DDF +:10A66000FBD1002AE1D08B42F4D1A242F2DC04DB20 +:10A67000AE42EFD80020AE42EFD258424341012013 +:10A680005B421843E9E7002DD3D10020002FE4D12D +:10A69000E0E7C046F0B55F4656464D464446F0B446 +:10A6A00045024600C40F83B00F1C6D0A360EA34648 +:10A6B00045D0FF2E25D080231B041D4300239A463E +:10A6C000ED007F3E01937B025B0A98467800FB0F0A +:10A6D000000E994640D0FF2838D0802342461B0404 +:10A6E0001343DB00984600237F384A46019F301809 +:10A6F0006240411C1F430F2F69D87D4EBF00F659A1 +:10A70000B746002D45D108230193063B9A46DAE768 +:10A7100093465346022B2FD15B46012400251C4053 +:10A72000FF236D02DB056D0AE4071D432543281C4A +:10A7300003B03CBC90469946A246AB46F0BD002D06 +:10A740002CD104230193033B9A46BCE743465A426B +:10A7500053410322D31AC8E742460123002AC4D03A +:10A76000404602F0C7F94246431F9A4076235B42B7 +:10A77000181A90460023B8E7032B00D1ADE0012B57 +:10A7800000D08CE05B4654461C40E4B20023002518 +:10A79000C7E70C230193093B9A4694E7281C02F073 +:10A7A000A9F97626431F9D4000237642361A01936D +:10A7B0009A4688E780250024ED03FF23B1E745464C +:10A7C000CB469A46A5E7454693469A46A1E74346B7 +:10A7D0002C041B0C9C46230C444626041C1C360CE3 +:10A7E0002F0C7443351C66467D4373437743EB1847 +:10A7F000260C9E19B54203D980235B029C46674410 +:10A8000024043304240C1B199D016C1EA5419B0ECE +:10A81000360C2B43BD19AD011D432B0104D501237B +:10A8200068081D400543081C031C7F33002B2CDDEA +:10A83000690704D00F212940042900D004352901DB +:10A8400003D52C4B1D40031C8033FE2B17DD012448 +:10A85000FF231440002564E78020C003054209D08F +:10A860004346034206D1454605436D026D0A4C46F8 +:10A87000FF2356E705436D026D0AFF2351E70124CC +:10A88000AD016D0ADBB214404BE77E235B421B1A1D +:10A890001B2B07DD012400231440002541E7081C81 +:10A8A0005A46C1E79E30291C8540D940681E854123 +:10A8B0000D436B0704D00F232B40042B00D004352D +:10A8C0006B0104D5012401231440002529E701244C +:10A8D000AD016D0A1440002323E78023DB031D43F1 +:10A8E00001245B466D0223401C1C6D0AFF2318E700 +:10A8F000DC190300FFFFFFF7F8B54A0043024400EC +:10A900004D02C00F240E061C9B09120EC90FAD0983 +:10A91000FF2A00D175E001277940884250D0A01A63 +:10A92000002800DC8FE0002A1ED1002D00D075E049 +:10A930005A0704D00F221A40042A00D00433802280 +:10A940000120D2041A403040002A32D00134FF2CBA +:10A9500000D184E09B015B0AE4B25B02E4055B0A80 +:10A960002343C0071843F8BDFF2CE1D08022D20456 +:10A9700015431B287ADD01255B1B5A015DD59B0120 +:10A980009F09381C02F0B6F805388740844269DC1C +:10A99000001B1F243A1C431C201ADA408740131C5A +:10A9A0007C1EA74100243B43C2E7131E45D1002370 +:10A9B0000020DB08FF2C28D05B025B0AE4B2CCE766 +:10A9C000A11A00295BDD002A2ED0FF2CB0D08022F6 +:10A9D000D20415431B2974DC2F1C2022CF40511AAE +:10A9E0008D40691E8D413D435B195A0125D50134C7 +:10A9F000FF2C74D001217E4A194013405B080B43A1 +:10AA000096E7002D00D088E785E7002B27D080222D +:10AA1000D20313435B025B0AFF249EE70138002840 +:10AA2000AAD0FF2CA5D183E7002D00D180E7013902 +:10AA30000029D9D0FF2CCDD17AE75A0700D079E789 +:10AA400001203040B5E7002825D1621CD2B2012A8E +:10AA500055DD5F1B7A012DD5EF1A0E1C91E7FF24FF +:10AA600000237AE7624B241A3B4061E7291C20222D +:10AA7000C140101A8540681E85410D437CE70029BE +:10AA800046D1621CD1B201292BDDFF2A26D0EB185A +:10AA90005B08141C4CE7002C15D0FF2A1AD0802428 +:10AAA000E404404223431B284DDD0123EB1A141C10 +:10AAB0000E1C62E7002F00D063E700230020002473 +:10AAC00077E7012590E7002B39D0C0430028EDD06F +:10AAD000FF2AE8D12B1CFF240E1C29E7FF240023AA +:10AAE00067E7002C5AD1002B7FD0002D00D11FE743 +:10AAF0005B195A01A1D53E4A0134134018E7002CD6 +:10AB000015D1002B2FD1002D5ED02B1C0E1C0FE772 +:10AB1000002C21D1002B54D0C943002904D0FF2A96 +:10AB20004CD01B2958DD01235B19141C5DE7002B59 +:10AB300023D1002D4BD02B1C0E1CFF24F8E62B1C20 +:10AB4000141C0E1CF4E61E1C2024C640201A834050 +:10AB5000581E83413343A9E7FF2A2FD08024E40401 +:10AB600049422343DDE7002D00D1E1E65A1B5001A5 +:10AB700000D41AE7EB1A0E1CDAE6FF24002D00D1F0 +:10AB8000D6E68022DB08D203134204D0ED0815423A +:10AB900001D12B1C0E1CDB00FF24C9E6002B0DD0BD +:10ABA000FF24002D00D1C3E68022DB08D20313422C +:10ABB000F1D0ED081542EED12B1CECE72B1CFF2445 +:10ABC000B6E62B1C141CB3E6231C0020F1E6802300 +:10ABD00000209B04FF24ECE61F1C2024CF40611AB8 +:10ABE0008B40591E8B413B439EE72B1CA0E6C04681 +:10ABF000FFFFFFFB4202510A4200C30F120E00206A +:10AC00007E2A0DDD9D2A0CDC802000040143952A5C +:10AC10000ADC9620821AD1400A1C58424240D018C1 +:10AC20007047034A9818FBE7963A91400A1CF4E7EC +:10AC3000FFFFFF7F70B5041E39D0C50F00D044421E +:10AC4000201C01F057FF9E23261C1B1A962B07DCA5 +:10AC5000082801DD083884406402640AD8B21EE086 +:10AC6000992B0ADD0522211C121AD1400A1C011C55 +:10AC70001B318E40711E8E411643052801DD421F97 +:10AC800096400F4C3440720704D00F221640042E19 +:10AC900000D0043462010ED4A401640AD8B2640264 +:10ACA000C005640AED0704432C43201C70BD002539 +:10ACB00000200024F3E7024B1C409F231B1AEBE704 +:10ACC000FFFFFFFB10B5041E35D001F013FF9E21DE +:10ACD000091A962909DC082830DD021C231C083AD1 +:10ACE00093405B025B0AC8B220E099290CDD052283 +:10ACF000231C121AD3401A1C031C1B339C40231C18 +:10AD00005C1EA34113431C1C052801DD431F9C400E +:10AD10000F4B2340620704D00F221440042C00D0B4 +:10AD200004335A010ED49B015B0AC8B25B025B0A72 +:10AD3000C005184310BD00200023F7E763025B0A3B +:10AD4000C8B2F3E79F21024A091A1340EBE7C04655 +:10AD5000FFFFFFFBF0B5454657464E4694464C0074 +:10AD60000A03C90FE0B488460E1C1903470FC5003B +:10AD7000480A6146490F01436046520A1743C00022 +:10AD80005A00640D520DDB0F8446984500D1A7E0B0 +:10AD9000A01A002800DC01E1002A3DD163460B43E4 +:10ADA00000D0D4E06B0700D188E00F232B40042BA8 +:10ADB00000D183E02A1DAA42AD4180236D427F1954 +:10ADC0001B043B404646151C002B00D17CE0CC4BBD +:10ADD00001349C4200D1FDE03A1CCA4BED081A40F8 +:10ADE0005007640552020543120B640D0021120343 +:10ADF0000B0D1B056405120B1A436308C24CF607C2 +:10AE000014401C43640064083443281C211C1CBCEF +:10AE100090469946A246F0BDB94B9C42C2D08023D1 +:10AE20001B041943382800DDECE01F2800DD21E178 +:10AE300020220E1C6346121A9640C34033436646D6 +:10AE40009640321C561EB24113430A1CC240EB1AF4 +:10AE50009D42B6411D1CBA1A7642971B3B0200D494 +:10AE600097E07A02560A002E00D1B6E0301C01F0BD +:10AE700041FE031C083B1F2B00DDB7E09E40371C42 +:10AE800028262A1C361AF240161C9D403E439C423E +:10AE900000DDB2E01C1B621C1F2A00DDD8E01F236E +:10AEA000291C1C1B331CA540A340D1406C1EA5418E +:10AEB000D64019430D43371C002473E780231B043D +:10AEC0003B40464600D082E78D4BED0878070543AE +:10AED000FA089C4232D012036405120B640D85E718 +:10AEE000A31A002B00DC94E0002A3CD0844A944250 +:10AEF00000D157E7802212041143382B00DC05E112 +:10AF000063461943481E81410022C8B24019A84235 +:10AF10009B41051CD2195B42D7183B0239D5784BAF +:10AF200001349C4200D14CE10120764A6B083A4042 +:10AF300028401843D5070543570833E72B1C134314 +:10AF400048D080231B031A431203120B4EE701382B +:10AF5000002878D16346EE1AB5429B417A1A5B42CB +:10AF6000D71A351C7AE7021C0A4300D11AE7013BC5 +:10AF7000002B00D0F2E04019A8429B41CA195B4265 +:10AF8000D718051CC9E7131C334300D118E1171C5F +:10AF9000351C46466B0700D007E795E700287AD1B5 +:10AFA000621C5205520D012A00DCFBE06246AA1A1F +:10AFB0009542B6419146781A7242861A320200D4FE +:10AFC00093E06246551BAC458041CF1B40423E1A80 +:10AFD000984648E70022002508E7281C01F08AFD72 +:10AFE0002030031C083B1F2B00DC47E72838854036 +:10AFF0002E1C00259C4200DC4CE7424AE41A164015 +:10B00000371CCFE6634619434B1E99410022CBB251 +:10B010001DE7002B00D0F2E0601C43055B0D012B07 +:10B0200000DCA4E0364B984200D121E163465C1974 +:10B03000AC429B41CF195B42FA186408D5072543FF +:10B040005708041CAEE62E4B9C4200D0EAE6A9E667 +:10B05000211C331C1F39CB40191C202A00D182E04F +:10B060003F231C1BA64035436E1EB54100270D43F0 +:10B0700000248EE7031C0E1C203BDE40202874D0E9 +:10B0800040231B1A99400B1C62461343591E8B41E7 +:10B0900000223343DBE6002C50D0194CA24200D1F1 +:10B0A000A8E08024240440422743382800DDD9E06A +:10B0B0001F2800DD39E120243E1C241AA640B0469A +:10B0C0002E1CA146C640444626434C46A5406C1E55 +:10B0D000A541C74035436046451BCF1BAC45894160 +:10B0E00049427F1A141C9846B8E64B464D463343F6 +:10B0F00000D0B8E60026002700240025E4E6C0467C +:10B10000FF070000FFFF7FFFFFFF0F801F2B5BDCAF +:10B110002022081CD21A9040814660469246D840B0 +:10B120004A4610438146524660469040021C501EDB +:10B130008241484610430A1CDA40E7E63C1C2C4397 +:10B1400058D0C043002851D16046451BAC458041D2 +:10B15000CF1B40423F1A141C98467FE68F4A944208 +:10B1600000D0CAE61EE600267DE700238CE73B1CE4 +:10B170002B43002C00D0BDE0002B00D1F5E063464E +:10B180000B4300D10EE663465B19AB428041CA19FE +:10B19000404217183A0200D4FCE0814A1D1C1740B7 +:10B1A0000134FFE53A1C2A43002C51D1002A00D07B +:10B1B00085E062460A4303D00F1C65469846F1E5D8 +:10B1C0000026002700257FE6181C0A1C2038C240F4 +:10B1D000202B00D1A7E04020C01A8140081C634604 +:10B1E0001843411E8841104300228FE66B4CA24257 +:10B1F00000D05AE70F1C6546141C9846D2E5002C77 +:10B200003AD1381C284371D0DB43002B18D0634857 +:10B2100082426BD0382B00DD9DE01F2B00DDA7E0C4 +:10B2200020203C1CC01A8440A1462C1C8246DC40D5 +:10B230004846044350468540681E8541DF4025430B +:10B24000654465459B417F185B42FF18141C64E60A +:10B25000002A19D162460A4377D00F1C65469846EA +:10B260004E4C9FE53D436F1EBD410027EDB232E7D6 +:10B27000041C0027002527E64848824236D080205B +:10B2800000045B420743C5E762460A4349D0802475 +:10B29000ED087807FA0824032843224209D0CE0893 +:10B2A000264206D162464F07381CD2081043984602 +:10B2B000321CD200470F1743C500384C72E5624676 +:10B2C0000A4300D16EE56246AE1AB5429241781A41 +:10B2D0005242821A100200D455E66246551BAC4514 +:10B2E0008041CA1B4042171A98465BE50F1C654611 +:10B2F000141C57E5002B34D063460B4311D0802437 +:10B30000ED087807FA08240328432242D1D0CB085D +:10B310002342CED162464F07381CD20810431A1C74 +:10B32000C7E71E4C3EE5002059E7041C3E1C203CAC +:10B33000E640341C20282BD04026301A87403D435D +:10B340006F1EBD4100272543C5E680270026FF0369 +:10B35000124C0025B8E53D436F1EBD410027EDB2FC +:10B360006EE70F1C65460D4C1CE50F1C654619E584 +:10B370001C1C381C203CE040041C202B0CD040201E +:10B38000C31A9F403D436F1EBD410027254357E729 +:10B390000027D4E71D1CFCE50027F3E7FF070000AA +:10B3A000FFFF7FFFF0B55F4656464D464446F0B47A +:10B3B0000F0387B098464D003B0BCC0F061C9246FE +:10B3C00081469B466D0D01946BD0664B9D4235D0F6 +:10B3D00080275B467F031F43F3009946624BFF00C3 +:10B3E000400F9C4607430023BB460026654400935C +:10B3F000424617035000D20F53463F0B400D904674 +:10B4000000D172E0574A904267D080235B031F430C +:10B410005346554A5B0FFF001F4394465346002195 +:10B42000DB0060444246624092462D1A0E430F2EC6 +:10B4300000D9A1E04D48B600805987465B461E43BF +:10B4400000D076E000239B469946023308260093FD +:10B45000CEE799464346BB4601930091009B022BE1 +:10B460006BD1019B9A460021534601220027894651 +:10B470001A403C4B00213F030C0D24053F0B274392 +:10B480003B4C1B0527401F437F00D2077F08174313 +:10B490004846391C07B03CBC90469946A246AB468C +:10B4A000F0BD03433ED05B46002B00D19CE15846E3 +:10B4B00001F020FB2823311C1B1A021C5F46D940D7 +:10B4C000083A97400B1C96403B439B46B1460023ED +:10B4D000284D00262D1A00938AE7524603213A434D +:10B4E000A0D10027002302219CE752463A4315D001 +:10B4F000002F00D185E1381C01F0FCFA021C282144 +:10B500005046891A131CC8405146083B99409F4039 +:10B510000B1C074317480021801A83E700270023EC +:10B5200001217FE700239B469946013304260093BF +:10B530005EE703230C2600935AE7032B00D13CE27D +:10B54000012B00D0BFE11A1C019B1A4000210023EF +:10B55000002789468EE700238027994600223F0373 +:10B56000004B87E7FF07000001FCFFFF1C1A0300E8 +:10B57000FFFF0F800DFCFFFFBB4500D951E100D15B +:10B580004CE14A46039200225C469046013D180E6B +:10B590003F0238431B020193030C994603041B0C22 +:10B5A0004946061C201C1F1C0093FEF755FA021C7E +:10B5B0007A4302904946201C171CFEF7D3FA039BDE +:10B5C00009041B0C19438F420CD9029B8919013BBA +:10B5D0008E4200D952E18F4200D84FE1029B891977 +:10B5E000023B0293CC1B201C4946FEF735FA009F14 +:10B5F000834647434946201CFEF7B4FA039A0B04DE +:10B600001404240C23439F420DD95A469B19013A36 +:10B610009E4200D930E19F4200D82DE102225242E1 +:10B6200094469B19E344029ADB1B17045A463A439B +:10B630009346019C170C220C101C04925A461104CC +:10B640002204120C141C090C7C4305924A4341430A +:10B6500047436118100C09188C4203D9802040021E +:10B66000844667440C0C12040804120C3C1981181F +:10B67000A34200D2E5E000D1DFE01F1B43465C1A85 +:10B68000A04592415242BF1AB74200D10EE1381C88 +:10B690004946FEF7E1F9009B029043434946381CB6 +:10B6A0009846FEF75FFA230C0F041F43B8450CD9E8 +:10B6B000029BBF19013BBE4200D9FBE0B84500D850 +:10B6C000F8E0029BBF19023B02934346FF1A49462A +:10B6D000381CFEF7C1F9009B039043434946381CD0 +:10B6E0009846FEF73FFA24040904240C21438845B8 +:10B6F0000CD9039B8919013B8E4200D9DCE08845B7 +:10B7000000D8D9E0039B8919023B03934346C91A29 +:10B71000029B039A1B04059C1A43100C13049146C8 +:10B72000221C049F1B0C5A4344437B437843E31879 +:10B73000170CDB199C4203D980246402A4466044A0 +:10B740001C0C12041B04120C00199B18814200D21D +:10B7500096E000D1FCE04A4601231A4391469B4BF8 +:10B76000EB18002B00DC99E04A4652070AD00F2262 +:10B7700049460A40042A05D0043149459241894688 +:10B78000524293445A46D20106D55A46904B1A402B +:10B7900080239346DB00EB188E4A934200DD62E67D +:10B7A0004A465946D208490711435A468946570224 +:10B7B000514601225B053F0B5B0D0A405AE6802093 +:10B7C0005A460003024208D0074206D107433F030E +:10B7D00099463F0B4246804B4CE65F4607433F038A +:10B7E0003F0B221C7C4B45E601F084F9031C203002 +:10B7F000272800DC5EE6083B9E400023B3469946BE +:10B8000065E6504601F076F9021C2032272A00DC5A +:10B8100075E657460838874000237BE6994500D2F5 +:10B82000AFE65A46594654084A46C80752080243EA +:10B8300003924A46D2079046A9E60027884500D3DE +:10B840001CE7019F5A46BC46E044B845BF417F42D1 +:10B85000BF19FF18013ABE4206D2BC425FD800D1E0 +:10B860009FE03F1B934609E7B742FAD1019B43454E +:10B87000F3D9371B934601E79346D4E60293B1E62A +:10B880004A468919013A8E4218D99146814200D020 +:10B8900061E7019A9A4200D05DE760E74F4F7F1B56 +:10B8A000382F13DD012253461A404FE601235B4235 +:10B8B000994654E7029308E7039327E788423CD868 +:10B8C00074D0914647E7019B9A4648E71F2F44DC16 +:10B8D000434B4A469C465B466544FA40AB401343A3 +:10B8E0004A46AA40151C6A1E95415A46FA402B4307 +:10B8F000171C5A0709D00F221A40042A05D01A1D16 +:10B900009A429B415B42FF18131C3A023ED55346B4 +:10B91000012200211A40002701238946AAE50223BB +:10B920005B429C46019AE3449446E04490459B4127 +:10B930005B429B19DF193F1BA0E6019F4A467C0032 +:10B94000BC42BF417F42BF19023AC91901949CE72A +:10B95000002B95D1002201929BE75A46214B5B1B9D +:10B96000DA40202F27D0204B9C465B466544AB40F5 +:10B9700049460B43591E8B411343072200271A40A7 +:10B9800007D00F2200271A40042AB8D17A077F0275 +:10B990003F0BDB0813439946012253461A4000230C +:10B9A00068E54145BBD89346002767E6019C9C4269 +:10B9B000C3D391466DE70023DAE780275B463F0358 +:10B9C0001F433F033F0B019A034B53E5FF03000066 +:10B9D000FFFFFFFEFE070000FF07000002FCFFFF65 +:10B9E0001E040000E2FBFFFF3E040000F0B55F46CE +:10B9F0004D4644465646F0B41F035C00DB0F9946A3 +:10BA00001B4B0E034D00C90F8446360B6D0D8B4644 +:10BA100090463F0B640D9D420CD0154B9C4210D0BC +:10BA20000123A54214D0181C3CBC90469946A2465E +:10BA3000AB46F0BD311C01230143F4D10C4B9C42B9 +:10BA4000EED13A430123002AEDD10123A542EAD1E8 +:10BA5000BE42E8D1C445E6D1CB4506D0002DE2D1A7 +:10BA60003043031C581E8341DDE70023DBE7C0465B +:10BA7000FF070000F0B5574645464E46E0B40F03B9 +:10BA80004E00C90F8A4632491D035C0084463F0BB5 +:10BA9000760D90462D0B640DDB0F8E420FD08C423D +:10BAA00039D0002E10D13843414241418946002C03 +:10BAB00027D12A4325D1002000290ED108E0391CC6 +:10BAC00001432ED1B44226D0002C0BD09A450DD084 +:10BAD0005346594201231943081C1CBC9046994601 +:10BAE000A246F0BD2A43F3D09A45F1D1A642EFDC3D +:10BAF0001ADA504641424841012341421943081C89 +:10BB0000EBE74A46002AE1D058425841012241421F +:10BB10001143081CE1E7291C114302D1002EC2D0B9 +:10BB2000D4E702204042D8E7AF42D1D809D0002064 +:10BB3000AF42D2D2504641424841012340421843CD +:10BB4000CBE7C445C4D80020C445F3D3C5E7C046FD +:10BB5000FF070000F0B55F464D4644465646804616 +:10BB6000F0B4061C0803000B84462C484C001F034D +:10BB70005D00C90F640D8B4691463F0B6D0DDB0FC9 +:10BB8000844212D0854225D0002C14D161460E4348 +:10BB900070424641002D35D0002E21D058425841E8 +:10BBA000012143420B43181C0EE061460220314341 + +:10BBB0000AD1A5420ED0002D12D13A4310D15B46D6 +:10BBC000594201231943081C3CBC90469946A246A1 +:10BBD000AB46F0BD391C02201143F5D1002CD5D065 +:10BBE0009B45ECD1AC42EADC05DBBC45E7D80FD085 +:10BBF0000020BC45E8D2584641424841414201201C +:10BC00000843E1E73A43C7D10020002EDCD1D6E754 +:10BC1000C845D4D80020C845EDD3D5E7FF070000BC +:10BC2000F0B55F4656464D464446F0B4051C061C2A +:10BC3000080387B099464F00030BCC0F92469B46F2 +:10BC40007F0D019467D06C4B9F4236D080205B46BD +:10BC500040031843C0006B0F1843684B83469C4653 +:10BC600000239846EE00674400934B4649461D0367 +:10BC7000C90F5B0052462D0B5B0D894600D16EE06B +:10BC80005D498B4264D080205C4940038C46002192 +:10BC90000543ED00500F0543D20063444846FF18AA +:10BCA0007B1C9A46009B604002900B430F2B00D9EF +:10BCB000ACE053489B00C3589F465B461D4300D0F1 +:10BCC00082E00823009300239B4602330026984617 +:10BCD000CBE7029B01934346022B59D10124002557 +:10BCE0000026019B1C40444B00212D030A0D120528 +:10BCF0002D0B1543434A1B0515401D436D00E407FA +:10BD00006D082543301C291C07B03CBC9046994661 +:10BD1000A246AB46F0BD2B434ED05B46002B00D174 +:10BD200085E1584600F0E6FE021C2823291C9B1AD8 +:10BD3000161C5846D940083EB0400B1CB540034382 +:10BD40009B462E1C0023304F0093BF1A98468CE769 +:10BD5000514629432ED10025002202219EE751465B +:10BD6000294323D0002D00D154E1281C00F0C2FE4D +:10BD7000031C28215046C91A1A1CC8405146083ACB +:10BD8000914095400A1C05431F480021C31A85E7CE +:10BD9000032B00D1C2E1012B00D06DE14446019B91 +:10BDA00000251C40E4B2002300269DE70025002268 +:10BDB000012173E7032171E70423009300239B46CD +:10BDC00001330026984650E70C230093093B984620 +:10BDD0004BE7802500242D030026074B84E74B46C4 +:10BDE000AB46161C0193884675E7029BAB46161CB2 +:10BDF000019388466FE7C046FF07000001FCFFFF84 +:10BE00005C1A0300FFFF0F800DFCFFFF330C3604AC +:10BE1000360C9C46331C140C1204120C53439846E7 +:10BE2000634653439946634663430193331C41463B +:10BE30006343090C4B445B18994505D980204002A7 +:10BE40008146019949440191190C03914146090425 +:10BE5000090C1B045B1804932B0C9846331C2D040F +:10BE6000290C4B43604600934346654658435E4366 +:10BE7000009B4D431B0C9946AE194E448446B54277 +:10BE800003D980235B029946CC44350C2B1C0398C4 +:10BE9000634484460593009B36041B041B0CF31873 +:10BEA0009C446046039058460504060C280C8446C2 +:10BEB0005043351C81466046654344434846000C68 +:10BEC0008346724314195C44A24203D98022520271 +:10BED00093465D44220CAD184A461204120C240409 +:10BEE0004046A41862464A43714346436046009662 +:10BEF000464670438046100C84468844E0444145E1 +:10BF000005D9802149028C4600996144009101982D +:10BF100003998446614499429B415B429946059846 +:10BF2000434684461204120C1B049B1863449C462F +:10BF3000AB4683429B4140460A19CC44A242894108 +:10BF4000E344CC45B6415C46000C8046494276420B +:10BF50005B426418334398448C428941AB459B4112 +:10BF600049425B4219430D1C009B4544EE18760282 +:10BF7000E50D2E43B346049B56021E43731E9E419D +:10BF80005B46D20D324366021643DB010AD501231C +:10BF9000334076081E435B46DB071E435B465B0867 +:10BFA0009B465746634BFB18002B5ADD720709D09E +:10BFB0000F223240042A05D0321DB242B6417642E9 +:10BFC000B344161C5A46D20106D55A465A4B1A405B +:10BFD00080239346DB00FB18584A934234DD01244A +:10BFE000029B00251C400026554B7DE680205B46C9 +:10BFF0000003034208D0054206D105432D032D0B53 +:10C000004C46161C4E4B6FE65D4605432D032D0B2B +:10C010004B4B69E6504600F06DFD031C2033272B87 +:10C0200000DCA6E65546083885400022ACE6281C10 +:10C0300000F060FD021C2032272A00DC75E608387B +:10C0400085400026AB467DE65A46F6085207164361 +:10C050005A4601245502029A5B052D0B5B0D1440D4 +:10C0600042E6384DED1B382D0ADD0124029B0025E8 +:10C070001C400026002337E6019B5746029391E7B8 +:10C080001F2D25DC304B321C9C466744BE405B466E +:10C09000BB40371CEA407E1EB74113433B431E1C86 +:10C0A0005B46EB401D1C730709D00F233340042B64 +:10C0B00005D0331DB342B6417642AD191E1C2B028A +:10C0C00020D50124029B00251C40002601230BE6FD +:10C0D0005A461E4BDB1BDA40131C202D1CD01C4A79 +:10C0E00094465A466744BA40171C3E43721E964116 +:10C0F0001E4307230025334007D00F23002533407C +:10C10000042BD6D16B076D022D0B0124F6081E43BC +:10C11000029B1C400023E7E50027E6E780255B46FD +:10C1200001242D031D43019B2D0323401C1C2D0BBB +:10C13000034BD9E5FF030000FFFFFFFEFE070000F1 +:10C14000FF07000002FCFFFF1E040000E2FBFFFFF0 +:10C150003E040000F0B54D4644465F465646F0B4F6 +:10C160000E1C111C3203520A470F1743C5001A0355 +:10C170005800DB0F9946520A4B0F83B01A43CB008D +:10C180000193CF4B7400F60F640DB046400D9842FA +:10C1900000D1E8E00123494659400B1C9E4200D1E2 +:10C1A000B1E0261A002E00DC1CE1002842D1131C4D +:10C1B00001990B4300D0E6E06B0700D18EE00F231E +:10C1C0002B40042B00D189E02A1DAA42AD418023D7 +:10C1D000012641466D427F191B043B400E40151C51 +:10C1E000002B00D183E0B64B01349C4200D116E114 +:10C1F0003A1CB44BED081A4050076405520205433F +:10C20000120B640D002112030B0D1B056405120BAC +:10C210001A436308AC4CF60714401C4364006408DE +:10C220003443281C211C03B03CBC90469946A246CE +:10C23000AB46F0BDA24B9C42BED080231B041A43E8 +:10C24000382E00DD03E11F2E00DD3FE12020831B9F +:10C250009946131C49468B409C46019B6046F3401F +:10C2600003430198F2408840011C481E81410B4362 +:10C27000EB1A9D4280411D1CBA1A4042171A3B021C +:10C2800000D4A8E07A02560A002E00D1CAE0301C81 +:10C2900000F030FC031C083B1F2B00DDCBE0282204 +:10C2A000291C121AD1409E400A1C9D4032439C42D8 +:10C2B00000DDC8E01C1B671C1F2F00DDEDE01F2305 +:10C2C000291C1C1B131CA540A340F9406C1EA54152 +:10C2D000FA4019430D43171C00246DE78023012603 +:10C2E00042461B043B401640002B00D07BE7744BBA +:10C2F000ED0878070543FA089C423BD01203640519 +:10C30000120B640D7EE7231A9A46002B00DCA5E091 +:10C31000002844D06A48844200D14DE780200004C0 +:10C3200002435346382B00DC1CE1019B1A43511E8B +:10C330008A41D1B200224919A94280410D1CD2196B +:10C34000404217183B0246D55D4B01349C4200D158 +:10C3500069E101205B4A6B083A4028401843D50741 +:10C360000543570828E7131C01990B4300D111E737 +:10C370004B4613E72B1C134351D080231B031A4356 +:10C380001203120B3EE7013E002E00D080E0691A36 +:10C390008D429B41BA1A5B42D71A0D1C6FE7101CE5 +:10C3A000019B184300D107E701235B429C46E2440E +:10C3B0005346002B00D002E1019BD2195919A94222 +:10C3C0009B415B42D7180D1CBCE76346034300D179 +:10C3D00028E1071C65466B0700D0F0E601264346BE +:10C3E0001E4084E7002E00D081E0601C4005400D17 +:10C3F000012800DC07E10199681A84466545B641C9 +:10C40000B81A7642861B300200D4A1E08C464D1B40 +:10C41000AC458941D21B4942561A984634E700225E +:10C420000025EFE6281C00F065FB2030031C083BCC +:10C430001F2B00DC33E7021C283A95402A1C0025FC +:10C440009C4200DC36E71F4FE41A1740B4E6019B1C +:10C450001A43511E8A41D3B2002209E7002B00D0B3 +:10C4600001E1601C43055B0D012B00DCB0E0144BC7 +:10C47000984200D11EE1019BD2195919A9429B4152 +:10C480005B42D2184908D5070D435708041C93E6B0 +:10C490000B4B9C4200D0D3E68EE6211C131C1F39A7 +:10C4A000CB40191C202F00D18EE03F231C1BA24043 +:10C4B00015436A1E954100270D4300248BE7C046B3 +:10C4C000FF070000FFFF7FFFFFFF0F80331C101CE2 +:10C4D000203BD840202E79D040239B1B9A40131C30 +:10C4E000019A1343591E8B4100220343C0E6002CDE +:10C4F00053D0C74CA04200D1B0E08024714289469D +:10C50000240427434946382900DDCDE01F2900DDFA +:10C5100059E120243E1C611A8E408A46B0464946A5 +:10C520002E1CCE405146B4468D4064464646494690 +:10C5300026436C1EA541CF4035430199D71B8C463D +:10C540004D1BAC4592415242BF1A041C984696E6D8 +:10C5500063466546334300D096E600260027002454 +:10C560000025C4E61F2B61DC2020C31A9B46131C48 +:10C5700059468B4051469946019BCB409C464B46C1 +:10C58000604603439C465B46019999406346481EBA +:10C59000814119435346DA40CDE63C1C2C435DD023 +:10C5A000F1438946002955D10199D21B8C464D1B78 +:10C5B000AC4589414942571A041C98465FE69448A5 +:10C5C000844200D0ADE6F7E5002271E7002387E75B +:10C5D0003B1C2B43002C00D0DAE0002B00D113E1F0 +:10C5E000131C01990B4300D1E6E54919A9429B416F +:10C5F000D2195B42D7183B0200D421E1854B0D1CB8 +:10C600001F40041CD8E5381C2843002C40D10028CA +:10C6100000D083E0101C0199084303D0171C0D1CA7 +:10C620009846C9E500260027002560E65046131C01 +:10C630002038C340181C5346202B00D1C1E04023B2 +:10C6400051465B1A9A40019911434A1E91410022BA +:10C65000014370E66E4CA04200D053E7171C019DC9 +:10C66000041C9846A8E5002C28D13C1C2C4300D182 +:10C670008AE0DB439A46002B00D082E0019BD2196E +:10C680009C4665449D42894149425718041C59E61D +:10C6900000285BD1101C0199084300D1A4E0171CAD +:10C6A0000D1C98465A4C87E53D436F1EBD4100273F +:10C6B000EDB242E7041C0027002518E6544CA042C6 +:10C6C00062D0534680245B429A4624042743534653 +:10C6D000382B00DD8EE01F2B00DD9DE02024E31AC7 +:10C6E0009B463B1C59468B40514699462B1CCB40E0 +:10C6F0009C464B46644623439C465B469D406346AE +:10C700006C1EA541CF401D43019BBF189C4665444C +:10C710009D4292415242BF18041C13E6101C01991D +:10C72000084300D148E5681A844685428041BE1A14 +:10C730004042301A060200D447E68C464D1BAC45F9 +:10C740008941D21B4942571A984635E5101C019978 +:10C75000084334D080247807ED08FF0824032843D9 +:10C76000274208D0D608264205D1C90852070A43F5 +:10C77000101C371C9846FF00420F1743C500244C7D +:10C780001AE5234CA042A2D1171C019D041C13E5FD +:10C79000002B35D0131C01990B4310D0802478074F +:10C7A000ED08FF08240328432742E4D0D30823429E +:10C7B000E1D1C90852070A43101C1F1CDBE7144CC7 +:10C7C000FAE400223FE74C463E1C203CE640494646 +:10C7D000341C202932D04026761AB7403D436F1EC4 +:10C7E000BD4100272543A8E680270026FF03084C0B +:10C7F00000257CE53D436F1EBD410027EDB283E778 +:10C80000171C019D024CD7E4171C019DD4E4C046BF +:10C81000FF070000FFFF7FFF54463B1C203CE34026 +:10C820001C1C5346202B0DD0402351465B1A9F40C1 +:10C830003D436F1EBD410027254365E70027CDE737 +:10C840000D1CC8E50027F3E70B0330B5134C1A0B9A +:10C850004B00051C5B0DC90F0020A34210DD1048E2 +:10C8600083420EDC80200F4C40030243E41A1F2C4D +:10C870000ADD0D48C31ADA40131C484243405818D9 +:10C8800030BD0A4BC818FBE7281CE040084CA44602 +:10C8900063449A40131C0343EFE7C046FE030000C5 +:10C8A0001D0400003304000013040000FFFFFF7F9D +:10C8B000EDFBFFFF38B5041E16D0C50F00D0444273 +:10C8C000201C00F017F9174B1B1A0A2821DC021C48 +:10C8D000211C153291400A1C0B21081AC4405B052B +:10C8E0002403240B5B0D03E0002500230024002219 +:10C8F0000021101C24030A0D1205240B14430A4ABC +:10C900001B0514401C436400ED0764082C43211CE4 +:10C9100038BD0B3884405B052403240B5B0D0022DB +:10C92000E6E7C0461E040000FFFF0F804200120E23 +:10C93000511C38B5C9B243025D0AC40F012915DD87 +:10C94000E02189008C466D071B0B62440021281CE6 +:10C950000D0D2D052B431C4D52052B405208134342 +:10C960005B00E4075B082343191C38BD002A15D17E +:10C97000002D1FD0281C00F0BDF80A281DDC0B2359 +:10C980002A1C1B1ADA40131C021C153295400F4A50 +:10C990001B03121A52051B0B520DD7E7002D06D0B0 +:10C9A00080221B0B120313436D07094ACEE7084A86 +:10C9B0000023CBE700220023C8E7031C0B3B9D406C +:10C9C0002B1C0025E3E7C046FFFF0F808903000012 +:10C9D000FF07000070B50B034D00440F6D0D5B0A9F +:10C9E00023436C1C6405C90FC200640D012C2ADDB1 +:10C9F0003B4C2C19FE2C1ADC002C35DD8001451E29 +:10CA0000A841DB000343520F13435A0704D00F22FF +:10CA10001A40042A00D004338022D2041A4027D0BE +:10CA20000134FF2C03D09B015B0AE4B201E0FF2438 +:10CA300000235B02E4055B0A23435B00C9075B0834 +:10CA40000B43181C70BD002D06D113430ED10024DA +:10CA50005B025B0AE4B2ECE71A43E8D08020DB001B +:10CA600080040343FF24D0E717340CDA05230024A5 +:10CA7000DB08FF2CECD1002B2DD08022D2031343F6 +:10CA80005B025B0AD5E78024164824042343401B3D +:10CA90001F280DDC144CA4466544AB401C1C131C21 +:10CAA000AB405D1EAB41C240234313430024ACE7BF +:10CAB0001E1C0E4C641BE640341C20280DD00C4874 +:10CAC00084466544AB401D1C2A43531E9A41131CE7 +:10CAD0002343002499E70023ABE70025F4E7C04691 +:10CAE00080FCFFFF9E03000082FCFFFF7E0300002E +:10CAF000A2FCFFFF1C2101231B04984201D3000C60 +:10CB000010391B0A984201D3000A08391B099842C0 +:10CB100001D30009043902A2105C40187047C046D6 +:10CB200004030202010101010000000000000000F6 +:10CB3000F0B544465F4656464D46F0B41C1C85B0E1 +:10CB4000002900DAA9E00F1C0021061C8846101CF1 +:10CB5000191C002C00DA97E0341C3D1C82468946E3 +:10CB6000B94273D870D04946504600F085F98346E3 +:10CB7000391C301C00F080F95B46181A031C8346F0 +:10CB8000203B9C4600D59CE00023002251460092A9 +:10CB9000019363469940019151468140019B009168 +:10CBA000BB4200D983E000D17EE0009A019B341C97 +:10CBB0003D1CA41A9D416346002B00DA9AE0002632 +:10CBC00000270296039701369E4003960126864071 +:10CBD0000296002800D171E00099019AD307994686 +:10CBE0004B464E081E435708002301220CE0AF427B +:10CBF00001D1A6420AD8A41BBD4124196D410138B8 +:10CC0000A4185D41002806D0AF42F0D9013824199C +:10CC10006D410028F8D12022029E039F5B465242BC +:10CC200036196F4199185AD4281CC8402C1C5B46F1 +:10CC3000DC40002968DB041C8C40231C59468840DA +:10CC4000021CB61A9F4103E0B0428CD9002600278F +:10CC500041464B1E9941002300910193009A019B8C +:10CC6000002554429D41331C6340181C3B1C6B4003 +:10CC7000191C009B019CC018614105B03CBC90464A +:10CC80009946A246AB46F0BD4346DB430C1C984692 +:10CC9000131C00215842A1415EE7002746428F4104 +:10CCA00001214942884652E7B14200D87DE700267B +:10CCB000002702960397002800D08DE7029E039F6D +:10CCC000C6E720215346091ACB400022191C002335 +:10CCD000009201934B4683400B4301935CE75A4615 +:10CCE00020239B1A2A1C9A40201C131C5A46D04011 +:10CCF00018439BE720260027331A00260296039745 +:10CD00000127DF40039761E75B4620215D46C91A92 +:10CD1000031CAC40CB40191C231C0B438EE7C046C0 +:10CD2000F0B545464E465746E0B4041C82B00D1C93 +:10CD3000914698468B4262D85FD04146484600F003 +:10CD40009BF8291C061C201C00F096F82023311AA1 +:10CD50005B428A46C81865D44B4683401F1C4B462D +:10CD60008B401E1CAF4258D855D0A41BBD41002893 +:10CD700000DA77E000220023009201930132824022 +:10CD8000019201238B40009300293CD0FB07984679 +:10CD9000404672087B080243012600270CE0AB42A4 +:10CDA00001D1A2420AD8A41A9D4124196D4101392A +:10CDB000A4197D41002906D0AB42F0D901392419CC +:10CDC0006D410029F8D12022009801995346524222 +:10CDD000001969419E183AD42F1CF7405346DD4094 +:10CDE000002E29DB3C1CB440231C5446A7403A1CAF +:10CDF000801A99410090019105E082429DD900235B +:10CE00000024009301940098019902B01CBC904644 +:10CE10009946A246F0BDA342A7D900220023009262 +:10CE20000193B1E720224B46521AD3401A1C4346C5 +:10CE30008B401F1C174392E7534620245646E41AA2 +:10CE40003B1CB540E3401C1C2B1C2343CDE7524642 +:10CE500020239B1A2A1C9A40271C131C5246D74099 +:10CE60001F43BBE720230022581A0023009201939E +:10CE70000132C240019284E710B5002903D1FFF7C7 +:10CE800039FE203002E0081CFFF734FE10BDC0461A +:10CE9000F0B54746754B440080B4051C071C640878 +:10CEA0009C420BDDFF23DB059C4200DD72E0002885 +:10CEB00000DC9DE06E4804BC9046F0BD6D4B9C428A +:10CEC00079DC6D4B9C4269DD01267642291C281CC9 +:10CED000FDF7E0FB80464146FDF7DCFB6749041C9B +:10CEE000FDF7D8FB6649FDF767F8211CFDF7D2FB7B +:10CEF0006449FDF761F8211CFDF7CCFB6249FDF7A1 +:10CF00005BF8211CFDF7C6FB6049FDF755F8211CB5 +:10CF1000FDF7C0FB5E49FDF74FF84146FDF7BAFB50 +:10CF20005C498046201CFDF7B5FB5B49FDF7E4FC3E +:10CF3000211CFDF7AFFB5949FDF7DEFC211CFDF775 +:10CF4000A9FB5749FDF7D8FC211CFDF7A3FB554968 +:10CF5000FDF7D2FC211CFDF79DFB011C731C49D081 +:10CF60004046FDF729F8291CFDF794FB4E4BB6000F +:10CF7000F158FDF7C1FC291CFDF7BEFC4B4B011C11 +:10CF8000F058FDF7B9FC002F95DA80231B069C466C +:10CF9000604490E7291CFDF70FF88CE74449FDF742 +:10CFA0000BF8FE218905FCF73DFF031C281C002B14 +:10CFB00000D080E788E700F013F93E4B051C9C4247 +:10CFC00023DC3D4B9C423FDC291CFCF7F5FFFE2196 +:10CFD0008905FDF791FC8021041CC905281CFCF77C +:10CFE000EBFF011C201CFDF763F90026051C6DE713 +:10CFF000324860E74046FCF7DFFF291CFDF74AFB9B +:10D00000011C281CFDF778FC55E72D4B9C4214DCD5 +:10D01000FF218905FDF770FCFF21041C8905281CF0 +:10D02000FDF738FBFE218905FCF7C6FF011C201C1B +:10D03000FDF73EF90226051C48E7291C2148FDF7AB +:10D0400037F90326051C41E7FE218905FDF754FC4D +:10D05000FE21041C8905281CFCF7AEFF011C201CC6 +:10D06000FDF726F90126051C30E7C046FFFF7F507B +:10D07000DB0FC93FFFFFDF3EFFFFFF30D769853C75 +:10D0800059DA4B3D356B883D6E2EBA3D2549123E2F +:10D09000ABAAAA3E21A215BD6BF16E3D95879D3DC1 +:10D0A000388EE33DCDCC4C3E9C1A0300AC1A0300F5 +:10D0B000CAF24971FFFF973FFFFF2F3FDB0FC9BF48 +:10D0C000FFFF1B40000080BFF0B54746430080B41F +:10D0D0005F081B0E7F3B051C1C1E162C1DDC8046AA +:10D0E000002B23DB1B4F061C1F41074211D01A499E +:10D0F000FCF762FF0021FCF795FE002809D0002D07 +:10D1000004DD80231B0423419846A8444346BB43C7 +:10D110001E1C301C04BC9046F0BD104B061C9F42E8 +:10D12000F7D9291CFCF748FF061CF2E70A49FCF76F +:10D1300043FF0021FCF776FE002806D0002D06DB19 +:10D14000002F02D0FE26B605E3E72E1CE1E780267D +:10D150003606DEE7FFFF7F00CAF24971FFFF7F7FDF +:10D1600000B51D4A430083B0011C5B08934217DDE4 +:10D170001A4A934203DDFDF7BFFB03B000BD6946C9 +:10D1800002F000FA03231840012816D002280BD021 +:10D1900000281CD000980199012203F037F8ECE731 +:10D1A000002102F0D5FBE8E70098019902F0D0FBDE +:10D1B00080231B069C466044DFE70199009801220A +:10D1C00003F024F880231B069C466044D5E70098B2 +:10D1D000019902F0BDFBD0E7D80F493FFFFF7F7FE9 +:10D1E000400040087047C046F0B54746430080B451 +:10D1F0005F081B0E7F3B051C1C1E162C18DC80468E +:10D20000002B1EDB1B4F061C1F4107420CD01A4986 +:10D21000FCF7D2FE0021FCF705FE002804D0002D0B +:10D220001DDB4346BB431E1C301C04BC9046F0BDB6 +:10D23000124B061C9F42F7D9291CFCF7BDFE061CA9 +:10D24000F2E70D49FCF7B8FE0021FCF7EBFD0028E2 +:10D2500003D0002D09DB0026E6E72E1CE4E780233F +:10D260001B0423419846A844DBE7002FF5D0044E69 +:10D27000DAE7C046FFFF7F00CAF24971FFFF7F7FF8 +:10D28000000080BF43005B080220002B00D17047E4 +:10D29000084A02309918084A9142F8D9074A591E9B +:10D2A00001389142F3D9064A9446634458425841A2 +:10D2B000EDE7C046000080FFFFFFFF7EFEFF7F001E +:10D2C0000000808038B50C1C00212160104943000B +:10D2D000051C5B08021C8B4218DC002B16D00D4984 +:10D2E00000228B4208DC9821C905FDF7D3F91922E9 +:10D2F000051C43005B085242DB157E3B9B18FC205B +:10D300002A1C2360044B80051A400243101C38BDC0 +:10D31000FFFF7F7FFFFF7F00FFFF7F8038B5041C8A +:10D320000D1C03F0ABFB002805D0201C0021FCF7EE +:10D330005FFD002801D0201C38BD201C291C00F0F6 +:10D3400055F8041C03F09AFB002805D0201C00218E +:10D35000FCF74EFD0028EED003F0ACFB2223036067 +:10D36000E9E7C04608B543001B0E7F3B162B0DDCDA +:10D37000002B0FDB094A1A41131C024206D0021C83 +:10D380009A430A60111CFDF7B7FA02E00860C00F6B +:10D39000C00708BDC30FDB070B60FAE7FFFF7F0084 +:10D3A00043001B0E7F3B10B5162B0DDC002B12DB50 +:10D3B0000D4C011C1C41044204D08022D2031A41AE +:10D3C0001118A143081C10BD011C802BFAD1FCF7D9 +:10D3D000F3FD011CF6E7C10FC9070133F2D1FE23AB +:10D3E0009B051943EEE7C046FFFF7F00430070B581 +:10D3F0000D1C041C5E08011C002E10D0274886421C +:10D400000FD827498E4211D9211C1B0E5B19FE2B08 +:10D4100029DC002B18DD234CDB0521401943081CB7 +:10D4200070BD201CFCF7C8FD011CF8E79821201CEA +:10D43000C905FDF72FF91C4B041C9D421CDB430062 +:10D440001B0E011C193BE1E71A1C163219DA174BA7 +:10D450009D4208DC211C164803F00AFB1449FDF725 +:10D4600019F9011CDBE7211C124803F001FB1149EB +:10D47000FDF710F9011CD2E70D49FDF70BF9011C6E +:10D48000CDE7084819330140DA050A43CC21101CC6 +:10D490008905FDF7FFF8011CC1E7C046FFFF7F7F4C +:10D4A000FFFF7F00FFFF7F80B03CFFFF50C3000005 +:10D4B0006042A20DCAF2497100B51E4A430083B012 +:10D4C000011C5B0893421ADD1B4A934203DDFDF702 +:10D4D00013FA03B000BD694602F054F80323184064 +:10D4E00001281BD002280FD000281CD000980199D9 +:10D4F00002F02EFA80231B069C466044E9E70021D7 +:10D50000002202F083FEE4E700980199012202F074 +:10D510007DFE80231B069C466044DAE70199009853 +:10D5200002F016FAD5E700980199012202F06EFE8A +:10D53000CFE7C046D80F493FFFFF7F7F00B50F4AB6 +:10D54000430083B0011C5B08934212DD0C4A9342F6 +:10D5500003DDFDF7D1F903B000BD694602F012F812 +:10D56000012210404000121A0199009802F0C8FEF2 +:10D57000F1E70021012202F0C3FEECE7DA0F493F98 +:10D58000FFFF7F7F08B500F057FC08BDF0B54746A8 +:10D5900080B48CB0041C0D1C00F022FD274B061C2F +:10D5A00098461B780F1C5BB201330DD0201C291C40 +:10D5B00003F086F9002807D0201C291C0022002334 +:10D5C000FCF7E2FB002805D1301C391C0CB004BC70 +:10D5D0009046F0BD01230293194B069407950393DF +:10D5E00000230A934346049405951C78002C0FD120 +:10D5F000002300240893099402A803F08FF900285F +:10D6000010D00A9B0193002B11D1089E099FDBE7E4 +:10D6100000200021021C0B1CFDF7C4FE089009919C +:10D62000022CE9D103F046FA21230360E9E703F075 +:10D6300041FA0A9B01930360E7E7C0460C01002012 +:10D64000BC1A030070B58CB0051C00F0BFFD0023B0 +:10D65000224E041CF356013304D0281CFFF712FE9F +:10D66000002802D1201C0CB070BD281CFFF7B8FDAB +:10D67000FE218905FCF7D6FB0028F3D00123029395 +:10D68000174B281C039300230A93FFF74FF90690CA +:10D69000079104900591134803F042F90023F356D3 +:10D6A00008900991022B0ED002A803F037F9002848 +:10D6B00009D00A9B0193002B0AD108980999FFF71A +:10D6C00089F9041CCEE703F0F5F921230360F0E7A4 +:10D6D00003F0F0F90A9B01930360EEE70C010020D0 +:10D6E000C41A0300E81A030070B58CB0051C00F0E2 +:10D6F000D5FE0023224E041CF356013304D0281C0F +:10D70000FFF7C0FD002802D1201C0CB070BD281C02 +:10D71000FFF766FDFE218905FCF784FB0028F3D0A6 +:10D7200001230293174B281C039300230A93FFF74E +:10D73000FDF80690079104900591134803F0F0F866 +:10D740000023F35608900991022B0ED002A803F093 +:10D75000E5F8002809D00A9B0193002B0AD108980C +:10D760000999FFF737F9041CCEE703F0A3F9212349 +:10D770000360F0E703F09EF90A9B01930360EEE774 +:10D780000C010020CC1A0300E81A030008B500F0D1 +:10D79000DBFF08BDF0B58BB0051C01F069F8002374 +:10D7A000304E041CF356013336D0281C03F066F9C2 +:10D7B000002831D0281C2C49FCF734FB071E2ED141 +:10D7C000281C2A49FCF71AFB002825D004230093C3 +:10D7D000274B281C01930897FFF7A8F80023002285 +:10D7E000069207930023F3566C460490059102902D +:10D7F0000391022B30D0201C03F090F800282BD08E +:10D80000236A002B03D003F055F9236A0360A06953 +:10D81000E169FFF7DFF8041C201C0BB0F0BD032307 +:10D820000093134B281C019300230893FFF77EF805 +:10D8300033786C460490059102900391002B05D13A +:10D84000E0220C4B120606920793D4E700200A4907 +:10D8500006900791022BCED103F02CF9222303600E +:10D86000CEE7C0460C0100208071B142B5F1CFC2B5 +:10D87000D41A0300FFFFEF470000F07FF0B58DB032 +:10D88000061C0D1C01F0F0F800232B4F041CFB5666 +:10D89000013304D0281CFFF7F5FC002802D1201C1E +:10D8A0000DB0F0BD301CFFF7EDFC0028F7D0281CB0 +:10D8B0000021FCF79DFA0028F1D0012302931F4BB1 +:10D8C000301C039300230A93FFF730F8031C0C1C51 +:10D8D000281C0093019404930594FFF727F83C78E3 +:10D8E00006900791002C17D000200021021C0B1C71 +:10D8F000FDF758FD08900991022C11D103F0DAF8D8 +:10D90000212303600A9B0093002B0FD108980999EB +:10D91000FFF760F8041CC2E7009B019C0893099480 +:10D9200002A802F0FBFF0028ECD1E7E703F0C2F801 +:10D930000A9B00930360E9E70C010020DC1A030056 +:10D9400070B58CB0041C01F015F90023364E051C8F +:10D95000F35601330ED0201CFFF794FC031C281C47 +:10D96000002B07D0201C0021FCF75CFA031C281CAC +:10D97000002B01D00CB070BD2C4A201C03920A93DE +:10D98000FEF7D4FF35780690079104900591002D9D +:10D9900012D1E022264B1206201C00210892099386 +:10D9A000FCF726FA002835D10123029302A802F0E1 +:10D9B000B5FF002812D10DE000221E4B201C0021D3 +:10D9C00008920993FCF714FA002815D10123029359 +:10D9D000022DEBD103F06EF821230360164802F00C +:10D9E0009FFF089009910A9B0193002B15D108987D +:10D9F0000999FEF7EFFFBDE702230293022D04D041 +:10DA000002A802F08BFF0028EDD103F053F8222387 +:10DA10000360E8E702230293F2E703F04BF80A9B66 +:10DA200001930360E3E7C0460C010020E41A030001 +:10DA3000FFFFEFC70000F0FFE81A0300F0B546460D +:10DA40004F46C0B48BB0051C0C1C01F0FBF9002341 +:10DA5000C74F8046FB56061C013304D0201CFFF73D +:10DA600011FC002805D1301C0BB00CBC9046994627 +:10DA7000F0BD281CFFF706FC8146002833D1201C8E +:10DA80000021FCF7B5F90028EDD001230093B94B34 +:10DA9000281C01934B460893FEF748FF0290039120 +:10DAA000201CFEF743FF0022B34B6E4606920793FD +:10DAB0000023FB56049005915A1C0ED0022B0CD06B +:10DAC000301C02F02BFF002800D1AEE0336A002B9F +:10DAD00003D002F0EFFF336A0360B069F169FEF72B +:10DAE00079FF061CBFE7281C0021FCF781F90028FC +:10DAF00024D0201C0021FCF77BF9804600285AD056 +:10DB0000012300939B4B281C019300230893FEF7ED +:10DB10000DFF02900391201CFEF708FF0023002256 +:10DB2000069207930023FB566E4604900591002B46 +:10DB3000C6D00022904B06920793CEE7404602F0F3 +:10DB40009DFF8146002875D040460021FCF750F922 +:10DB50004646002800D186E7281C02F08FFF464683 +:10DB6000002800D17FE7201C02F088FF002800D1A8 +:10DB700079E7042300937F4B281C0193002308932B +:10DB8000FEF7D4FE02900391201CFEF7CFFE002387 +:10DB90000022069207930023FB566E4604900591DF +:10DBA000022B76D0684602F0B9FE002871D0336AA5 +:10DBB000002B92D08DE7201C02F060FF002800D1DE +:10DBC00051E7201C0021FCF719F9002800D14AE791 +:10DBD00001230093674B281C019343460893FEF7EB +:10DBE000A5FE02900391201CFEF7A0FE3B786E4636 +:10DBF00004900591002B45D1002200230692079343 +:10DC0000301C02F08BFE0028D1D102F053FF2123FB +:10DC10000360CCE700200021021C0B1CFDF7C2FBB7 +:10DC200006900791022C00D04AE702F043FF21231F +:10DC300003604BE7281C02F021FF002884D0201C41 +:10DC400002F01CFF002800D17EE74046FFF71AFBD8 +:10DC50006E46002822D101230093464B0890281CD1 +:10DC60000193FEF763FE02900391201CFEF75EFE17 +:10DC70003C7804900591002CCCD100220023069220 +:10DC800007931DE700203D4906900791022BBCD069 +:10DC9000B6E702F00FFF2223036088E70323009317 +:10DCA000344B281C01934B460893FEF73FFE02902D +:10DCB0000391201CFEF73AFE0023FB5604900591C9 +:10DCC000002B19D1E0222E4B1206281C00210692AF +:10DCD0000793FCF793F8002830D10023FB56022B62 +:10DCE00005D0301C02F01AFE002800D0EEE602F04B +:10DCF000E1FE22230360E9E60022224B281C0021DA +:10DD000006920793FCF77AF80028E6D0FC21201C45 +:10DD10008905FCF7BFFCFEF709FE041C0D1C02F090 +:10DD200005FE021C0B1C201C291CFCF727F80028F0 +:10DD3000D3D10022114B06920793CEE7FC21201C81 +:10DD40008905FCF7A7FCFEF7F1FD041C0D1C02F091 +:10DD5000EDFD021C0B1C201C291CFCF70FF80028F1 +:10DD6000BBD1E022084B120606920793B5E7C046E6 +:10DD70000C010020EC1A03000000F03F0000F0FF4F +:10DD8000FFFFEF470000F07FFFFFEFC770B58CB0DB +:10DD9000051C01F081FD0023254E041CF3560133C0 +:10DDA0000AD0281CFFF76EFA002805D0281C002195 +:10DDB000FCF724F8002802D1201C0CB070BD012310 +:10DDC00002931C4B281C039300230A93FEF7AEFD1D +:10DDD00034780690079104900591002C12D100220E +:10DDE00000230892099302A802F098FD002813D09E +:10DDF0000A9B0193002B14D108980999FEF7EAFDBC +:10DE0000041CD9E700200021021C0B1CFDF7CAFAF4 +:10DE100008900991022CE6D102F04CFE2123036008 +:10DE2000E6E702F047FE0A9B01930360E4E7C04681 +:10DE30000C010020F41A0300F8B54F4646460C1CAE +:10DE400089465142C0B4051C11435800564E400843 +:10DE5000C90F9C460143B1423DD86100490888463C +:10DE6000474669422943C90F3943B14233D84F4924 +:10DE70005918114347D0022699170E40E10F0E435F +:10DE80004146294331D0011C114336D046498842CE +:10DE900049D04549884530D04146081A00153C28EC +:10DEA0003BDC614600295ADB281C211CFDF77AFA6D +:10DEB00002F002FD02F062FB012E40D0022E43D0A0 +:10DEC000002E0ED03A4A3B4BFEF744F93A4A3B4B00 +:10DED000FEF740F905E0101C191C2A1C231CFCF756 +:10DEE00039FF0CBC90469946F8BD022E18D00FDCC5 +:10DEF000002EC8DB281C211CF3E74B462E48002BC4 +:10DF00001BDB2F49EDE7281C211C02F037FBE8E75B +:10DF1000032EB8D128482B49E3E727482849CBE707 +:10DF200025482649DDE780451ED0012E2CD025DD71 +:10DF3000022EF5D0032EEDD0ABE72349D1E78024A4 +:10DF400024060B19191CCCE7194A1A4BFEF702F9E3 +:10DF5000021C0B1C18481949FEF7FCF8C1E73C30BD +:10DF6000A2DA00200021A7E7012E19D010DD022E31 +:10DF700013D0032EC1D115481549B2E7002E00D0A9 +:10DF800087E700200021ACE7802100200906A8E7F0 +:10DF9000002EB2D108480F49A3E70C480E49A0E76C +:10DFA00005480E499DE7C0460000F07F000010C004 +:10DFB000075C143326A6A13C182D4454FB210940CC +:10DFC000FB21F93FFB2109C0FB21F9BFD221337F9F +:10DFD0007CD902C0FB21E93F7CD90240FB21E9BF8B +:10DFE000F0B556464D4644465F46754BF0B40A1CA4 +:10DFF0000E1C191C83B0051C041C3140994200D131 +:10E00000B7E0002E00DC93E0311500D1A0E06D4BAD +:10E010001203CE188023120B5B031A43F30700D5BB +:10E0200077E0731052009846E30FD3188022162130 +:10E030000027002564009203A818984202DC851886 +:10E040001B1ABF18E00F5B0001391B18640052084F +:10E050000029F1D10022019294468022120620204C +:10E06000924609E0AB4247D0E10F5B0001385B18F4 +:10E070006400520800281ED0614689189D42F1DADA +:10E080008E18B446CE0FF607A94656452ED05B1B18 +:10E090008C42AD416D425B1B641A01995B008B465B +:10E0A0009344594601380191E10F4D465B186400D5 +:10E0B00052080028E0D1234330D1019B5B0842493C +:10E0C0007A108C466244F90702D5802109060B4379 +:10E0D00041460E05B1181D1C0E1C281C311C03B036 +:10E0E0003CBC90469946A246AB46F0BD6646002E23 +:10E0F000CDDB6E1CB146CAE7A14208D88E18B446E3 +:10E10000CE0FF607564541D099460023C4E71D1CA3 +:10E11000AAE7E30F5200D218640082E7019B0133A3 +:10E120003AD0019A01239446134063445B08C6E742 +:10E1300073005B080343D0D00021002E33D1E20AE4 +:10E1400015396405002AFAD080235B031A4226D1D0 +:10E15000802000234003520001330242FBD00125FE +:10E160002020ED1AC01A4919251CC5409C402A439D +:10E170004DE72A1C331C281C311CFDF751FD2A1CBD +:10E18000331CFCF7E7FD051C0E1CA6E76646002EB7 +:10E19000AFDA0023A9467FE7013700238FE720206D +:10E1A00001250023DFE72A1C331C281C311CFDF746 +:10E1B000D1FF021C0B1CFDF7F5F8051C0E1C8CE7AB +:10E1C0000000F07F01FCFFFF0000E03FFE22F8B5F9 +:10E1D0004300041C5B089205934211D009DC9F4A5E +:10E1E000934212DC8C229205934200DD81E09C4830 +:10E1F00005E0211CFCF780FB011CFCF759F8F8BD79 +:10E200000020002CFBDC9748F9E7002800DAC5E085 +:10E21000FE20211C8005FCF76FFBFC218905FCF723 +:10E2200039FA041C01F038FB8F49061C050B201C31 +:10E23000FCF730FA8D49FBF7BFFE211CFCF72AFAE8 +:10E240008B49FCF759FB211CFCF724FA8949FBF7A1 +:10E25000B3FE211CFCF71EFA8749FCF74DFB211C7D +:10E26000FCF718FA8549FBF7A7FE211CFCF712FA08 +:10E270008349071C201CFCF70DFA8249FCF73CFB84 +:10E28000211CFCF707FA8049FBF796FE211CFCF7DE +:10E2900001FA7E49FCF730FB211CFCF7FBF9FE215B +:10E2A0008905FBF789FE011C381CFCF701F8311CBD +:10E2B000FCF7F0F92D03071C291C281CFCF7EAF9D0 +:10E2C000011C201CFCF718FB291C041C301CFBF74C +:10E2D00073FE011C201CFBF7EBFF011C381CFBF735 +:10E2E0006BFE011C281CFBF767FE011CFBF764FE9C +:10E2F00085E7211CFCF7CEF95B49051CFCF7CAF940 +:10E300005A49FBF759FE291CFCF7C4F95849FCF798 +:10E31000F3FA291CFCF7BEF95649FBF74DFE291C00 +:10E32000FCF7B8F95449FCF7E7FA291CFCF7B2F9F5 +:10E330005249FBF741FE291CFCF7ACF95049061C79 +:10E34000281CFCF7A7F94F49FCF7D6FA291CFCF763 +:10E35000A1F94D49FBF730FE291CFCF79BF94B490D +:10E36000FCF7CAFA291CFCF795F9FE218905FBF791 +:10E3700023FE011C301CFBF79BFF011C201CFCF73B +:10E3800089F9011C4248FCF7B7FA011C201CFCF774 +:10E39000B3FA011C3F48FCF7AFFA30E7FE218905CC +:10E3A000FBF70AFEFC218905FCF774F92E49041CD1 +:10E3B000FCF770F92D49FBF7FFFD211CFCF76AF90A +:10E3C0002B49FCF799FA211CFCF764F92949FBF762 +:10E3D000F3FD211CFCF75EF92749FCF78DFA211C9F +:10E3E000FCF758F92549FBF7E7FD211CFCF752F92A +:10E3F000061C201C01F050FA2149051C201CFCF7CA +:10E4000049F92049FCF778FA211CFCF743F91E4929 +:10E41000FBF7D2FD211CFCF73DF91C49FCF76CFA17 +:10E42000211CFCF737F9FE218905FBF7C5FD011C0E +:10E43000301CFBF73DFF291CFCF72CF91449FCF7B5 +:10E440005BFA011C281CFBF7B7FD011CFBF7B4FDB0 +:10E45000011C1148FCF750FAD1E6C046FFFFFF3E11 +:10E46000DB0FC93FDB0F494008EF1138047F4F3AFB +:10E470004611243DA80A4E3E90B0A63EABAA2A3EC5 +:10E480002EC69D3D6133303F2D57014039D1194093 +:10E490006821A233DA0FC93FDA0F4940F0B5FE23F5 +:10E4A0004E46454657464400E0B46408051C061C29 +:10E4B0009B059C4200D1C9E000DDA6E0904B9C4248 +:10E4C0000FDC904B9C4200DDCDE08F49FBF774FDE3 +:10E4D000FE218905FBF7A6FC031C281C002B00D09D +:10E4E00099E0281CFEF77CFE011CFE208005FCF74D +:10E4F00003FAFC218905FCF7CDF88449051CFCF7DB +:10E50000C9F88349FBF758FD291CFCF7C3F881497A +:10E51000FCF7F2F9291CFCF7BDF87F49FBF74CFD2D +:10E52000291CFCF7B7F87D49FCF7E6F9291CFCF734 +:10E53000B1F87B49FBF740FD291CFCF7ABF87949A2 +:10E540008046281CFCF7A6F87749FCF7D5F9291C6A +:10E55000FCF7A0F87549FBF72FFD291CFCF79AF88A +:10E560007349FCF7C9F9291CFCF794F8FE218905C9 +:10E57000FBF722FD8146281C01F08EF96D4B071C2C +:10E580009C424DDC391C040BFBF716FD49468246C4 +:10E590004046FBF78DFE011C5046FCF77BF8240338 +:10E5A0008046211C201CFCF775F8011C281CFCF778 +:10E5B000A3F9211C051C381CFBF7FEFC011C281CC0 +:10E5C000FBF776FE011CFBF7F7FC011C5A48FCF731 +:10E5D00093F9011C4046FCF78FF9211C051C201CF7 +:10E5E000FBF7EAFC011C5548FCF786F9011C281CC6 +:10E5F000FCF782F9011C5148FCF77EF9002E0ADC79 +:10E6000080231B069C46604405E0291CFCF774F936 +:10E61000011CFBF74DFE1CBC90469946A246F0BD7E +:10E6200049464046FBF744FE011C381CFCF732F813 +:10E63000391CFBF7C1FC011CFBF7BEFC4049FBF792 +:10E64000BBFC011C3F48FCF757F9D7E73D49FCF7F5 +:10E6500021F83949041C281CFCF71CF8011C201C5B +:10E66000FBF7AAFCD7E7291CFCF714F82749041C80 +:10E67000FCF710F82649FBF79FFC211CFCF70AF871 +:10E680002449FCF739F9211CFCF704F82249FBF76F +:10E6900093FC211CFBF7FEFF2049FCF72DF9211C00 +:10E6A000FBF7F8FF1E49FBF787FC211CFBF7F2FF85 +:10E6B0001C49061C201CFBF7EDFF1B49FCF71CF94D +:10E6C000211CFBF7E7FF1949FBF776FC211CFBF740 +:10E6D000E1FF1749FCF710F9211CFBF7DBFFFE21D6 +:10E6E0008905FBF769FC011C301CFBF7E1FD011CEF +:10E6F000281CFBF7CFFF291CFBF75EFC8BE7C0460D +:10E70000FFFFFF3EFFFFFF31CAF2497108EF1138EA +:10E71000047F4F3A4611243DA80A4E3E90B0A63ED3 +:10E72000ABAA2A3E2EC69D3D6133303F2D57014096 +:10E7300039D119409999793F2EBD3BB3DB0F493F41 +:10E740002EBD3B33DB0FC93FF0B54746FF254A00DE +:10E7500080B4031C5208ED05AA4216DC8046400036 +:10E760004008A84211DCFE24A405A1423DD00227A6 +:10E770008C173C40DF0F3C4300280DD1022C32D0D7 +:10E78000181C032C05D1314803E0081C191CFBF7A9 +:10E7900013FC04BC9046F0BD002A1DD0AA4228D02C +:10E7A000A84219D0821AD2153C2A1ADC00293BDB78 +:10E7B000181CFBF77DFDFEF713FDFEF769FB012C2E +:10E7C00025D0022C28D0002CE3D02149FBF7F4FB04 +:10E7D0002049FCF791F8DCE74346002B15DB1E4887 +:10E7E000D7E71D48EBE71B48D3E7181CFEF750FBA3 +:10E7F000CFE790421CD0022CF5D0032CC3D00020D0 +:10E80000012CC6D180200006C3E71448C1E780234D +:10E810001B069C466044BCE70D49FBF7CDFB011C81 +:10E820000C48FCF769F8B4E700203C32C7DBBFE7CF +:10E83000022C05D0032C07D0012C03D00848A8E7F0 +:10E840000848A6E70848A4E70848A2E7DB0F49C044 +:10E850002EBDBB33DB0F4940DB0FC93FDB0FC9BF08 +:10E86000DB0F493FE4CB1640DB0F49BFE4CB16C0BA +:10E87000F8B5FF224F4646464300C0B4041C5B086F +:10E88000D20593426ED8C50F934200D171E0654A1C +:10E89000904200DD8BE0002800DA81E0624A93427A +:10E8A0006BD9624A934200D99BE0614BAF00F958A3 +:10E8B000201CFCF721F8814601205E4B401BFF58CD +:10E8C000451B4846391CFCF717F8041C211C201C6A +:10E8D000FBF7E0FE5849061CFBF7DCFE5749FCF746 +:10E8E0000BF8311CFBF7D6FE5549FBF765FB311CD5 +:10E8F000FBF7D0FE5349FBF7FFFF311CFBF7CAFEC5 +:10E900005149FBF759FB311CFBF7C4FE011C201CCD +:10E91000FBF7F2FF8046201C4146002D4CD0FBF750 +:10E92000B9FE041C80204146C005FBF7E5FF011C31 +:10E93000201CFBF7BDFC011C381CFBF7DDFF494622 +:10E94000FBF7DAFF011CFE208005FBF7D5FF2B1C2F +:10E950007D3363DAD8216435ED0528180905FBF706 +:10E9600099FE02E0211CFBF727FB0CBC9046994660 +:10E97000F8BD002DF9D00020F7E7344A934214D8AF +:10E980003349201CFBF718FBFE218905FBF74AFAE7 +:10E9900000280AD0FE21201C8905FBF70DFBE4E7C7 +:10E9A0002C4A934200D879E7E5E700258EE728480E +:10E9B000011CFBF76FFED8E7FBF76CFE8021051CFE +:10E9C000C9054046FBF798FF011C281CFBF770FCAB +:10E9D000211CFBF791FF011CFE208005FBF78CFF3B +:10E9E000C3E71D49201CFBF755FE1C4BAD00E95841 +:10E9F000FBF7E2FAFCF7FEF8051CFCF71BF91849D7 +:10EA0000071CFBF747FE011C201CFBF775FF15498F +:10EA10008146381CFBF73EFE071C52E7ED0528181F +:10EA2000A3E7C0461772B1421872B13E9115853FF7 +:10EA30000C1B0300041B03004CBB31330EEADD3515 +:10EA400055B38A38610B363BABAA2A3EFFFF7F31B4 +:10EA5000CAF24971B5F1CF423BAAB83FFC1A030094 +:10EA60008071313FD1F7173770B54E0076083ED030 +:10EA7000C40FE407251C3B4B45409D4237DC013366 +:10EA80009E4234DCB54237DB3CD0374B9D423EDC06 +:10EA90007E222B025242002B03DD013A5B00002B49 +:10EAA000FBDC314B9E4241DC7E2033024042002B96 +:10EAB00002DB01385B00FCD5131C7E3331DB802385 +:10EAC0006D026D0A1B041D43031C7E3323DB802370 +:10EAD0004902490A1B041943131A002B0DD06A1A64 +:10EAE0006D00002A01DB0DD05500013BF5E7FBF777 +:10EAF000D1FD011CFBF7DCFB70BD691A00D5291C98 +:10EB0000002916D1E10F194B8900C858F4E7EB151D +:10EB10007F3B1A1CC5E77E23311C5B421B1A9940C0 +:10EB2000DAE77E235B429B1A9D40CDE7F0157F38E4 +:10EB3000C2E70D4A131C914203DC49000138994297 +:10EB4000FBDD031C7E3306DB094B7F30CB182343F0 +:10EB5000C0051843D0E77E235B42181A0141081C08 +:10EB60002043C9E7FFFF7F7FFFFF7F00141B0300E7 +:10EB7000000080FFF8B55F4656464D464446011CEE +:10EB8000F0B44B0000D191E0002800DAB2E09E4BD7 +:10EB9000984200DDB5E09D4A0023904206DC081C47 +:10EBA0009821C905FBF776FD19235B42C5157F3D0A +:10EBB000ED184002964B440AE01880231B040340E2 +:10EBC000FE20FE2180055840DA152043890555199D +:10EBD000FBF792FE231C0F335B02061C5B0A0F2B14 +:10EBE0006FDD8021C905FBF7E7F9011C301CFBF73D +:10EBF0005FFB8146281CFCF71DF8494682464846C3 +:10EC0000FBF748FD8346834B59469846FBF742FD88 +:10EC10008149071CFBF73EFD8049FBF7CDF9391C04 +:10EC2000FBF738FD7E49FBF7C7F9391CFBF732FDCE +:10EC30007C49FBF7C1F95946FBF72CFD7A4983461D +:10EC4000381CFBF727FD7949FBF7B6F9391CFBF7B0 +:10EC500021FD7749FBF7B0F9391CFBF71BFD011CBF +:10EC60005846FBF7A9F9A0444346071C7148041B0A +:10EC70001C43002C00DC9BE0FC21301C8905FBF7C9 +:10EC800009FD311CFBF706FD041C002D57D1391C72 +:10EC9000FBF792F94946FBF7FDFC011C201CFBF732 +:10ECA0002BFE011C301CFBF727FE04E0CC200021CA +:10ECB0000006FBF7FDFA3CBC90469946A246AB46DF +:10ECC000F8BD0021FBF794F800281ED00020002D8D +:10ECD000F1D0281CFBF7AEFF5749041CFBF7DAFC08 +:10ECE0005649051C201CFBF7D5FC011C281CFBF712 +:10ECF00063F9E0E7081CFBF7FFFD0021FBF7D8FAFA +:10ED0000D9E7081CFBF758F9D5E7311C301CFBF795 +:10ED1000C1FC4B49041C301CFBF7BCFC011CFC2053 +:10ED20008005FBF7E9FD011C201CFBF7B3FC041C6C +:10ED3000002D25D1301C211CFBF7DEFDBBE7504622 +:10ED40003D49FBF7A7FC391C051C201CFBF734F9D7 +:10ED50004946FBF79FFC3949071C5046FBF79AFCD4 +:10ED6000011C381CFBF728F9011C201CFBF7C4FD13 +:10ED7000311CFBF7C1FD011C281CFBF7BDFD9AE708 +:10ED8000281CFBF757FF2C49051CFBF783FC2B497C +:10ED9000071C281CFBF77EFC011C201CFBF7ACFDAC +:10EDA000311CFBF7A9FD011C381CFBF7A5FD82E710 +:10EDB000002D1CD050462049FBF76CFC391C041C6C +:10EDC000301CFBF799FD4946FBF764FC1B49051C09 +:10EDD0005046FBF75FFC011C281CFBF78DFD311C26 +:10EDE000FBF78AFD011C201CFBF786FD63E7391C3D +:10EDF000301CFBF781FD4946FBF74CFC011C301C25 +:10EE0000FBF77AFD57E7C046FFFF7F7FFFFF7F00DC +:10EE100020FB4A00305CCFFF9788173E25333A3EEF +:10EE20002549923EABAA2A3F4FD01C3E298E633E15 +:10EE3000CDCCCC3E88C235008071313FD1F7173739 +:10EE4000ABAAAA3EF0B5444656464D465F46F0B4DE +:10EE50004E0087B0051C0C1C8846760811D0FF2395 +:10EE6000470081467F08DB059F4204DD654801F0CD +:10EE70000FFE041C07E09E420DDDFE239B059F4212 +:10EE8000F4D1FE24A405201C07B03CBC9046994652 +:10EE9000A246AB46F0BD0023019300286FDBFF23A1 +:10EEA000DB059E4260D0FE239B059E427CD08023E2 +:10EEB000DB05984500D18BE0FC239B05984521D0CC +:10EEC000281CFEF78DF9FF23011CDB059F4236D07D +:10EED000002F34D0FE239B059F4230D0EB0F013B27 +:10EEE0001A1C0293019B13437CD09A23DB059E429C +:10EEF00000DC95E0444B9F4229DC4346002B2DDB90 +:10EF00000024C0E74B46281C002B67DAFEF768F99F +:10EF1000FF23011CDB059F4201D0002FDAD13B4BC0 +:10EF2000081C9C46019B67441F435DD0019B0C1C41 +:10EF3000012BA8D180231B069C466444A3E74346CB +:10EF4000002B58DB4B460C1C002B9CDAE7E7304BC0 +:10EF50009F4200DCBDE24346002BD1DD2D48011C61 +:10EF6000FBF798FB041C8EE7FE239B059F4200D114 +:10EF700087E728DD4346002B00DB84E7C0E7264B0C +:10EF80009E421DDC254B9E428DDD9623F2159B1A79 +:10EF9000321C1A41111C9940B14284D101231A40FC +:10EFA00001339B1A01937EE743462C1C002B00DBA8 +:10EFB00069E7FE20291C8005FBF77AF9041C62E74B +:10EFC000022301936BE74346002BB3DB00245AE78F +:10EFD000281C291CFBF75EFB041C54E700F05CFCBA +:10EFE000041C50E7281C291CFBF786FC011CFBF7BE +:10EFF0005FF9041C47E7FE208005FBF759F9011C67 +:10F00000A0E7C046E81A0300F7FF7F3F000080C07A +:10F010000700803FCAF24971FFFF7F4BFFFF7F3F30 +:10F02000F14B00229F4207DC081C9721C905FBF722 +:10F0300031FB1822071C5242FB157802FE277F3B4A +:10F040009B180393E94B400ABF050743984200DC35 +:10F05000AEE1E74B984200DC7CE2039B0133039373 +:10F06000E44B9C460023674404939D00E24B381C0C +:10F07000EB58BB46191C9946FBF73EFC49468246B5 +:10F08000381CFAF799FF011CFE208005FBF710F9E8 +:10F09000031C191C50460593FBF7FCFA80237F10D4 +:10F0A0009B051F438023DB029C46049B67449C46D0 +:10F0B000060B674436038046391C301CFBF7EAFA1E +:10F0C000011C5046FBF718FC49468246381CFBF7EA +:10F0D00013FC011C5846FBF70FFC011C301CFBF70E +:10F0E000D9FA011C5046FBF707FC0599FBF7D2FA49 +:10F0F000414683464046FBF7CDFA071C391CFBF717 +:10F10000C9FABE498146381CFBF7C4FABC49FAF774 +:10F1100053FF391CFBF7BEFABA49FAF74DFF391C09 +:10F12000FBF7B8FAB849FAF747FF391CFBF7B2FA10 +:10F13000B649FAF741FF391CFBF7ACFAB449FAF7C4 +:10F140003BFF011C4846FBF7A5FA311C071C404653 +:10F15000FAF732FF5946FBF79DFA391CFAF72CFFF4 +:10F16000311C8146301CFBF795FAAA498246FAF712 +:10F1700023FF4946FAF720FF070B3F03391C301CD9 +:10F18000FBF788FA391C061C5846FBF783FAA1499D +:10F190008346381CFBF7B0FB5146FBF7ADFB011C67 +:10F1A0004846FBF7A9FB4146FBF774FA011C584699 +:10F1B000FAF702FF8146301C4946FAF7FDFE070BBD +:10F1C0003F03381C9449FBF765FA94498046381C84 +:10F1D000FBF760FA311C8246381CFBF78DFB011CE3 +:10F1E0004846FBF789FB8E49FBF754FA011C504651 +:10F1F000FAF7E2FE8B4BE958FAF7DEFE071C03989C +:10F20000FBF718FD884B8146EB5840469A46391C5F +:10F21000FAF7D2FE5146FAF7CFFE4946FAF7CCFE8E +:10F22000060B36034946301CFBF766FB5146FBF7DD +:10F2300063FB4146FBF760FB011C381CFBF75CFBE2 +:10F240008046019D029B013D1D4300D0ADE0774FFC +:10F25000250B2D03291C201CFBF74EFB311CFBF753 +:10F2600019FA41468146201CFBF714FA011C484656 +:10F27000FAF7A2FE291C8046301CFBF70BFA061C8D +:10F280008246311C4046FAF797FE44008146051C31 +:10F290006408002800DC05E18623DB059C4200DDD4 +:10F2A00098E000D187E0FC239B059C4200DDD3E081 +:10F2B0000023002699462D0B2D03281C5C49FBF7E3 +:10F2C000E9F951468346281CFBF716FB011C404612 +:10F2D000FBF712FB5749FBF7DDF95749041C281CC3 +:10F2E000FBF7D8F9011C201CFAF766FE041C211C50 +:10F2F0005846FAF761FE5946051CFBF7FDFA011C5A +:10F30000201CFBF7F9FA291C8046281CFBF7C2F9E0 +:10F310004A49041CFBF7BEF94949FBF7EDFA211CE9 +:10F32000FBF7B8F94749FAF747FE211CFBF7B2F99A +:10F330004549FBF7E1FA211CFBF7ACF94349FAF721 +:10F340003BFE211CFBF7A6F9011C281CFBF7D4FA95 +:10F35000041C211C281CFBF79DF980218246C9054D +:10F36000201CFBF7C9FA011C5046FAF7A1FF4146E1 +:10F37000041C281CFBF78EF94146FAF71DFE011C00 +:10F38000201CFBF7B9FA291CFBF7B6FA011CFE207A +:10F390008005FBF7B1FA3118CB15002B00DCDEE05D +:10F3A000381CFBF777F9041C6DE5FE27BF054FE716 +:10F3B0000023049359E626494046FAF7FDFD311C27 +:10F3C00082464846FBF798FA011C5046FAF72AFD98 +:10F3D000002841D01F49381CFBF75CF91D49FBF799 +:10F3E00059F9041C4FE5C046FFFF7F0071C41C00A3 +:10F3F000D6B35D00000080FF2C1B030042F1533E9A +:10F4000055326C3E05A38B3EABAAAA3EB76DDB3EE0 +:10F410009A99193F000040400038763FA0C39D36BE +:10F420004F38763F241B03001C1B0300000080BFE5 +:10F430000072313F1872313F8CBEBF354CBB313347 +:10F440000EEADD3555B38A38610B363BABAA2A3E4E +:10F450003CAA3833CAF2497180221204131CE41505 +:10F460007E3C23415C1963025B0A1A4396236100C8 +:10F47000090E5B1A1A41131CED0F6A42534099465C +:10F48000394B7F390B419C43211C301CFBF734FA6C +:10F490008246A94440465146FAF78EFD4B46051C6C +:10F4A000DE0508E7314B9C420ADC00D0FBE6311C4C +:10F4B000FBF722FA011C4046FAF7AAFC0028CBD041 +:10F4C0002B49381CFBF7E6F82949FBF7E3F8041C45 +:10F4D000D9E4081CFE218905FBF70EFA2549061C14 +:10F4E000FBF7D8F82449071C301CFBF7D3F8311C74 +:10F4F000051C301CFBF7CEF8FA2181468905301C2B +:10F50000FBF7C8F8011C1D48FBF7F6F9311CFBF7A7 +:10F51000C1F8011CFC208005FBF7EEF9011C4846F0 +:10F52000FBF7B8F81649FBF7B5F8011C281CFBF7E8 +:10F53000E3F9051C291C381CFAF73EFD060B3603BF +:10F54000391C301CFBF7D8F9011C281CFBF7D4F937 +:10F55000804676E680239B030493012385E5494694 +:10F56000FDF744FF011C1BE7FFFF7F00000016436F +:10F570006042A20D00AAB83F70A5EC36ABAAAA3E25 +:10F580003BAAB83FF0B55F46564644464D46F0B4F8 +:10F5900042005708B24A89B0031C0C1C061C974253 +:10F5A0006FDDB04A97421BDCAF49002B00DC0BE15A +:10F5B000FBF7A2F90F233A1C9A43AC4B051C9A4265 +:10F5C00000D170E0AA49FBF797F9011C2060281CC4 +:10F5D000FBF792F9A649FBF78FF96060012054E030 +:10F5E000A44A974200DC70E0A34A974254DC86228A +:10F5F00052429146FB1599444B46DD057D1B281C64 +:10F60000FBF7F8FAFBF716FB011C0590281CFBF72B +:10F6100073F98721C905FBF73DF88046FBF7EAFA45 +:10F62000FBF708FB051C0690291C4046FBF764F914 +:10F630008721C905FBF72EF800210790FAF7D8FBC0 +:10F64000002800D1D8E0281C0021FAF7D1FB0222C3 +:10F65000431E9841131A02220092884A05A801927B +:10F66000211C4A4600F03EFA002E0EDA80221206D5 +:10F670009446236840426344236063686344636044 +:10F6800003E00023206000204B6009B03CBC9046A2 +:10F690009946A246AB46F0BD191CFBF72DF96060F8 +:10F6A00020600020F1E77649FBF726F97549051C33 +:10F6B000FBF722F9011C2060281CFBF71DF971499A +:10F6C000FBF71AF960600120DFE7FDF789FD6E495D +:10F6D0008046FAF7DFFFFC218905FAF76DFCFBF79E +:10F6E00089FA051CFBF7A6FA5F498146FAF7D2FFB3 +:10F6F000011C4046FBF700F95D4980464846FAF791 +:10F70000C9FF824640461F2D25DCFF233A1C5F4976 +:10F710009A436B1E9B005B589A421CD05146FBF7E4 +:10F72000EBF883465B46236059464046FBF7E4F816 +:10F730005146FBF7E1F8031C6060281C002EA4DA98 +:10F74000802212065A4422608022120694466344A4 +:10F750006360684299E75146FBF7CEF8FB15FF213D +:10F760001A1C0293C30D0B408346D31A082BD9DD14 +:10F7700043494846FAF78EFF071C391C4046FBF701 +:10F78000BBF8031C191C039040469846FBF7B4F8DD +:10F79000391CFBF7B1F83B49071C4846FAF77AFFDA +:10F7A000391CFBF7A9F8824640465146FBF7A4F8FE +:10F7B000FF22C30D1340029A8346D31A192B30DC63 +:10F7C000039B20609846AFE7FAF7F6FB0F233A1C3D +:10F7D0009A43264B051C9A4210D02549FAF7ECFBB8 +:10F7E000011C2060281CFBF787F82149FAF7E4FB8D +:10F7F00060600120404248E703232CE72049FAF7E4 +:10F80000DBFB2049051CFAF7D7FB011C2060281CF4 +:10F81000FBF772F81B49FAF7CFFB6060012040420A +:10F8200033E71B494846FAF735FF039B071C391C91 +:10F83000181C9A46FBF760F8804650464146FBF795 +:10F840005BF8391CFBF758F81249071C4846FAF7D1 +:10F8500021FF391CFBF750F8824640465EE7C04660 +:10F86000D80F493FE3CB1640800FC93FD00FC93FA7 +:10F8700043443537800F4943FFFF7F7FB41B0300AC +:10F880000044353708A3852E84F9223F341B03003A +:10F8900000A3852E32318D242B49420070B5031C04 +:10F8A000041C52088A423BD8011C002A36D000288A +:10F8B00040DBC115254882420AD80130204240D1A0 +:10F8C00000225B0001320342FBD00120821A89181A +:10F8D00080225B025B0A12047F391343CA0727D4D4 +:10F8E000802219200025002649105B005204B4181C +:10F8F0009C4202DCA6181B1BAD1801385B005208A5 +:10F900000028F4D1002B02D001232B405D19FC23E9 +:10F910009B059C466D106544C9054919081C70BDBE +:10F92000211CFAF7B7FE211CFAF746FB011CF5E78C +:10F930005B00D5E7FAF7E0FF011CFAF7B9FC011C00 +:10F94000ECE701228918C3E7FFFF7F7FFFFF7F00FD +:10F95000F8B54F464646584B4500C0B46D08061CE6 +:10F960000F1C9D4248DCFBF745F9002800D19FE0C1 +:10F97000311C301CFAF78EFE5049041CFAF78AFE3F +:10F980004F49FAF719FB211CFAF784FE4D49FAF7A3 +:10F99000B3FF211CFAF77EFE4B49FAF70DFB211C41 +:10F9A000FAF778FE4949FAF7A7FF211CFAF772FE29 +:10F9B0004749FAF701FB211CFAF76CFE8046FC214F +:10F9C000201C8905FAF766FE4146051C201CFAF743 +:10F9D00061FE391C041C301CFAF75CFE011C201C63 +:10F9E000FAF78AFF011C281CFAF786FF011CFE208B +:10F9F0008005FAF781FF53E0311CFAF74BFE2F49DF +:10FA0000041CFAF747FE2E49FAF7D6FA211CFAF73A +:10FA100041FE2C49FAF770FF211CFAF73BFE2A49F8 +:10FA2000FAF7CAFA211CFAF735FE2849FAF764FFFB +:10FA3000211CFAF72FFE2649FAF7BEFA211CFAF725 +:10FA400029FE244B80469D42B9DD234B9D422BDC91 +:10FA5000FF231B069C46FE2065448005291CFAF7FF +:10FA60004BFF8146FC21201C8905FAF713FE291C57 +:10FA7000FAF742FF4146051C201CFAF70BFE391C21 +:10FA8000041C301CFAF706FE011C201CFAF734FF98 +:10FA9000011C281CFAF730FF011C4846FAF72CFF1E +:10FAA0000CBC90469946F8BD0C4B0D4D9946D9E7D4 +:10FAB000FE208005F4E7C046FFFFFF314ED747AD7B +:10FAC000F6740F317CF29334010DD037610BB63AE6 +:10FAD000ABAA2A3D9999993E0000483F0000383F63 +:10FAE0000000903EF0B5564644465F464D46F0B4A1 +:10FAF000DDB00190181C069166990893C04B8900EF +:10FB0000C958031C013B181C0093D31E0C1C059103 +:10FB1000D917490FCB18DB10191CDB43DB17194031 +:10FB2000CB43DB009B180A9104930E1A071919D4D2 +:10FB3000679A01379046B300BF009844002520AC77 +:10FB400008E043465859FBF775F860510435013613 +:10FB5000BD4207D0002EF4DA002060510435013692 +:10FB6000BD42F7D1059B002B00DA3DE3059B013335 +:10FB70009B009946089B9B009B460023984648ABF8 +:10FB80009A465B46043B0293009B002B00DA31E26D +:10FB9000029B002543441C1C20AB9C464346019E0F +:10FBA0001F1F64446744216801CEFAF773FD011CEE +:10FBB000281CFAF701FA043C051CBC42F3D1534659 +:10FBC00042469D5004239C46E044C845DCD18D4A02 +:10FBD000059D94462B1C63449B000CA91A1C8C4663 +:10FBE000D14604336244634409920B93AB009A46B6 +:10FBF0004B4652469E58002D27DD0CAB9846824B53 +:10FC0000EC184346A8461D1CA4004C44EE21301CB1 +:10FC10008905FAF73FFDFAF7EDFFFBF70BF88721AF +:10FC2000C905071CFAF736FD011C301CFAF764FE03 +:10FC3000FAF7E0FF216801C5381CFAF7BDF9043C6A +:10FC400047AB061C9C42E1D14546049B301C191C65 +:10FC50009846FDF7CBFBF8218905041CFAF71AFD3D +:10FC6000FDF7C2FA8221C905FAF714FD011C201C18 +:10FC7000FAF742FE041CFAF7BDFF071CFAF7DAFF99 +:10FC8000011C201CFAF738FE4446061C002C00DC40 +:10FC900092E108216A1E92000CAB9B58081B191CAC +:10FCA00001417F1881405B1A0CA98B500722121B5F +:10FCB00013410293029B002B34DD0137002D00DC41 +:10FCC00090E2802252000CAB00210024FF209446D9 +:10FCD00009E0002A03D06446A21A01241A60013107 +:10FCE00004338D4209DD1A68002CF2D0821A0131EA +:10FCF0001A60012404338D42F5DC049B002B0EDDD9 +:10FD0000012B00D162E1022B09D16B1E9B000CAAD2 +:10FD1000D25803923F2203990A400CA9CA50029B71 +:10FD2000022B73D0301C0021FAF762F8002800D1B2 +:10FD300086E0059B691E8B420FDC0CAA94460022CC +:10FD4000314B0B98EB189B0063441C68043B224327 +:10FD50008342FAD1002A00D0AAE1059B0CAA013BFC +:10FD60009B00D358002B00D03AE20122099B043BB0 +:10FD7000596801320029FAD0AA186B1C07929342E5 +:10FD80003ADC009AD718089BFF1A20AB9C46079BC9 +:10FD9000BF005B1B9B0003930A9B67449C46654422 +:10FDA000AB00029300239846679A029B9446434413 +:10FDB00063445868FAF73EFF5B46F850009B002BFF +:10FDC0001CDB5B460025019EFC18216801CEFAF77A +:10FDD00061FC011C281CFAF7EFF8043C051CBC422E +:10FDE000F3D1434653444B445D6004239C46039B3C +:10FDF000E04404379845D7D1079DF7E60025F0E7A2 +:10FE0000CC1E0300FEFFFF3FFFFFFF3FFE20311C23 +:10FE10008005FAF771FD061C002C00D182E7FE2058 +:10FE200004998005FDF7E2FA011C301CFAF764FD25 +:10FE3000061C301C0021F9F7DBFF002800D078E712 +:10FE40005346CA469946049B301C59420797009571 +:10FE5000FDF7CCFA8721C905041CF9F7EDFF00284E +:10FE600000D1C7E1EE21201C8905FAF713FCFAF74F +:10FE7000C1FEFAF7DFFE8721C905051CFAF70AFC67 +:10FE8000011C201CFAF738FDFAF7B4FE4A460CAB09 +:10FE90009850009B049A01330832281C9C00009360 +:10FEA0000492FAF7A7FE0CAB1851FE2004998005C6 +:10FEB000FDF79CFA009A061C131E00DAB4E0013329 +:10FEC00098469B005B420CA999468C4693001A1CED +:10FED000019363441C1C131C53441F1C00256059D0 +:10FEE000FAF7A8FE311CFAF7D5FBEE217851890507 +:10FEF000301CFAF7CFFB043D061C4D45EFD134AB67 +:10FF00009B46C04BB9469A4643460393059B002740 +:10FF100098464346002B00DA84E0002F00DA81E0A7 +:10FF20003B1C00264F4600250024994602E004357C +:10FF30004C450CDC534679595859FAF7ABFB011C78 +:10FF4000301CFAF739F80134061CA045EFDA4B46AD +:10FF5000B9461F1C5A46BB00D65004235B429C4640 +:10FF6000039B0137E144BB42D3D1669B022B00DDEA +:10FF7000D9E0002B00DDBBE014D1019B00205B44E5 +:10FF80001C1C2168FAF718F8009B043C5A1E0092CA +:10FF9000F7D2029B002B03D080231B069C466044B3 +:10FFA000069B18600720079B18405DB03CBC90463C +:10FFB0009946A246AB46F0BD049B002B11D16B1EA7 +:10FFC0009B000CAAD3581B12029373E66B1E9B0076 +:10FFD0000CAAD25803927F2203990A400CA9CA5056 +:10FFE0009DE6FC218905F9F727FF00280DD10023A4 +:10FFF000029397E65346424600259D5004239C46B3 +:020000040002F8 +:10000000E044C84500D0BFE5E1E502230137029393 +:10001000002D00DD55E6FE20311C8005FAF76CFC52 +:10002000061C7FE6002695E7669B022B27DC002B4B +:1000300003DC0020002BACD0B4E7029B0021002B96 +:1000400066D08023069A1B06CB1813603498FAF703 +:1000500053FC009B002B0BDD012435AD02CDF9F7DD +:10006000ABFF009B0134A342F8DA029B002B03D0C4 +:1000700080231B069C466044069B586092E734AB85 +:100080009B46669B032B00D08CE7029B0020002B35 +:1000900000D19CE0802212069446349B069A634469 +:1000A00013605B465B68604463445360906079E72B +:1000B00007970F1C049B0A1C083B00910493191C12 +:1000C0000CA8BB00C358CA46002B00D0EDE64E4832 +:1000D0003B1C84460CA8634484469B006344043B59 +:1000E0005868013A08390028F9D000920491DCE6FA +:1000F000019B00215B441C1C33AD081C2168043C9F +:10010000F9F75AFFAC42F9D1029B011C002B98D1A0 +:10011000069B34981960FAF7EFFB009B002B9BDCE1 +:10012000069B58603EE7669B032B00D03AE7009B96 +:10013000002BAADD5B46019A9E58334A009B9446E9 +:1001400063441C1C9D0033AB9A46A0465D442C685A +:10015000301C211CF9F730FF071C391C201CFAF752 +:10016000CBFB011C301CF9F727FF043DA8606F6032 +:100170003E1C5545EBD1009B4446012B85DD5B467B +:10018000A400A046019A1D199E582C68311C201C01 +:10019000F9F712FF071C391C201CFAF7ADFB311CC4 +:1001A000F9F70AFF043DA8606F603E1CAB45ECD137 +:1001B0004446002004345C4435AD2168043CF9F722 +:1001C000FBFEAC42F9D1029B002B00D062E7069BFC +:1001D000349A98601A605A46526800925A60E1E672 +:1001E0000122C9E5002488E5089B9B009B4648AB9B +:1001F0009A46ECE4201CFAF7FDFC4A460CAB9850FA +:1002000053E6C046D81E0300FFFFFF3FF8B54F4638 +:1002100046469046334A4300C0B4041C0F1C5B089A +:10022000934205DCFAF7E6FC031C201C002B46D0A9 +:10023000211C201CFAF72EFA211C051CFAF72AFAB9 +:100240002949061C281CFAF725FA2849FAF754FB15 +:10025000291CFAF71FFA2649F9F7AEFE291CFAF70E +:1002600019FA2449FAF748FB291CFAF713FA22492C +:10027000F9F7A2FE43468146002B24D0FC21381C0E +:100280008905FAF707FA49468046301CFAF702FA60 +:10029000011C4046FAF730FB291CFAF7FBF9391C20 +:1002A000FAF72AFB1549051C301CFAF7F3F9011C73 +:1002B000281CF9F781FE011C201CFAF71DFB0CBC61 +:1002C00090469946F8BD4946281CFAF7E3F90B49D0 +:1002D000FAF712FB311CFAF7DDF9211CF9F76CFE75 +:1002E000EDE7C046FFFFFF31D3C92E2F342FD732A1 +:1002F0001BEF3836010D50398988083CABAA2A3EDD +:10030000F0B5564644465F464D46F0B4894B46002C +:1003100083B0041C88469246834676089E4211DCD0 +:10032000FAF768FC002823D1534601331E4300D15D +:10033000EEE05346012B00D1FAE0211C7E48F9F78C +:10034000B7FFB1E07D4B9E4212DD002800DAE8E005 +:10035000211C7B48FAF7D0FA4146041C7948FAF789 +:10036000CBFA011C201CF9F727FE00239846041C39 +:10037000211C201CFAF78EF9071C391CFAF78AF9A0 +:10038000211C051C381CFAF785F96F498146281C89 +:10039000FAF780F96D49F9F70FFE291CFAF77AF997 +:1003A0006B49F9F709FE291CFAF774F96949F9F75D +:1003B00003FE291CFAF76EF96749F9F7FDFD291CC0 +:1003C000FAF768F96549F9F7F7FD65490190281CC6 +:1003D000FAF760F96349F9F7EFFD291CFAF75AF9C2 +:1003E0006149F9F7E9FD291CFAF754F95F49F9F772 +:1003F000E3FD291CFAF74EF95D49F9F7DDFD291CEB +:10040000FAF748F95B49F9F7D7FD391CFAF742F9D1 +:10041000011C0198F9F7D0FD4946FAF73BF941462E +:10042000F9F7CAFD391CFAF735F94146F9F7C4FD69 +:100430005149051C4846FAF72DF9291CF9F7BCFD6E +:10044000071C391C201CF9F7B7FD3C4B051C9E42CC +:1004500031DC5346012B27D0291C060B3648F9F70F +:1004600027FF3603211C8046050B301CFAF744FA9F +:100470002D03011C381CFAF73FFA291CFAF70AF978 +:10048000291C041C301CFAF705F9FE218905F9F72F +:1004900093FD011C201CF9F78FFD4146FAF7FAF88D +:1004A000011C281CF9F788FD03B03CBC9046994616 +:1004B000A246AB46F0BD5046FAF7BCFB5B46061CB5 +:1004C000981702231840013B181AFAF7B3FB291CAE +:1004D0008046281CFAF7DEF8311C8146281CF9F703 +:1004E0006BFD011C4846F9F7E3FE391CFAF704FAE4 +:1004F000011C201CFAF700FA011CF9F75DFD011C34 +:10050000301CFAF7F9F9011C4046FAF7C3F8CBE7BB +:10051000201CFCF765FE011CFE208005F9F7C8FED3 +:10052000C2E780231B069C464344644498460FE779 +:10053000201CB9E7FFFF7F31000080BF3FA12C3FA7 +:10054000DA0F493F682122335FAE9BB745F4A338E9 +:10055000C8261A3A16696B3BA427B33C8988083E23 +:100560008453D9377AC09538B937813948DEBE3AD5 +:100570001F37113CD10D5D3DABAAAA3EF8B55646DA +:100580004D4644465F46A54BF0B44E008046894632 +:100590008A4676089E420CDDA14B9E4200DDA0E01B +:1005A00000D19BE05346002B00DCDEE09D4B9E4AD1 +:1005B0009FE09E4B9E4200DDB1E09D4B9E4200DCE1 +:1005C0009FE001235B429B4642464B4640464946DC +:1005D000FBF726FB061C0F1C321C3B1CFBF720FB09 +:1005E000041C0D1C934A944BFBF71AFB934A944B43 +:1005F000FAF7B0FB221C2B1CFBF712FB914A924B23 +:10060000FAF7A8FB221C2B1CFBF70AFB8F4A904B26 +:10061000FAF7A0FB221C2B1CFBF702FB8D4A8E4B2A +:10062000FAF798FB221C2B1CFBF7FAFA8B4A8C4B2F +:10063000FAF790FB321C3B1CFBF7F2FA894A8A4B13 +:10064000061C0F1C201C291CFBF7EAFA874A884B62 +:10065000FBF780FD221C2B1CFBF7E2FA854A864B38 +:10066000FBF778FD221C2B1CFBF7DAFA834A844B3C +:10067000FBF770FD221C2B1CFBF7D2FA814A824B40 +:10068000FBF768FD221C2B1CFBF7CAFA0B1C594612 +:10069000021C013100D170E05946301CCC00391CDD +:1006A000FAF758FB42464B46FBF7BAFA774D784BC0 +:1006B0002D191C1922686368FBF74CFD42464B4616 +:1006C000FBF748FD021C0B1C28686968FBF742FD1C +:1006D00053460A1C002B4BDB031C0AE0002800D108 +:1006E00060E742464B4640464946FAF733FB031C57 +:1006F0000A1C181C111C3CBC90469946A246AB46ED +:10070000F8BD644A644BFAF725FB0022634BF9F706 +:100710004FFB002800D154E743464A46E9E700F082 +:10072000CBF85F4B041C0D1C9E4237DC5D4B9E4298 +:100730005DDC221C2B1CFAF70DFB0022574BFBF74C +:1007400009FD8023061C0F1C0022DB05201C291C30 +:10075000FAF700FB0B1C021C391C301CFAF722FEB6 +:100760000023804689469B462EE72E4B4E4AC0E723 +:1007700080221206031C8A18BBE7301C391CFAF7CA +:10078000E9FA42464B46FBF74BFA021C0B1C40466B +:100790004946FBF7DFFC031C0A1CAAE7434B9E42B9 +:1007A0001ADC0022424BFBF7D5FC0022061C0F1C72 +:1007B0003F4B201C291CFBF733FA0022374BFAF77A +:1007C000C9FA0B1C021C391C301CFAF7EBFD022382 +:1007D000804689469B46F7E62B1C00203549221CA3 +:1007E000FAF7E0FD0323804689469B46ECE60022AB +:1007F0002A4BFBF7AFFC0022061C0F1C274B201CCA +:10080000291CFAF7A7FA0B1C021C391C301CFAF73A +:10081000C9FD0123804689469B46D5E6FFFF0F446C +:100820000000F07F182D4454FB21F93FFFFFDB3F10 +:10083000FFFF1F3E11DA22E33AAD903FEB0D762425 +:100840004B7BA93F513DD0A0660DB13F6E204CC5FA +:10085000CD45B73FFF8300922449C23F0D55555502 +:100860005555D53F2F6C6A2C44B4A2BF9AFDDE5279 +:100870002DDEAD3F6D9A74AFF2B0B33F711623FE1B +:10088000C671BC3FC4EB98999999C93F68B90200F9 +:1008900048B902009C7500883CE4377E0000F03FB8 +:1008A000FFFFF23FFFFFE53FFB21F9BFFF7F034062 +:1008B0000000F83F0000F0BF49004B08191C7047CA +:1008C0000A1C031C024330B50220002A00D130BDAF +:1008D00080221206914216D00C4A04208C180C4A31 +:1008E0009442F4D90B4C0C199442F0D90A4A4900AD +:1008F000490803209142EAD9064A00209142E6D1F4 +:1009000058425841E3E7002BE1D0EFE70000F0FF49 +:10091000FFFFDF7F0000F07FFFFF0F000020704728 +:10092000002001497047C0460000F87FF0B54746F7 +:1009300080B44B004A4A5B0D9D1882B0071C0C1C0A +:10094000CE0F132D39DC002D59DB464F021C2F41F1 +:100950003B1C0B4003439C46B84667460B1C002FCC +:1009600025D043465B081A1C0A4010430027002884 +:1009700008D0132D00D16FE099438023DB022B4177 +:1009800019430C1C3849F6008E19231C346875680D +:100990003A1C201C291CFAF7DDF9009001910098FF +:1009A0000199221C2B1CFBF7D5FB021C0B1C101CF5 +:1009B000191C02B004BC9046F0BD332D0BDD0B1C9E +:1009C0008021021CC9008D42F1D1211CFAF7C2F925 +:1009D000021C0B1CEBE7254A9D1801235B42EB40F0 +:1009E0009C460B1C6146021C0142E0D04B080342AE +:1009F000C8D08027FF052F4198430743C2E74C002A +:100A000064080443021C0B1C002CD0D00903090B02 +:100A100001434A4211438022090B12035B0C11402F +:100A20005B04021C194310480B1CF10041180C68B0 +:100A30004D68201C291CFAF78DF90090019100984F +:100A40000199221C2B1CFBF785FB4B005B08F6076A +:100A50001E43021C331CAAE780273F068CE7C046D2 +:100A600001FCFFFFFFFF0F0088B90200EDFBFFFF55 +:100A70004000C90FC90740080843704743000020E1 +:100A8000024A5B089A4240417047C046FFFF7F7FA1 +:100A9000004870470000C07F054B10B5041C181EAD +:100AA00005D0131C02200A1C211C07F0AEFF10BD4C +:100AB0000B8A0200014B18687047C046F000002006 +:100AC000084B10B5041C002B02D0002100E000BF31 +:100AD000054B1868836A002B00D09847201C08F04B +:100AE000A6F8C04600000000641F030070B5051C96 +:100AF0000C1E01D1002049E0002804D08369002B9E +:100B000001D100F0F9F8224B9C4201D16C6808E059 +:100B1000204B9C4201D1AC6803E01F4B9C4200D1AA +:100B2000EC680C22A35E002BE4D0281C211C0AF0E8 +:100B300067FA236B061C002B06D0281C216A9847F5 +:100B4000002801DA01267642A3891B0603D5281C5A +:100B5000216900F0FBFA616B002908D0231C4433A3 +:100B6000994202D0281C00F0F1FA00236363A16CC3 +:100B7000002904D0281C00F0E9FA0023A3640AF03D +:100B8000DEFA0023A3810AF0DBFA301C70BDC046F8 +:100B9000041F0300241F0300441F030008B5034B78 +:100BA000011C1868FFF7A2FF08BDC046F000002036 +:100BB00038B50B69051C0C1C002B01D100201CE072 +:100BC000002804D08369002B01D100F095F80B4B6D +:100BD0009C4201D16C6808E0094B9C4201D1AC6891 +:100BE00003E0084B9C4200D1EC680C22A35E002B72 +:100BF000E4D0281C211C0AF003FA38BD041F0300AE +:100C0000241F0300441F030008B5011E05D1054B36 +:100C1000054918680AF0B5FA03E0044B1868FFF7B5 +:100C2000C7FF08BD641F0300B10B0200F0000020E5 +:100C300038B5051C0C1C002804D08369002B01D199 +:100C400000F05AF80E4B9C4201D16C6808E00D4B45 +:100C50009C4201D1AC6803E00B4B9C4200D1EC6894 +:100C60006368013B6360002B04DA281C211C01F03F +:100C70000BF803E023685A1C2260187838BDC04680 +:100C8000041F0300241F0300441F030008B5034B87 +:100C9000011C1868FFF7CCFF08BDC046F00000201B +:100CA00008B502490AF06DFA08BDC046B10B020052 +:100CB000002310B5041C0360436083608181436698 +:100CC000C281036143618361191C08225C300AF010 +:100CD000B0FA054B24626362044BA362044BE362E7 +:100CE000044B236310BDC046AD1E0200D51E02009A +:100CF0000D1F020001B40200836913B5002B28D137 +:100D00008364C3640365134B134A1B6882620193B7 +:100D1000984201D101238361041C00F01FF8606038 +:100D2000201C00F01BF8A060201C00F017F8042124 +:100D3000E06000226068FFF7BBFFA0680921012284 +:100D4000FFF7B6FFE06812210222FFF7B1FF01238F +:100D5000A36113BD641F0300A10C0200F8B51D4B75 +:100D6000061C1D68AB69002B02D1281CFFF7C4FFCD +:100D70004835AC686B68013B05D40C22A75E002F98 +:100D800010D06834F7E72B68002B06D1301C042103 +:100D90000AF0BFF92860002801D02D68E9E70C238C +:100DA000336016E00123201C5B42E3810233A38100 +:100DB00067662760A760676027616761A7615C302D +:100DC000391C08220AF035FA201C6763A763A76460 +:100DD000E764F8BD641F030038B5074B074C1D1CC2 +:100DE000E41AA410002C04D0013CA300EB5898474F +:100DF000F8E70AF009FC38BD240100202801002092 +:100E0000F7B50F1C111C01AA051C0AF032FB061EC7 +:100E100001D1002427E0281CFFF7A0FF041EF8D012 +:100E2000DB23281C391C019A5B0000F0ADFD002873 +:100E300006DA00250AF083F9A5810AF081F9E8E7CE +:100E40000A4BE08163620A4BA681A362094B2462CC +:100E5000E362094B2363F30505D5281C211C0022FE +:100E600002230AF06EF9201CFEBDC046AD1E020032 +:100E7000D51E02000D1F020001B4020008B5031CBC +:100E80000A1C03490868191CFFF7BAFF08BDC046D1 +:100E9000F000002070B5051C0E1C141C002804D0A6 +:100EA0008369002B01D1FFF727FF0A4B9C4201D138 +:100EB0006C6808E0084B9C4201D1AC6803E0074B2A +:100EC0009C4200D1EC68281C311C221C00F08AFDD9 +:100ED00070BDC046041F0300241F0300441F03000D +:100EE00008B5031C0A1C03490868191CFFF7D2FF48 +:100EF00008BDC046F0000020F7B5051C0C1C01928F +:100F00001E1C002804D08369002B01D1FFF7F4FEDA +:100F1000414B9C4201D16C6808E0404B9C4201D19E +:100F2000AC6803E03E4B9C4200D1EC688422A3896C +:100F300052001340934203D1281C211CFFF738FEB6 +:100F4000E36A0093002B01D11D3331E0012E05D05F +:100F5000022E31D01623002E2AD12DE0281C211C70 +:100F6000FFF726FE8023A2895B011A4001D0606D45 +:100F700006E0331C281C216A009EB047431C18D091 +:100F8000A3895A0707D56368C01A636B002B0AD080 +:100F9000236CC01A07E01B0705D52368002B02D07D +:100FA00022699B1AC018019B00261B18019303E0BD +:100FB0002B6001277F422DE02369002B03D1281CE1 +:100FC000211C00F057F8281C211CFFF7F1FD071E1B +:100FD000EFD1331C281C216A019A009EB047431CA4 +:100FE000E7D0616B002908D0231C4433994202D01A +:100FF000281C00F0ABF8002363630021201C236948 +:10100000A2892360074B61601340A3815C300822F2 +:101010000AF00FF9381CFEBD041F0300241F030053 +:10102000441F0300DFF7FFFF0E4B70B500251E1CA9 +:101030000D4CE41AA410A54204D0AB00F358984715 +:101040000135F8E70AF0DAFA084B00251E1C084CB7 +:10105000E41AA410A54204D0AB00F3589847013518 +:10106000F8E770BD100100201001002010010020E1 +:1010700024010020F0B58B8991B09B0706D50B1C8D +:1010800047330B600B6101234B6145E00C1C0E23C1 +:10109000C95E061C002904DA8023A5891D4010D1F1 +:1010A0000CE001AA01F098F90028F5DBF023029D7D +:1010B0001B021D40194BED186B425D418027FF005C +:1010C00001E000254027301C391C00F085F800287D +:1010D0000CD1A3899A051FD402221343A381231C98 +:1010E0004733236023610123636115E080220C4BA9 +:1010F000B362A38920601343A38120616761002D3F +:101100000AD00E23E15E301C01F078F9002803D0EC +:101110000122A3891343A38111B0F0BD00E0FFFFBA +:10112000A10C020008B5034B011C186800F054F82C +:1011300008BDC046F000002008B5034B011C18682C +:1011400000F004F808BDC046F000002030B50029CA +:101150003ED004390B68002B00DAC9181D4A136809 +:10116000141C002B02D14B60116031E099420DD26A +:1011700008680A189A4203D11368C3180B605368B1 +:101180004B60216024E08A4203D8131C5A68002A6D +:10119000F9D11D685C198C420BD10968691858187F +:1011A0001960904214D110685268091819605A6089 +:1011B0000EE08C4202D90C23036009E008680C1889 +:1011C000944203D114685268001908604A6059605B +:1011D00030BDC046DC2D0020032370B5CC1C9C43E1 +:1011E0000834051C0C2C01D20C2405E0002C03DA79 +:1011F0000C2300202B6042E08C42F9D3204A136874 +:10120000101C191C002913D00A68121B0DD40B2ABC +:1012100002D90A608B181FE08B4202D15A68026023 +:101220001BE04A685A600B1C17E00B1C4968E9E791 +:10123000144E3368002B03D1281C00F055FD30609C +:10124000281C211C00F050FD031C421CD0D003229E +:10125000C61C964386420AD11C60181C07210B301D +:101260001A1D8843821A0AD05142995007E0311A58 +:10127000281C00F039FD431CBAD0331CECE770BDCC +:10128000DC2D0020D82D0020F0B59FB0061C0F1CCF +:1012900002920593002804D08369002B01D1FFF747 +:1012A0002BFD794B9F4201D1776808E0774B9F4235 +:1012B00001D1B76803E0764B9F4200D1F768BB8944 +:1012C0001B070AD53B69002B07D0002306AD6B61D5 +:1012D00020336B761033AB763DE0301C391C00F0C8 +:1012E000F5FF0028F1D001204042CAE0059A111D07 +:1012F00012680591002A7EDB0992013423782E2B97 +:1013000000D189E021786348032209F05BFF0028BF +:1013100008D0604B0134C01A40238340181C2B684E +:10132000184328602178631C5B48062202932976C3 +:1013300009F048FF002800D191E0584B002B00D065 +:1013400084E00722059B07339343083305936B69B9 +:10135000039A9B186B61029C2378002B04D1029B9B +:10136000E31A049311D003E0252BF8D00134F3E7FE +:10137000049B301C391C029A09F078FF431C7BD077 +:101380006A69049B944663446B612378002B73D095 +:101390000122002352426A6002A9543252180134D9 +:1013A0002B60EB60AB601370AB6521783C48052285 +:1013B00009F008FF002809D0394B0134C01A012375 +:1013C0008340181C2B6818432860EEE72B68DA0668 +:1013D00004D55322202102A8121811701A0704D52F +:1013E00053222B2102A81218117022782A2A00D128 +:1013F0007CE7099B05E05242EA60022213432B601E +:101400007BE72278303A092A04D80A214B43013479 +:101410009B18F6E7099371E763782A2B09D1059B9E +:1014200002341A1D1B680592002B0DDA01235B4262 +:101430000AE0002301342278303A092A04D80A212C +:101440004B4301349B18F6E707935BE705AB00932A +:10145000301C291C3A1C134B00E000BF07E005AB11 +:101460000093301C291C3A1C0E4B00F01DF8039011 +:10147000039B013300D06AE7BB895B0600D532E7E6 +:101480000B981FB0F0BDC046041F0300241F0300CB +:10149000441F03002DB0030031B003000000000022 +:1014A00027B003006DB20200F0B58BB006920A1CA3 +:1014B00043320793059004920A7E0C1C109B6E2AFF +:1014C00000D1A8E011D8632A22D009D8002A00D17F +:1014D000B2E0582A00D0C2E045310A707C4A4FE0A1 +:1014E000642A1DD0692A1BD0B9E0732A00D1A7E075 +:1014F00009D86F2A29D0702A00D0B0E020220968CC +:101500000A43226037E0752A1FD0782A33D0A6E03C +:101510000E1C1A684236111D196013683370A1E061 +:1015200021681A68080606D4490604D5111D1960F9 +:101530000023D55E02E0111D19601568002D3BDA0D +:101540002D23049A6D42137036E021681A6808064C +:1015500006D4490604D51568111D1960ADB202E024 +:10156000111D196015685A4B227E03930A276F2AB2 +:101570001DD108271BE0221C782145321170554AE5 +:1015800019680392081D226818600D68100602D4BD +:10159000500600D5ADB2D30702D520231A432260EE +:1015A0001027002D03D1202322689A432260231C98 +:1015B000002243331A7002E00A27454B0393636805 +:1015C000A360002B03DB0422216891432160002DDE +:1015D00002D1049E002B0ED0049E281C391CF8F763 +:1015E000C1FA039B013E5B5C281C3370391CF8F781 +:1015F00033FA051EF1D1082F09D12368DB0706D580 +:1016000063682269934202DC3023013E3370049BFD +:101610009B1B23612BE009681A68080607D449065A +:1016200005D5111D19601368A28A1A8004E0111DE6 +:101630001960136862691A600023049E236116E032 +:101640001A68111D196016680021301C626809F0C3 +:10165000B9FD002801D0801B6060636803E0261C90 +:1016600042363270012323610023049A1370079BD2 +:1016700005980093211C069B09AA09F009FE431C4A +:1016800002D10120404221E0236905980699321CCD +:10169000079DA847431CF4D023689B0705D4099BEA +:1016A000E068984212DA181C10E00025E368099AF5 +:1016B0009B1A9D42F3DA221C0123059806991932E0 +:1016C000079EB047431CDCD00135EFE70BB0F0BDFF +:1016D00038B0030049B00300F7B5151C8A680190C3 +:1016E0000C1C002A06D18A69511E8A4101215242EE +:1016F0000A43A2602268D20603D41A68111D196039 +:1017000017680026A06900281DD123680136DB0672 +:1017100003D42B681B783B7001372A686B68013251 +:101720002A60A268013B013A6B60A260002A1FD0C8 +:10173000002BE7DCC0235B00E3580198291C984785 +:101740000028DFD014E0012808D12B6862691B78DB +:10175000D35C002BD9D1002E19D009E0022807D183 +:101760002B680B4A1B781268D3185B781B07CCD503 +:1017700010232268134006D1E2680132E260A269B8 +:10178000002A00D03B70002023699E192661FEBD0F +:10179000F4000020F0B50C1C8BB00193744B049046 +:1017A000161C07AA23CB23C2724B0593A369032BF4 +:1017B00001D0714B05930022A36803925D32591E3C +:1017C000FF32914205D95E3BFF3B03935E23FF331B +:1017D000A360231C1C330093D023002722681B0125 +:1017E00013432360009B02933268BB00117807AA61 +:1017F0009858022209F0E6FC002839D0012F0DD1BB +:101800006368002B06D1083322686360F933FF3325 +:1018100013432360594B226813400DE0022F0CD173 +:10182000C02280212368D2001A4089008A4222D136 +:1018300010226260F03213432360A3685A1EA26034 +:10184000002B15D0029B5D1C33685A1C32601B783C +:10185000029A029513707368013B7360002B07DCDA +:10186000C0235B00E3580498311C9847002844D1FA +:101870000137032FB8D16368002B01D10A336360AD +:101880001021002763686069C91A3D4BC91809F027 +:1018900079FD029DA368002B30D032686069117811 +:1018A000405C00282AD030290BD12168090508D5D1 +:1018B000039A0137002A0BD0013A01330392A36047 +:1018C00006E021682F4B0B40236013782B70013505 +:1018D0007368013B7360002B03DD336801333360B1 +:1018E00007E0C0235B00E3580498311C98470028A8 +:1018F00004D1A368013BA360CCE700272368DB0584 +:101900000ED5009B9D4207D9BE23013D5B0029787F +:10191000E3580498321C9847009B01209D4225D033 +:10192000102223681A401AD12A706368049800991B +:10193000059EB047019B22681B68910607D4D1071A +:1019400005D501991A1D0A601B68188004E00199E9 +:101950001A1D0A601B681860E3680133E360002009 +:10196000009BED1A2369ED195D1925610BB0F0BDDF +:10197000681F0300391F020075200200FFFAFFFFF5 +:101980005AB00300FFF6FFFF38B5051C0020074CD6 +:101990002060081C111C1A1CF3F710FC431C03D117 +:1019A0002368002B00D02B6038BDC046D42F002008 +:1019B0000FB40B4B13B51C68002C05D0A369002B8A +:1019C00002D1201CFFF798F905AB201CA168049AEE +:1019D0000193FFF759FC16BC08BC04B01847C04679 +:1019E000F000002070B5051C0E1C141C002804D04B +:1019F0008369002B01D1FFF77FF9154B9C4201D180 +:101A00006C6808E0134B9C4201D1AC6803E0124BB8 +:101A10009C4200D1EC68A368013BA360002B10DA64 +:101A2000A269934207DB23681E70236819780A298C +:101A30000AD1281C01E0281C311C221C00F0DAFB12 +:101A400005E023681E7023685A1C2260187870BD58 +:101A5000041F0300241F0300441F030070B5051C6E +:101A60000E1C002804D08369002B01D1FFF744F934 +:101A7000AB69AC68002B02D1281CFFF73DF9324B53 +:101A80009C4201D16C6808E0304B9C4201D1AC68AB +:101A900003E02F4B9C4200D1EC68A3891B0702D5C1 +:101AA0002369002B19D1281C211C00F00FFC0028F1 +:101AB00013D00120404245E03178002B1BDAA269A7 +:101AC000934211DA221C281C00F094FB01304242A0 +:101AD0004241D0B20028ECD10136A3683278013BF4 +:101AE000A360002AE8D10CE02368197023681978F4 +:101AF0000A2903D1E6E723681970236801332360BC +:101B0000EAE7002B17DAA269934208DB0A2322686E +:101B10001370236819780A2911D1281C01E0281CA8 +:101B20000A21221C00F066FB013042424241D0B241 +:101B3000002806D0BDE70A2322681370236801330A +:101B400023600A2070BDC046041F0300241F030049 +:101B5000441F030008B5034B011C1868FFF77EFF04 +:101B600008BDC046F0000020F8B5051C0C1C00287C +:101B700004D08369002B01D1FFF7BEF83D4B9C4296 +:101B800001D16C6808E03C4B9C4201D1AC6803E099 +:101B90003A4B9C4200D1EC680023A289636093B267 +:101BA000990663D459071AD4D90605D409232B60A2 +:101BB00037331A43A28159E0082633420AD0281C41 +:101BC000211CFEF7F5FF002850D1A389A060B34384 +:101BD000A381A0610422A3891343A38112E0616B56 +:101BE00000290FD0231C4433994202D0281CFFF750 +:101BF000ADFA0020236C60636360834202D0E36B24 +:101C0000236035E02369002B03D1281C211CFFF73A +:101C100031FAA789BEB2B3070FD00123A381184BB5 +:101C20001849186809F091FA0923A7813340092B54 +:101C300003D1281C211C09F0E3F92369281C1A1C74 +:101C40002360216A6369656AA847021C60600020FE +:101C500082420DDCA389824204D120221343A38156 + +:101C6000013805E0402213436060A3810120404217 +:101C7000F8BDC046041F0300241F0300441F0300D7 +:101C8000641F03006DB3020038B5051C0C1C00284E +:101C900004D08369002B01D1FFF72EF80F4B9C4233 +:101CA00001D16C6808E00E4B9C4201D1AC6803E0A6 +:101CB0000C4B9C4200D1EC68281C211CFFF754FF00 +:101CC000002807D16368013B636023685A1C2260C7 +:101CD000187801E00120404238BDC046041F0300CF +:101CE000241F0300441F030038B50023064C051CC5 +:101CF000081C2360F3F75AFB431C03D12368002B15 +:101D000000D02B6038BDC046D42F0020F7B51E1C74 +:101D10003C4B041C1D680F1C0192002D05D0AB69C3 +:101D2000002B02D1281CFEF7E7FF374B9C4201D164 +:101D30006C6808E0354B9C4201D1AC6803E0344B41 +:101D40009C4200D1EC68019B022B58D8002E56DB38 +:101D5000281C211CFEF72CFF00236360A361A389CC +:101D60001B0603D5281C2169FFF7F0F98322A389FC +:101D70009343A381019B022B13D0002F25D1002E6A +:101D800001D18026F600301CFFF7CCF9071E18D1D0 +:101D90008020C000FFF7C6F9071E10D10120404285 +:101DA00000E000200222A3891343A3810023A36043 +:101DB000231C4733236023610123636121E08026D4 +:101DC000F6008022A3891343A381019B012B05D137 +:101DD000A389019A1A437342A281A3610D4B00208B +:101DE000AB62A289276027616661130709D50323C7 +:101DF0001A40534253415B421E40A66001E001205D +:101E00004042FEBDF0000020041F0300241F030019 +:101E1000441F0300A10C02000EB410B59DB002A92E +:101E2000029008610B48822488604861012040428A +:101E30001FABC881084804CBA400006801938C81C3 +:101E400000F062FB0023029A13701DB010BC08BCA6 +:101E500003B01847FFFFFF7FF00000200EB481237E +:101E600070B59DB002AC21AD9B0040CDA381029026 +:101E7000069009F0E3FA0B4B606063620023636332 +:101E8000A364013BE381084B6061211C1868321C8C +:101E90002B1C019500F02EFC1DB070BC08BC03B0DB +:101EA0001847C046FDB30200F000002038B50C1CF6 +:101EB0000E25495F00F096FD002803DB636D1B18BB +:101EC000636503E0A289024B1340A38138BDC0467D +:101ED000FFEFFFFFF8B51E1C8B89051C0C1C171C9F +:101EE000DB0505D50E23C95E0022022300F098FA17 +:101EF000A289054B281C1340A3813A1C0E23E15EE6 +:101F0000331C00F0CFF9F8BDFFEFFFFF38B50C1C14 +:101F10000E25495F00F084FAA389421C03D1054ACB +:101F20001340A38104E0802252011343A381606522 +:101F300038BDC046FFEFFFFFF0B51E1C444B87B015 +:101F40001B68059002930B1C039101921C78029A66 +:101F50005D1C121950780822104001D02B1CF5E7A7 +:101F60002D2C04D19D1C5C780123009304E000908B +:101F70002B2C01D15C789D1C002E02D0102E0AD192 +:101F800060E0302C5CD120222B789343582B52D127 +:101F900010266C780235009F311C7B1E9F412D4B13 +:101FA000FF18381CF7F7DEFD381C0491311CF7F7D9 +:101FB00053FD0022071C131C029909194978480790 +:101FC00001D5303C07E00320084017D03721012815 +:101FD00000D02031641AB44210DA511C0BD0BB423D +:101FE00007D802D1049A944203DC73430122E31818 +:101FF00001E0012252422C780135DDE7181C511C0A +:102000000BD10098059A431E9841124BC018222309 +:102010001360019B002B0AD117E00099002900D022 +:102020005842019B002B10D0039B002A00D06B1E4E +:10203000019A136009E03024002EACD10826AAE7EB +:102040000A26A8E7302CA6D19DE707B0F0BDC04610 +:10205000F4000020FFFFFF7F38B5051C0C1C131C8B +:10206000034A291C1068221CFFF766FF38BDC046D2 +:10207000F0000020F0B51E1C3E4B87B01B68171CFB +:1020800002930B1C059004911C78029A5D1C121996 +:10209000517808220A4001D02B1CF5E72D2C04D1E1 +:1020A0009D1C5C780123019304E001922B2C01D14B +:1020B0005C789D1C002E02D0102E0AD154E0302CEA +:1020C00050D120222B789343582B46D110266C7880 +:1020D00002350120311C4042F7F7BEFC039001207D +:1020E000311C4042F7F73EFD00228C46131C02993A +:1020F00009194978480701D5303C07E0032008401A +:1021000017D03721012800D02031641AB44210DAE8 +:10211000511C0BD0039A934206D801D1644503DCCD +:1021200073430122E31801E0012252422C78013569 +:10213000DDE7181C511C04D122230599101C0B60EB +:1021400003E00199002900D05842002F0FD0049BD2 +:10215000002A00D06B1E3B6009E03024002EB8D16D +:102160000826B6E70A26B4E7302CB2D1A9E707B0B3 +:10217000F0BDC046F40000200B1CF7B54D6B443396 +:102180000C1C9D421BD18026F600311CFFF724F861 +:10219000002802D10120404225E0231C6063A66391 +:1021A00046331A78104BC254231C45331A780F4B10 +:1021B000C2542A780E4BC254C018206012E08E6BB5 +:1021C000291C73001A1C019309F08BF9051EE1D03C +:1021D0008719381C291C321C09F00EF8019B276056 +:1021E0006563A3630020FEBDFF030000FE03000043 +:1021F000FD03000070B5051C0E1C141C002804D043 +:102200008369002B01D1FEF777FD234B9C4201D15E +:102210006C6808E0214B9C4201D1AC6803E0204B84 +:102220009C4200D1EC68A369A360A3891B070AD56F +:102230002369002B07D023682269F6B2981A6369D4 +:1022400098420FDB08E0281C211C00F03FF8002812 +:10225000F1D0012040421DE0281C211CFEF7A8FC03 +:102260000028F6D1A3680130013BA36023685A1C03 +:1022700022601E706369984205D0A389301CDB0779 +:1022800008D50A2E06D1281C211CFEF791FC002837 +:10229000DFD1301C70BDC046041F0300241F0300A3 +:1022A000441F030038B5051C0020074C2060081CA3 +:1022B000111C1A1CF3F704F8431C03D12368002BEC +:1022C00000D02B6038BDC046D42F0020354B70B5F0 +:1022D0001D68061C0C1C002D05D0AB69002B02D11B +:1022E000281CFEF709FD304B9C4201D16C6808E0C8 +:1022F0002E4B9C4201D1AC6803E02D4B9C4200D197 +:10230000EC68A3899AB2110723D4D10607D4092215 +:102310000120326037321343A381404240E053072B +:1023200013D5616B002908D0231C4433994202D095 +:10233000301CFEF70BFF002363632422A389934321 +:10234000A38100236360236923600822A3891343C8 +:10235000A3812369002B0BD1A023A2899B001340EA +:1023600080229200934203D0301C211CFEF782FE93 +:102370000123A289134005D00023A36063695B4257 +:10238000A36103E0910700D46369A360002023697F +:10239000834205D1130603D540231A43A281013895 +:1023A00070BDC046F0000020041F0300241F03007E +:1023B000441F030038B50023064C051C081C23608D +:1023C000F2F768FF431C03D12368002B00D02B6079 +:1023D00038BDC046D42F002038B50023064C051C5C +:1023E000081C111C236006F002FC431C03D1236867 +:1023F000002B00D02B6038BDD42F002038B500232F +:10240000064C051C081C2360F2F7A8FF431C03D1EF +:102410002368002B00D02B6038BDC046D42F00208D +:1024200038B5051C0020074C2060081C111C1A1C24 +:10243000F2F7A8FF431C03D12368002B00D02B60C8 +:1024400038BDC046D42F0020F0B58E6885B0071C7B +:102450000C1C03920193B34245D390238A89DB007D +:102460001A423DD003250969236801985B1A02933B +:1024700063695D43EB0F5D19029B6D1001331B18FF +:102480009D4200D21D1C381C53050FD5291CFEF798 +:10249000A3FE061E13D0029A216908F0ADFEA289A0 +:1024A000184B134080221343A38111E02A1C09F02A +:1024B00018F8061E0CD1381C2169FEF747FE0C23C4 +:1024C000402201203B60A38940421343A38117E0CF +:1024D000029B2661F61826606561019EED1AA560D3 +:1024E000019BB34200D2019E321C2068039908F080 +:1024F0008CFE0020A3689B1BA36023689E192660A6 +:1025000005B0F0BD7FFBFFFFF0B59FB002900593D3 +:102510008B890E1C171C1B0610D50B69002B0DD1C7 +:102520004021FEF759FE30603061002804D10C23B1 +:10253000029A01381360D0E040237361002306AD96 +:102540006B6120336B761033AB763C1C2378002B09 +:1025500003D1E31B049312D003E0252BF9D00134FF +:10256000F4E7049B0298311C3A1CFFF76DFF431CF3 +:1025700000D1ACE06A69049B944663446B612378A4 +:10258000002B00D1A3E00122002352426A6002A97D +:102590005432521801342B60EB60AB601370AB65A2 +:1025A0004F4F2178381C052208F00CFE002808D077 +:1025B000C01B01278740381C2B6801341843286052 +:1025C000EEE72B68DA0604D55322202102A8121860 +:1025D00011701A0704D553222B2102A8121811706A +:1025E00022782A2A01D0099B0EE0059A111D126853 +:1025F0000591002A01DB099204E05242EA600222BE +:1026000013432B60013409E02278303A092A04D8B8 +:102610000A214B4301349B18F6E7099323782E2BAC +:1026200018D163782A2B09D1059B02341A1D1B6827 +:102630000592002B0DDA01235B420AE000230134EE +:102640002278303A092A04D80A214B4301349B18D6 +:10265000F6E70793234F2178381C032208F0B2FDD8 +:10266000002807D0C01B40278740381C2B68013446 +:102670001843286021781C480622671C297608F038 +:10268000A1FD002812D0194B002B06D10722059B73 +:10269000073393430833059314E005AB0093029886 +:1026A000291C321C124B00E000BF07E005AB009371 +:1026B0000298291C321C0E4BFEF7F6FE0390039B7A +:1026C000013304D06B69039A9B186B613DE7B389B2 +:1026D0000B985B0601D5012040421FB0F0BDC046FB +:1026E00027B003002DB0030031B00300000000004C +:1026F00049240200F0B5B54C071CA5440393002300 +:1027000086204893499305AB4A93BE2340000D1C95 +:10271000019202A9AE4A5B000918CA50AD4A02A94B +:1027200004330918CA50019B1C78002C00D144E1E5 +:10273000A94E33681B195A780823134023D06B68BD +:10274000002B10DD2B6831681A788A18527812072E +:1027500015D5499A01330292013249926A682B6079 +:10276000013A6A60EBE78621C023490002AA5218A9 +:102770005B00D358381C291C98470028E2D0019EE2 +:1027800001360196CFE7019A561C252C4FD147936D +:10279000459353782A2B02D11A3B45930136341CBA +:1027A00021780B1C303B092B09D8479B013401933E +:1027B0000A23019A5343303B59184791F0E7874E5B +:1027C0000322301C08F0FEFC002808D0801B0126E4 +:1027D0008640301C459B0134184301934590661C8C +:1027E0002478672C10D8652C00D384E05B2C5AD059 +:1027F00005D8002C00D1E2E0252C18D07DE0632C18 +:102800005FD0642C46D078E0702C34D007D86E2C82 +:102810005FD041D8692C70D10023469341E0752CDC +:1028200038D0782C2DD0732C67D1022347E06B6809 +:10283000002B0EDD2B681A78A24200D0BDE00133D8 +:102840006A682B60499B013A019301336A6049939E +:1028500097E78621C023490002AA52185B00D3588B +:10286000381C291C98470028E4D04898002800D03C +:102870009FE00138A5E0459B01932023019A134373 +:102880004593459B01938023019A9B0013434593F5 +:10289000102302E00A2300E00823469304236E2C51 +:1028A0000DDC03230BE0311C05A808F06BFD459BF4 +:1028B000061C01934023019A1343459301234B9334 +:1028C0001FE0459B01934023019A13434593002346 +:1028D000F5E74599CB0600D553E7039B499AC8070E +:1028E00004D5191D03911B681A804AE7191D03912D +:1028F0001B681A6045E70523E1E703234B93073381 +:1029000046936B68002B04DD459B01935B0618D54D +:102910001FE08621C023490002AA52185B00D35849 +:10292000381C291C98470028EED09EE7499A01924E +:10293000013249926A68013A6A60002A13DD013364 +:102940002B602B6824491A7809688A185278120774 +:10295000ECD44B9B022B13DC381C45A92A1C03AB7F +:10296000FEF7BAFE1FE08621C023490002AA5218D2 +:102970005B00D358381C291C98470028E1D074E725 +:10298000042B06DC381C45A92A1C03ABFEF702FF0A +:1029900009E0134B002B00D1F3E6381C45A92A1C93 +:1029A00003AB00E000BF012807D0022800D0E8E612 +:1029B0005BE7AB895B0604D501E0489801E00120A4 +:1029C0004042A7239B009D44F0BDC04664FDFFFF2D +:1029D0002FB50200A9B50200F40000202DB00300BD +:1029E0000000000038B5051C0020074C2060081CC2 +:1029F000111C1A1CF2F78EFC431C03D12368002B18 +:102A000000D02B6038BDC046D42F002010B5041C68 +:102A100008F014FD011C201CDDF7A6FC10BD38B524 +:102A2000051C03300C1C00F013FE2060457020686C +:102A3000023038BDF8B54578871C041C291C381CA9 +:102A4000DDF75CFC061E0BD1291C381CDDF738FCB9 +:102A500065192070AE70201CDDF70CFC061C02E02E +:102A6000201C00F01CFE301CF8BD08B5DDF7F0FBA3 +:102A7000007808BD08B5DDF7EBFB407808BD08B568 +:102A8000DDF7E6FB023008BD10B50C1CDDF7E0FBFE +:102A900043780230236010BD436870B5CC180368DA +:102AA00001269C4218D9067BB607F60F13D10723DF +:102AB00040349C430834051C211C806800F0DEFD76 +:102AC0000122002803D12B7B13432B7304E02C60DD +:102AD000A860161C00E00026301C70BD037B70B59A +:102AE000041C0E1C151CDB0703D5237B9B0706D497 +:102AF00014E0111CFFF7D0FF002805D1F5E763684B +:102B00002568AB420AD2ED1AA3686268311C981896 +:102B10002A1C08F07AFB63685D19656070BD10B50A +:102B2000041C002900D10131002321606360081CCE +:102B300000F08EFD0122A060237B002801D1134309 +:102B400002E0934302229343237310BD38B50D1C5A +:102B5000041C0131FFF7E3FF656038BD002382608C +:102B600001224360037B0160934392181343037374 +:102B70007047037B10B5041C9B0702D4806800F0EB +:102B80008EFD0023A36010BD002301224360037B60 +:102B9000934303737047007BC007C00FC0B27047F8 +:102BA000027B0023D20700D48368181C7047027B85 +:102BB0000023D20700D44368181C704738B5037B44 +:102BC000041C00209B0711D423680D1CA068C918A1 +:102BD00000F054FD002804D10122237B134323730A +:102BE00004E02368A060ED182560C01838BD38B532 +:102BF000037BDB0701D500200AE00D1C041CFFF756 +:102C00004BFF0028F7D06368A068E9186160C0181E +:102C100038BD38B5037BDB07DD0F002B01D000206A +:102C200009E00121041CFFF737FF0028F7D0A36853 +:102C300062689D54A06838BD10B50C1C0121FFF7D7 +:102C4000D6FF002800D0047010BD38B5051C081C44 +:102C50000C1C08F0F3FB211C021C281CFFF73EFF94 +:102C600038BDF8B5037BDB0701D5002019E04768C4 +:102C70000C1EBC4200D93C1C161C051C002A0ED0A0 +:102C8000111CFFF709FF0028EFD0A968A019081848 +:102C90003A1B091908F0B9FA6B689E196E60A868AA +:102CA0000019F8BD10B5141C0122FFF7DAFF002847 +:102CB00000D0047010BD10B5141C0122FFF7D1FF25 +:102CC000002800D0047010BD037BDB07DB0FDBB2F4 +:102CD000002B06D14268914201D9436001E0521AAB +:102CE00042607047037B70B5DB0714D44368994298 +:102CF00011D28E189E4201D341600CE0151C0A1CB3 +:102D0000041C816888189A1A521B891908F07DFAE8 +:102D100063685D1B656070BD38B5041C0D1C002226 +:102D200001794020E6F7CEFDE3682B60A3685843A5 +:102D3000686023790020AB6038BD416838B5C2684F +:102D40008C68031C0020A24207D29C68551C08799D +:102D5000A218C968DD60E6F7D7FD38BD7FB500254C +:102D60001C1C081C02230E1C0095111C0122DDF7FF +:102D70003BFC206803A9E9F70FFD0078012E03D181 +:102D8000291CDDF799FD02E06168DDF765FE04B0FE +:102D900070BD826810B5C3689468011C0020A3420E +:102DA00005D2D268980082580133101CCB6010BD48 +:102DB000F0B585B001900E1C171C0293E0F758FD8A +:102DC000019BB34254D2019B1C1F002F02D13368D8 +:102DD000039304E0381C316801F0D4FD0390351CE6 +:102DE0000434AC420FD2002F01D1216804E02168E5 +:102DF000381C01F0C7FD011C1920039AE5F746FABB +:102E0000029B9842ECD0043DAC4214D2002F01D179 +:102E10002A6804E0381C296801F0B4FD021C19205E +:102E20000399E5F733FA029B9842ECD023682A68AD +:102E300022602B60D4E72368326822603360019BF4 +:102E4000EA1A331B9B10013B921004349A4207DAB2 +:102E50000198291C3A1C029BFFF7AAFF0194AFE7D7 +:102E6000311C201C3A1C029BFFF7A2FF2E1CA7E777 +:102E700005B0F0BD08B50B1C0968021CC86889685C +:102E8000E8F774FA08BD38B5041C081CE5F770F9BA +:102E9000051C281CE5F7BAF9011C201C002902D0EA +:102EA000DDF7E8FEF5E738BD08B5031C0A1CC0686D +:102EB000996802F021FB08BD38B5051C102000F010 +:102EC000C7FB041C291CDEF729F8201C38BD73B58C +:102ED00000240D1C1E1C081C0094111C0123221C24 +:102EE000DDF782FBA54203D1281CFFF7E5FF05E0D3 +:102EF000201CFFF7E1FF3168FFF7C5FF76BD38B54D +:102F0000041C0D1CFFF7D8FF0023A4009D4206D02F +:102F1000A34204D0E958C268D1500433F8E738BD61 +:102F200008B5031C8068D968FFF7E9FF08BD83680E +:102F30000B60C368136070478160704738B5041C2C +:102F40000B1C151CA1681A1C00680023DEF77AFF11 +:102F5000E3688000C55038BD70B5146801291DD9DB +:102F60001025211C0378A94316D0082C08D1302B3A +:102F70001BD1202243781A43031C6F2A27D109E072 +:102F8000022C0BD1302B10D1202243781A43031C82 +:102F9000622A1CD1831C1AE0302B08D0002C04D1EB +:102FA0000A23136001E0002C09D0031C0FE0202647 +:102FB0004178831C31437829F5D1156007E06F29EA +:102FC00001D1673902E06229EAD160391160181A2B +:102FD00070BD10B57F244018431E14401C700C1A9D +:102FE0001C19002C05DD8024D2096442013B1443E6 +:102FF000F4E710BD30B50268051C00207F2411786D +:10300000C3010C4049B2E01801320029F6DB2A6006 +:1030100030BD13B5421C019202780C1C031C082A17 +:1030200010D8101CF6F7FAFC1D100E0508080E0E3D +:103030000A000533019314E00333FBE701A8FFF70F +:10304000D9FF0EE0192A01D80233F3E701A8FFF7F0 +:10305000D1FF01A8FFF7CEFF002C02D0019B18186A +:103060000190019816BD10B50C1C0221FFF7BFFDA1 +:10307000230A0A330370447010BDF8B50478002C9D +:103080002AD11E1C0D1C83684168171C041C8B422E +:103090000FD30C235943C068C031012200F0FBFA62 +:1030A000002802D10123237016E06368E06010332A +:1030B0006360A368E1685A1CA2600C225343CB18DA +:1030C0001A682D02290A150E2D060D431D603A7847 +:1030D0005E60DA70069A9A60F8BD10B50C1C052186 +:1030E000FFF785FD03230370431C05301C7001337B +:1030F00024128342FAD110BD70B5041C161C0025A1 +:1031000083690135DB09FCD16B1C081C191CFFF716 +:103110006EFD08230370291C0130A269FFF759FFD7 +:103120006569A369AB4206D30835A900E06900F0E0 +:10313000A5FA6561E061A369E269591C9B00A16180 +:103140009E5070BDF0B5046A89B0231C40330393D0 +:103150001D78071C0E1C082D08D1A16CE06CDDF752 +:1031600003F9011C301CFFF77EFF69E0092D0DD12A +:103170000022E06CA16C231CE0F7C6FB021CC30715 +:103180000ED54110301CFFF7A8FF59E00A2D0CD1D5 +:1031900000940122E06CA16C0023E0F741FC021CCA +:1031A000381C311CFFF7A8FF4AE02B1C0B3B012BFE +:1031B0003FD804A8A16CFFF7B2FC04A8E16CA26C94 +:1031C000FFF78CFC201C02F0DFF8039B1B78AB425E +:1031D000F3D00B3B0020012B36D9059906980A291C +:1031E00002D8DDF7C1F801E0DDF788F8041E0DD044 +:1031F0000B3D6B425D410523301C03215D1BFFF736 +:10320000F6FC4470240A057084700EE00698059957 +:103210000B2D03D1221CE8F707FE01E0E8F71CFEA6 +:10322000021C311C381CFFF767FF04A8FFF7A1FC44 +:1032300009E0081C0221FFF7DAFC01234570037046 +:10324000201C02F0A1F8012009B0F0BD13B5013037 +:10325000019001A80C1CFFF7CDFE2060019816BD5F +:10326000002310B50B60C2185278DC00A2400C6835 +:10327000013322430A60042BF5D1053010BD07B598 +:1032800001A9FFF7EDFF01980EBD10B502780023EC +:10329000032A06D10C1CFFF7F2FF0123400018435C +:1032A0002060181C10BD38B50D1C0024A84204D2A3 +:1032B00001210134FFF7ADFEF8E7201C38BD08B549 +:1032C0000121FFF7A6FE08BD08B50021FFF7A1FE0A +:1032D00008BD13B50130019001A80C1CFFF78AFE50 +:1032E00001A8FFF787FE019B18182060181C16BD67 +:1032F00013B5041C00680378002B02D10130206054 +:103300000DE0192B02D91A318B4203D00121FFF7AE +:1033100080FE04E001A9FFF7DCFF2060019816BDE4 +:1033200037B51C1C431C0193037801A81A3B0B60A2 +:10333000151CFFF75FFE286001A8FFF75BFE019BED +:1033400018182060181C3EBD07B501A9FFF7C1FF82 +:10335000019BC01A43425841C0B20EBD10B58068EF +:10336000002804D0446800F09AF9201CF8E710BD4A +:1033700073B5051C01A98068E8F794FDEB68019A14 +:10338000061C002093420CD2F618301C00F042FDBF +:10339000841B211C301C0122E8F746FDEB681C1938 +:1033A000EC6076BD73B51D1C061C0023081C111CA7 +:1033B00002220093131CDDF717F90C2000F048F9E6 +:1033C00006602B68041C43606868E4F7D1FEA060C7 +:1033D000201C76BD704708B5DEF772FB4068FFF72A +:1033E0004EFB08BD08B5830702D000F083FC07E060 +:1033F000002803DB01234000184301E000F095FCA6 +:1034000008BD70B5041C0E1C151CDEF759FBC36A01 +:10341000181E06D0201C311C2A1C984743425841D4 +:10342000C0B270BD022803D149000138084300E052 +:103430000020704708B5DEF74FFFF0F72DFDDEF7EF +:1034400089FF0028F9DB08BD08B5406902F092FB4E +:1034500008BD08B5406902F086FB08BD038870B559 +:103460000469032B09D10023C568AB4205D09E0037 +:10347000A659964208D00133F7E78B004069E25025 +:1034800002F069FB012000E0002070BD38B50C1C83 +:1034900089B2051C018042608360032905D1C3689D +:1034A00000219A00006907F0C4FE211F4B424B41E6 +:1034B0006869591C02F031FB68690021EAF724FAB7 +:1034C00038BDF0B5041C85B040690F1C02F079FBD3 +:1034D000606902F03BFB2388042B15D1606902F080 +:1034E00038FB6368051C60695E6902F030FB0022EE +:1034F00061680092498B031C019102920397301C72 +:1035000005212A1CDFF718FC05B0F0BD38B5051CF5 +:10351000182000F09DF8041CC560A80000F098F881 +:103520002061281C02F0DEFA6061201C38BD10B555 +:10353000041C006900F0B3F86069002102F0DFFAB2 +:10354000201C00F0ACF810BD08B5102000F092F877 +:10355000072203789343063A1343037008BD0378A8 +:1035600010B55B07041C5B0F052B06D0081CA36875 +:10357000111C6268E5F7C4FC06E003686168D802C4 +:10358000400DE268E5F706FD23889B0601D5E2F7CA +:1035900047FA10BD38B5141C802252000A400D1C99 +:1035A000111E01D021686268FFF7D9FF0223EA09E2 +:1035B0001A409A40E9B2A218E8F726FB38BD8368A2 +:1035C000C268934203D25A1C8260187801E001203D +:1035D00040427047036810B5041C002B02D04068BD +:1035E00000F05DF8201C00F05AF810BDFC30C160FE +:1035F0000261704738B5041C012500236A1ED2B24F +:103600009200A218FF32507C7F2806D102339B0023 +:103610001855201CE4F712FA38BD7E280AD17F2203 +:1036200002339B001A55201CE4F708FA00230135E9 +:10363000EDB2E3E70028FAD0990061180872907C97 +:1036400001334872D07CDBB28872127DCA72EEE719 +:1036500010B50021041CE3F709FC002804D1002C5C +:1036600002D0201CE5F71AFB10BD08B50021E3F7D6 +:10367000FDFB08BD08B5FFF7EBFF08BD10B5012243 +:103680000C1CE3F7F3FC002804D1002C02D0201C12 +:10369000E5F704FB10BD08B5E3F7E8FC08BD08B585 +:1036A000E3F768FC08BD00B50B7905280FD8F6F7DD +:1036B000B5F9030E05050709081C09E05B0003E0E6 +:1036C000584200E0D84343000120184300E00020A6 +:1036D00000BD08B50123097949001943E4F7D6FD77 +:1036E00008BDF0B585B000AF7A6052003B6053185A +:1036F000061CB960FB605D1C042B09D86A46AB0050 +:103700000E33DB08DB00D31A9D4600256C4605E02E +:10371000A800FFF7AAFF041EF0D0051C201CB36808 +:10372000396808C0FB689A0007F066FDB968231C79 +:10373000013170687A68E4F721FC041C002D02D086 +:10374000281CFFF7ACFF201CBD4605B0F0BD38B506 +:103750008368041C5D1C85604068DEF711FCDEF7A1 +:1037600099FA854201DB0023A3600121A368606808 +:103770005B0019430422DEF719FC38BD0B6870B5F5 +:103780008668DC00B34209D2C26801331219156899 +:10379000002D01D0042D03D10834F3E7002200E00E +:1037A0000B60101C70BD011C08B50C318068FFF760 +:1037B000E5FF031E00D0186808BD1FB5011C041CDE +:1037C0000C318068FFF7DAFF031E11D02279012A3D +:1037D0000BD0022A0BD01A6802A902925B68022061 +:1037E00001930393E6F76EFA02E0186800E0586868 +:1037F00004B010BD0B6810B504334C6800220328D8 +:1038000000D18A68181C211C0123E0F727FB10BD9A +:103810000B6810B504334C680022032800D18A6875 +:10382000181C211C0223E0F719FB10BD0B6810B512 +:1038300004334C680022032800D18A68181C211C1C +:103840000023E0F70BFB10BD10B50C7A031C002021 +:10385000012C05D11F2B03D1181C4968E0F748FB48 +:1038600010BD38B5051C1020FFF7F2FE041C291C02 +:10387000E0F730FC201C38BD38B5051C8068FFF728 +:10388000F0FF2B68416803606B68041CDB08DA00FA +:1038900007230B401343436001232A791A40111C6C +:1038A00002799A430A4302218A4302712A79CA4063 +:1038B00013409A00037949188B4313430371AB6893 +:1038C000E968DA00C06807F097FC201C38BD406842 +:1038D000C008704738B5151C041C01220430E1F7FC +:1038E000DFF84560201C38BD10B5041C00220223FF +:1038F0000430E0F7B3FA201C10BD04307047802379 +:10390000F0B55B0587B01D69E0F756FC037805AF9D +:10391000FD2B0BD1E0F750FC03783B70E0F74CFC3B +:10392000041CE0F755FC019500901BE0E0F750FC0B +:1039300003783B70E0F74CFC041CE0F73DFC6B4265 +:10394000009001930EE03378002B05D0E801201899 +:10395000311C8022E1F712FD01358036039B9D4228 +:10396000F1D1029C009B9C4210D0019B201CE318CB +:10397000029300F021FA201C00F01EFA80235B0560 +:103980001B69029EDB0903930025E7E7201C00F07A +:1039900013FA201C391C0122E1F7F0FCE0F782FC4D +:1039A00007B0F0BD38B5051C07F048FD0022011C2A +:1039B000131C281CE0F782FD041E05D0281CFFF70D +:1039C00025F8211CE0F704FF38BDF0B5071C85B0D1 +:1039D0000E1C00680968F9F751FF3B68041C356844 +:1039E000181C211C0393F6F787FF291CF6F760FCCF +:1039F00000210290201CF6F7FBF9002805D00024D6 +:103A0000002D24DA8024240621E001236A460021C7 +:103A10001370201CF6F7F2F9431E9841009B4042B8 +:103A200003400021281C0093F6F7E8F9431E984153 +:103A30006B461B7883420AD0201C291CF6F7BCFA7F +:103A4000FE21041C89050298F6F756FF02900298A1 +:103A50000021F6F7CDF9002809D0291C0398F6F7C4 +:103A600027FC0025002816DA80252D0613E0029891 +:103A7000F9F7BAFB051C291C0298F6F73DFFFC215B +:103A80008905F6F7CFF9002805D0FE21281C890505 +:103A9000F6F792FA051C3D60346005B0F0BD08B53C +:103AA000FF23DB05C91803239943E0F72DFF08BD69 +:103AB00010B5041C4160002901D1816003E0C800F9 +:103AC000FFF7D8FDA060072322681340236001237D +:103AD000237010BD072310B5046841602340C9005E +:103AE00019430723016019430170826010BD0378F8 +:103AF00010B5041C9B0702D48068FFF7D0FD072394 +:103B0000216800220B40012123600B4349188B439D +:103B100062602370A26010BD002310B5041C016018 +:103B200043608800FFF7A6FDA06010BDF0B50368F4 +:103B300087B0041C0E1C0292002B04D1131CDB075F +:103B40005CD5E1F7E7F8311C0220E4F7ADF943104A +:103B5000181C21680593F6F705F800270D1C049141 +:103B6000AB000393039AA3689B181A680192002A7A +:103B700006D1029AD20741D5002F2FD11F1C2DE06C +:103B8000019A042A03D1002F1BD11F1C19E00198B0 +:103B9000311CDEF72DF8002813D0029B9B070ED5B1 +:103BA0006368681C013B63602168F5F7DBFFA6686A +:103BB00089008B59002B00D00423039AB35001983D +:103BC0001DE0681C2168F5F7CDFF049B0D1E9D428A +:103BD000C6D1029BDB0711D5002F05D06368301CCE +:103BE000013363603E600AE0201CE1F793F805981A +:103BF0002168F5F7B7FF0D1C0491B1E7002007B06D +:103C0000F0BD002370B501688B4216D086689D0018 +:103C100075192C680133002CF6D0042CF4D04268BE +:103C2000013A4260181CF5F79DFF89008B59002B63 +:103C300000D004232B60201C00E0002070BD10B5D4 +:103C4000041C8068FFF72BFD002323606360A360E2 +:103C500010BDF0B587B004920EAA12780F1C059221 +:103C60000FAA12781C1D0392039B061C0C99201CA2 +:103C70000D9AEAF7CBF83B68051E9D4203D9FFF782 +:103C8000E7FC30603D603568039B01950093201C84 +:103C9000059B0C990D9A02F01BFE049B1860281CD2 +:103CA00007B0F0BD08B5043002F0B5FD08BD012233 +:103CB000031C104004D058100AD4431E984109E058 +:103CC0009968002906D0187910404042104301E05D +:103CD000012040427047D3B50F1C061CE1F76CF879 +:103CE0000123041C0093321C3B1C043002F086F9B3 +:103CF000201CD6BD08B543001A1C424002D4012046 +:103D0000184302E0C117FFF7E6FF08BDD3B50F1C4B +:103D1000061CE1F751F80023041C0093321C3B1CE5 +:103D2000043002F06BF9201CD6BD08B5830F03D117 +:103D300040000133184302E00021FFF7E7FF08BD10 +:103D4000F0B585B0041C0F1C161C0393E1F734F882 +:103D5000039B051C00932168331C3A1C043002F0BD +:103D6000D9F9236818182060281C05B0F0BD08B5E3 +:103D7000C30701D5401002E0043002F037FD08BD52 +:103D800008B5C30703D54010F6F754FF02E004302E +:103D900002F07FFD08BD08B50220E7F717FA08BD5D +:103DA00038B5051C0C1CE7F729F9281C211CF5F770 +:103DB00013FAE7F713F938BD10B5041CE7F71EF93D +:103DC000201CF5F7E9F9E7F709F910BD80235B0539 +:103DD0001B69013B184043425841C0B2704710B5BF +:103DE00003787F22191C914312D0134040221342C2 +:103DF00002D093435208FAE7421C10783F21041C7A +:103E00008C43802C04D19B01014001320B43F4E729 +:103E1000181C10BD3F22013003789343802BF9D04A +:103E20007047002210B5814208D93F2401390B7830 +:103E3000A343803B5C1EA341D218F4E7101C10BDC5 +:103E4000021C4118002010B58A4208D23F24137882 +:103E50000132A343803B5C1EA341C018F4E710BDB0 +:103E600010B5041CE1F70EFF031C201C002B00D032 +:103E7000203010BD10B5041CE1F710FF031C201CFE +:103E8000002B00D0203810BD3038092802D920235B +:103E9000984307387047002210B543889A420CDADD +:103EA00003230021534344680132E1544468E41879 +:103EB00061704468E3189970EFE7E1F725FF10BDE2 +:103EC00070B5468804AC257801248E420AD90234A4 +:103ED0006143446864186270002442685354436824 +:103EE00059188D70201C70BD4368F7B5051C9800EB +:103EF000FFF7AEFB0026071C69688E4210D2B300A4 +:103F00000193EB18D868E4F781F9041E04D1381C3A +:103F1000FFF7C5FB201C08E0019B0136F850EBE7DA +:103F2000A86800223B1CE4F729F8FEBD1FB54868CD +:103F3000012201A9DEF76EF80020029B019A013BE5 +:103F4000D318934204D3197800020843013BF8E7E1 +:103F5000FFF7EBFE05B000BD002803DAFF23DB0509 +:103F6000C01801E0C00DC0059C23DB0583428041E1 +:103F700040427047102230B58DB00692063A00924A +:103F800000220B1C051C01920292039206A907AAAB +:103F900008AC05A80594E2F7CDF8011C281C02F036 +:103FA0003CFD0598A04201D0FFF779FB0DB030BD74 +:103FB00007B512216A46E4F75FF80098431E98415E +:103FC000C0B20EBD406870474160704773B5141CA5 +:103FD0006A46551D0B1C291C7F22013D22402A7078 +:103FE000E409F9D16E46491B9847731B04339C4280 +:103FF00006D080212A5D49420A4302550134F6E782 +:10400000327901AB5D1B425573BD4379012B09D059 +:104010008368C918C36881605A8C914200DD598455 +:104020000023837170474279036A032A02D8591822 +:10403000016203E0026BC9180162D018704710B525 +:104040000C1C0121FFF7EFFF047010BD10B5427981 +:10405000836A032A02D85B18836205E0426A046B14 +:104060009A18CB188362A01810BD10B50C1C012142 +:10407000FFF7ECFF047010BD38B5151C041C0121BE +:10408000FFF7C3FF2A1C201C1B21E2F7B1FB38BD40 +:1040900038B50D1C041C0121FFF7B7FF2A1C201C9A +:1040A0001C21E2F7A5FB38BD38B50D1C041C01210D +:1040B000FFF7ABFF2A1C201C1D21E2F799FB38BD3E +:1040C000012138B5151C041C4942FFF79EFF2A1C2C +:1040D000201C2321E2F78CFB38BD38B50D1C0121D3 +:1040E000041C4942FFF791FF2A1C201C2421E2F7FF +:1040F0007FFB38BD38B50D1C0121041C4942FFF778 +:1041000084FF2A1C201C2521E2F772FB38BD08B56C +:104110002821E2F76DFB08BD08B52921E2F768FB0D +:1041200008BD38B50D1C041C0021FFF76EFF2A1CCA +:10413000201C2A21E2F75CFB38BD38B50D1C041C9D +:104140000021FFF762FF2A1C201C2B21E2F750FB05 +:1041500038BD38B50121141C051CFFF756FF0F2C84 +:1041600006D8211C5039C9B2281CFFF77EFF04E095 +:10417000281C1A21221CE2F73BFB38BD012138B56F +:104180004942141C051CFFF740FF0F2C06D8211CC8 +:104190004039C9B2281CFFF768FF04E0281C22211F +:1041A000221CE2F725FB38BD38B5041C151CFFF7AF +:1041B0005CFF0322A36A201C03339343A362042100 +:1041C000FFF744FF056038BD38B543790D1C002466 +:1041D000032B06D9836A033CE41AC3699200D358BF +:1041E000E4180321FFF732FF4470240A057084703D +:1041F00038BDF8B5069C151C079AC91A1F1C630028 +:10420000061C2402C91A002A04D00239FFF7FDFE59 +:10421000013501E0FFF7F9FE3A1CE9B2301C2243F8 +:10422000E2F7E6FAF8BD08B53820FFF723FA08BD33 +:1042300010B5041C81618800FFF70AFAE06110BD27 +:1042400010B5041CC069FFF72AFA201CFFF727FAF3 +:1042500010BD8079431E9841C0B2704783685918D9 +:104260008160704738B5041C0D1C0021FFF7CDFE9E +:104270006379012B05D0032B03D8A26AE369AD0053 +:10428000EA5038BD38B50D1C0121041C4942FFF726 +:10429000BCFE2A1C201C6821E2F7AAFA38BD38B5FA +:1042A0000D1C041C0121FFF7B0FE2A1C201C6921F3 +:1042B000E2F79EFA38BD012110B5041C4942FFF710 +:1042C000A4FE201C6A21FFF7D0FE10BDF7B50D1C1F +:1042D0000121061CFFF799FE2B1C10333F2B06D83B +:1042E000291C8039C9B2301CFFF7BFFE33E014210E +:1042F000301CFFF7BAFE6B465C1D211C2A1C7F2771 +:10430000ED11013C3A406B1C2270012BF6D8231CA6 +:104310004020013504D1024208D1013C277005E05C +:10432000024203D00022013B013C1A706D46091B7A +:10433000301CFFF78BFE00232A1B0432934206D069 +:104340008026E15C76423143C1540133F6E72A7995 +:1043500001AB1C1B0255F7BD38B50D1C041C012117 +:10436000FFF753FE2A1C201C1621E2F741FA38BD44 +:1043700038B5041C0D1C0121FFF747FE201C172136 +:10438000FFF773FE0322A36A201C03339343A36247 +:104390000421FFF75BFE056038BD10B5041C012148 +:1043A000FFF733FE201C1821FFF75FFE10BD38B564 +:1043B0000D1C041C0021FFF728FE2A1C201C1E21B6 +:1043C000E2F716FA38BD38B50D1C041C0121FFF7C1 +:1043D0001CFE2A1C201C1F21E2F70AFA38BD10B56A +:1043E000041C0121FFF711FE201C2021FFF73DFED8 +:1043F00010BD012110B5041C4942FFF706FE201C28 +:104400002121FFF732FE10BD38B50D1C0221041C1E +:104410004942FFF7FAFD2A1C201C2621E2F7E8F9A1 +:1044200038BD032110B5041C4942FFF7EEFD201CE6 +:104430002721FFF71AFE10BD10B5041C0121FFF75C +:10444000E4FD201C3021FFF710FE10BD10B5041C48 +:104450000221FFF7DAFD201C3121FFF706FE10BD17 +:10446000012110B5041C4942FFF7CFFD201C322169 +:10447000FFF7FBFD10BD10B5041C0021FFF7C5FDC3 +:10448000201C3321FFF7F1FD10BD38B5041C0D1CB5 +:10449000FFF783FF201CFFF7EEFF291C201CFFF70E +:1044A000B3FF38BD10B5041C0021FFF7AEFD201C82 +:1044B0003421FFF7DAFD10BD10B5041CFFF76DFFC6 +:1044C000201CFFF7EFFF201CFFF7ABFF10BD38B536 +:1044D0000D1C041C0021FFF798FD2A1C201C35210F +:1044E000E2F794F938BD70B50E1C0121041C494255 +:1044F000151CFFF78AFD201C3621002E00D1372124 +:104500002A1CE2F783F970BD70B50E1C0121041C52 +:104510004942151CFFF779FD201C3821002E00D1DF +:1045200039212A1CE2F772F970BD38B50D1C041C44 +:104530000421FFF76AFD2A1C201C3D21FFF744FEE1 +:1045400038BD38B50D1C041C0021FFF75EFD2A1C88 +:10455000201C3F21FFF738FE38BD38B50D1C041C68 +:104560000021FFF752FD2A1C201C4021FFF72CFEE2 +:1045700038BD012110B5041C4942FFF746FD201C3F +:104580004121FFF772FD10BD10B5041C0021FFF79B +:104590003CFD201C4221FFF768FD10BD38B50D1C05 +:1045A000041C0121FFF731FD2A1C201C4321FFF7C9 +:1045B0000BFE38BD012108B54942FFF726FD08BDB5 +:1045C00010B5041C0021FFF720FD201C4421FFF73B +:1045D0004CFD10BD38B5041C0D1CFFF7F1FF201C6D +:1045E0000F21E2F73DFA291C201CFFF73BFE0421B6 +:1045F000201C4942FFF709FD201C3E21FFF735FD35 +:1046000038BD10B5041C0021FFF7FFFC201C45211C +:10461000FFF72BFD10BD38B50C1C0021051CFFF762 +:10462000F4FC211C3039281CC9B2FFF71EFD38BD2F +:1046300070B5051C0C1E222C05D00026232904D1A0 +:104640000136033C01E001261F240121281C4942B8 +:10465000FFF7DBFC211C2939C9B2281CFFF705FD37 +:10466000002E07D0281C0021FFF7CFFC281CD621E4 +:10467000FFF7FBFC70BD38B50C1C0121051C091BA4 +:10468000FFF7C3FC281C5021221CE2F7B1F838BD0B +:1046900038B50C1C0121051C091BFFF7B6FC281CB2 +:1046A0005121221CE2F7A4F838BD38B50D1C0121B8 +:1046B000041C4942FFF7A9FC2A1C201C5221E2F7E6 +:1046C00097F838BD38B50D1C041C0121FFF79DFC7F +:1046D0002A1C201C5321E2F78BF838BD022110B5AB +:1046E000041C4942FFF791FC201C5421FFF7BDFC3C +:1046F00010BD38B50D1C0221041C4942FFF785FC92 +:104700002A1C201C5521E2F773F838BD38B50C1C63 +:104710000121051C091BFFF778FC281C5621221CCF +:10472000E2F766F838BD38B50D1C0121041C49427A +:10473000FFF76BFC2A1C201C5721E2F759F838BD03 +:1047400038B50C1C0121051C091BFFF75EFC281C59 +:104750005821221CE2F74CF838BD38B5051C0C1C5A +:104760000139FFF752FC281C5921221CE2F740F8BE +:1047700038BD70B5151C061C0C1C8918FFF745FCCC +:104780002A02301C22435A21E2F732F870BD38B5B4 +:104790000D1C041C13430121002B04D1FFF735FC31 +:1047A000201C602104E04942FFF72FFC201C6121FE +:1047B0006A69FFF7F9FC38BD70B50E1C0499041C3A +:1047C0000B43D5B2002B06D10121891AFFF71DFC3E +:1047D000201C622104E0D143FFF717FC201C632159 +:1047E0007269FFF7E1FC291C201CFFF73EFC70BD3D +:1047F00013B50C1C0092019300216422231CFFF7C7 +:10480000F8FC13BD13B50C1C012100920193494221 +:104810006622231CFFF7EDFC13BD012110B54942B0 +:10482000041CFFF7F2FB0123201CA3715B21FFF79F +:104830001CFC10BD38B5051C0C1C4942FFF7E5FBFC +:10484000281C0221FFF702FC5C234470037038BD72 +:1048500010B5041C0021FFF7D8FB0421E268201CDE +:10486000137E0B4313765931FFF7FFFB10BD012177 +:1048700010B5041C4942FFF7C8FB0421E268201C64 +:10488000137E0B4313765A31FFF7EFFB10BD83689D +:104890000633836070478368053B8360704770B55B +:1048A00000221E2B02DD1A1C1E3A07E0E2258418A6 +:1048B000ED00641924787F2C0DD10132D2B2F5E7D6 +:1048C0000132D2B29A420ED0E2268518F600AD1916 +:1048D0002D78FF2DF4D0E22664188518F600E4B296 +:1048E000AD192C70ECE770BD08B50222E3F712FA9F +:1048F00008BD08B50122E3F70DFA08BD816808B5C7 +:10490000031C081E09D00139181C996001234900B5 +:10491000194340680422DDF749FB08BD7FB5061C3A +:104920000024081C111C01221D1C0094131CDBF721 +:104930005BFE2868292102AAE3F79EFB029BA342A3 +:1049400005D0201C211C02AA00F024F80DE00C2048 +:10495000FEF77EFE06602B68041C43602868DDF7C6 +:104960000FFBDDF797F9A060201C04B070BD08B5FF +:1049700000F005F908BD002108B50A1C0B1CE3F77F +:10498000FDFA08BD07B50022019101AB0121E3F753 +:10499000F5FA0EBD536810B50C1C591E8B41191841 +:1049A0009B00D31A08331068221CE3F7E7FA10BD06 +:1049B00007B56A46E3F790FB01990098002901D0FA +:1049C000DFF766F90EBDF8B500F0D7F8FEF795FFF2 +:1049D0000025071C7B689D4215D2BB68EE009C59E0 +:1049E000002C0ED0042C0CD0E408201CFEF747F855 +:1049F00003785F2B05D0BB68201C9E197168E3F714 +:104A000023FA0135E6E7F8BD10B50C1CF5F79AF965 +:104A1000002902DA002C04DC04E0002902D0002C7A +:104A200000DA0919081C10BD08B5002804DB0029AC +:104A300006DACB43C01803E0002901DB401A01303D +:104A4000F5F79AF808BDF0B50E1C171C041C017987 +:104A50008288C907C90F87B0C9B21D1C5208C38814 +:104A60000091301C391CDBF7BFFD2379DB070AD529 +:104A7000B200AA1803A8391CFFF72CF8A368301C51 +:104A8000291C03AA18E0A3885B08032B16DCE28824 +:104A9000934213D1012B06D0022B08D0002B09D151 +:104AA000A36898470EE0A368286898470AE0A368BF +:104AB00003CD06E0A36807CD984703E0301C291C0E +:104AC000A368984707B0F0BDF0B5061C1C1C002376 +:104AD0000125081C0F1C111C726885B00093131C63 +:104AE000DBF782FDB3681D43002F01D1A84736E0F4 +:104AF0002068012F03D1E4F797F9A8472FE0022F90 +:104B000009D1E4F791F9071C6068E4F78DF9011CFD +:104B1000381CA84723E0032F0ED1E4F785F9071CC2 +:104B20006068E4F781F90290A068E4F77DF90299E2 +:104B3000021C381CA84712E0E4F776F9071C6068ED +:104B4000E4F772F90290A068E4F76EF90390E06868 +:104B5000E4F76AF90299031C039A381CA847F16824 +:104B6000E1F792FD05B0F0BD07B5019001A800F096 +:104B700035FC01A800F032FC0EBD8068704770471C +:104B800008B5031C0A1C0B20191C0023DEF75AF978 +:104B9000E4F7F0FA08BD08B5011C0B20DFF718FE9A +:104BA000E4F7E8FA08BD10B5041C06F047FC011C48 +:104BB000201CDFF74FFCFF38431E9841400010BD1A +:104BC00070477FB56846E2F7FFF80123029840007E +:104BD000184307B000BD7FB56846E2F7F5F801233A +:104BE00001984000184307B000BD38B5051C081CEB +:104BF000E3F7BEFA041C201CE3F708FB011E04D0F7 +:104C0000281D0122FEF792FFF5E738BD10B5041C00 +:104C1000E4F750FC201CE4F7D7FB2368036010BDC9 +:104C200038B5041C0D1CE4F745FC201CFFF7EEFF13 +:104C3000041C291CFFF7D9FF201C38BD70B5051CCA +:104C40000E1CE4F737FC281CE4F7BEFB041C311CE7 +:104C5000E4F77EFC2B68201C236070BDF7B50D1CAB +:104C60000190002A04D00868E4F750FC2C6807E0A3 +:104C70000C68201CE4F71EFC201CE4F7A5FB041CB8 +:104C80000126019B9E4215D2B300E858844203D10D +:104C9000201CE4F791FC0BE0E3F76AFA071C381CD0 +:104CA000E3F7B4FA011E03D0201CE4F777FCF6E723 +:104CB0000136E6E72B68201C1B682360FEBD08B5A3 +:104CC0000022FFF7CBFF08BD30B58468C368656874 +:104CD0009900AB420AD2E26801335258002A03D04D +:104CE000042A01D0C36002E00431F2E70022101C64 +:104CF00030BD08B50122E4F7F7FC08BD08B5002275 +:104D0000E4F7F2FC08BD08B504300122FEF70EFFFF +:104D100008BDF7B500240F1C051C1E1C081C0094C0 +:104D2000111C0123221CDBF75FFCA74205D1381CB4 +:104D3000391CE4F7BBFC056013E0211C201CE4F7E0 +:104D4000B5FC041C3068E3F713FA061C301CE3F7CB +:104D50005DFA011E03D0201CFFF7D5FFF6E7201CEB +:104D60002560FEBD08B5031C0022081C191CE4F7D1 +:104D7000F9FC08BD08B50022E4F7F4FC08BDF7B55E +:104D80001C1C0125002A02D1431EE418023D00220A +:104D90000023002906D000230027E356DE0F00235E +:104DA0007242BB41002181420ED0160E00961E02B7 +:104DB0000196267817023E43321C009F019E64191B +:104DC0003E43331C0131EEE7101C191C03B0F0BD4B +:104DD00007B50193002906D1131C01A9021C181C58 +:104DE00006F00AFA06E0013804D301AB1B5C13702D +:104DF0000132F8E707BD38B50C1C51282AD00ED86F +:104E000048281FD004D800281AD0422818D037E0EC +:104E10004C2833D0502831D0492831D12EE0682891 +:104E200010D006D8642821D0662819D0622827D14E +:104E300006E06C2822D0712807D0692820D11DE017 +:104E4000A3541DE0520013531AE0D1006118D81783 +:104E50000B604860D200A2181360DB1753600FE0AC +:104E6000181C9500F5F7E6FE285109E0D200181C41 +:104E70008C18F7F71FFD2060616001E0920013516C +:104E800038BDF7B56B46DF1D3A1C051C0C1C00F045 +:104E900060F93B78061C002B12D0281C211C00F066 +:104EA00085F900280AD00378023B022B06D8042398 +:104EB000281C3370211C00F08BF901E000233370B3 +:104EC000F7BD37B56B46041CDD1D2A1C00F041F907 +:104ED0002A782378002A07D0002B01D0072B01D194 +:104EE000002308E0022306E0013B052B04D80378E9 +:104EF000002B01D10233037037BD70B5051C0E1CA9 +:104F0000101C191C1C1C00F014F90378002B01D193 +:104F1000B36802E0012B04D1F368281C211C9847D8 +:104F200008E04288022B01D1336800E07368281C36 +:104F3000211C984770BD10B58468C3686268011C65 +:104F40000020934205D29A1C920012590133101C82 +:104F5000CB6010BD08B50B1C0968021C081C496811 +:104F60000830E6F703FA08BD08B5031C0A1C083030 +:104F7000596800F0C1FA08BD436808300B60106042 +:104F8000704708B5FEF78BFB08BDC168031C0029FC +:104F900005DD42688068824209DB00200DE00020C8 +:104FA00081420AD05A6894469A68944505DD58684B +:104FB000420041180120596010437047426808B50B +:104FC0008368C1689B1A5B18581C002900DD581EB5 +:104FD000F4F7D2FDC343DB17184008BDF0B5002736 +:104FE00085B003901D1C081C03230E1C0097111C88 +:104FF0000122DBF7F9FA1020FEF72AFB039B041CC1 +:10500000036001234760C36028689E4203D1DCF738 +:1050100041FEA0600CE0DCF73DFE60606868DCF7F4 +:1050200039FEA060032E03D1A868DCF733FEE060F0 +:10503000201C05B0F0BD136810B5002B0ED1141C58 +:10504000EE2901D1406806E0C02901D1806802E064 +:10505000BF2903D1C068FEF74DFE206010BD38B5F2 +:105060000D1C041CDCF72CFD291C036A0422201CE7 +:10507000984738BD70B50E1C151C041CDCF720FDCC +:10508000311C036A2A1C201C984770BD38B50D1CC2 +:10509000041CDCF715FD291C036A0022201C98471C +:1050A00038BD38B50D1C041CDCF70AFD2A1C8369C9 +:1050B000211C1F20984738BDF7B5061C30200D1C59 +:1050C000171C0193FEF7D6FA041C06708560C760B2 +:1050D000072E1AD8301CF4F7A1FC04060C0E10128F +:1050E000150626230CE02B786A780A3B1B02134333 +:1050F0000AE0932307E0282302E0942303E02A2315 +:10510000FF3301E095235B0023616B461B79202070 +:1051100063760423E384FEF79BFAE062201CFEBD65 +:1051200010B5041CC06AFEF7BAFA201CFEF7B7FAE5 +:1051300010BD30B50022041C058DAA4207D2E06ADA +:10514000D300C01843688B4202D00132F5E700203B +:1051500030BD70B5061C0D1C141CFFF7EAFF0023C0 +:10516000002818D1F18C338D8B4208D30631C90049 +:10517000F06AFEF783FAF38CF0620633F384308D25 +:10518000F36A421CC0001818002332850370437074 +:10519000438045600133237070BD08B54368002B20 +:1051A00001D0181CFAE7FFF7C4FF08BD38B5436803 +:1051B0000C1C181E0BD05D68002D07D0181C211C7C +:1051C000FFF7B7FF2B1C0028F5D000E0281C38BDE6 +:1051D00073B50E1C44686368002B12D06B46DD1D4E +:1051E000201C311C2A1CFFF7B4FF2B78002B03D0A6 +:1051F000042303706468EEE70378022B01D10133C6 +:10520000037073BD08B5DCF7A9FDF5F7F3FCFEF7F5 +:1052100071FD08BD08B5DCF7A1FDF7F7E5FFF5F76F +:10522000E9FCFEF767FD08BD08B5DCF797FDF7F769 +:105230004BFFF5F7DFFCFEF75DFD08BD026910B519 +:10524000531C2ED00A2A04D1C3690133C361012340 +:1052500006E0036A092A02D10733DB08DB000133C9 +:10526000041C03624369036183694361A368406866 +:1052700098472369A0610D2B09D1033B2361636922 +:105280000A2B04D16061A36860689847A061A36994 +:10529000013306D163695A1C03D00A2B01D00A23BB +:1052A000A36110BD10B500280FD0C368041C002BEB +:1052B00001D040689847201C4430FDF75AFC606BD1 +:1052C000FEF7EDF9201CFEF7EAF910BDF7B5071C53 +:1052D00054200E1C01921D1CFEF7C7F9041E04D1B8 +:1052E000281E50D0301CA8474CE0019B0022836050 +:1052F000C56001230A25C36103620363076042623C +:1053000082624660C562271C1420FEF7AEF944375E +:1053100060632021381CFDF702FC636B002B04D175 +:10532000201CFFF7BFFF00202DE0381CFDF733FCE9 +:105330000028F5D1636B1880019B301C9847019BB6 +:105340002061301C9847019B6061301C984722699E +:10535000A061531C04D06369591C06D10D2A01D1E8 +:1053600025610BE00A2A04D108E0421C06D10D2B6E +:1053700001D1656102E00A2B00D0A561201C01214A +:10538000E5F714F8201CFEBD08B50021E5F70EF87E +:1053900008BD73B50C1C051C01CC161CE5F75EFBA3 +:1053A0000023691E0093221C331CE5F79BFB76BD8E +:1053B00013B50C1C411E0020131C0090221D2068F8 +:1053C000E5F790FB16BD13B50C1C411E0120131C04 +:1053D0000090221D2068E5F785FB16BD30B50268F8 +:1053E000051C00207F240132531E1978C3010C4094 +:1053F000201C49B218430029F4DB2A6030BD10B5E7 +:1054000044680C6081681160C2681A6010BD08B5FC +:105410004368984708BD0120404270474A43F8B5A9 +:10542000071C1E1C141C0025B54209D00698391C07 +:10543000221C05F0E1FE069B01351B190693F3E7DC +:10544000F8BDF7B5B0CA00200191011CFDF757FD6A +:10545000061C002F0ADA013DAC4211DC019AAB00B8 +:10546000301CD158DBF706FCED19F5E7AC4207DA42 +:10547000019AA300301CD158DBF7FCFBE419F5E7D7 +:10548000301CFEBD70B5049D041C161C1B2803D1E6 +:105490000022AE422ED110E0192808D01C280CD1D1 +:1054A0002E1C151C0A1C1D24191C131C05E02E1C87 +:1054B000151C0A1C1A24191C131C2A1EB24200D9DE +:1054C000321C081C191C05F088FE1B2C02D144421A +:1054D000604109E0002290420CDB0132002809D132 +:1054E000AE4203D0AE424041C2B203E01A3C601E5D +:1054F0008441E2B2101C70BDF7B50025071C0E1CDC +:105500002C1C0192B54209D0AB00F8580199DCF788 +:105510006FFB431E984101352418F3E70120640016 +:105520002043FEBD10B5021C2324002388B003A82D +:1055300001A94460C160133C116884600374019345 +:1055400002930392E5F74CFF019808B010BDF0B547 +:10555000141C1268051C8BB00E1CCB000430002AF2 +:1055600028D1062119430191DFF79AFA002801D0CA +:1055700043682FE005AB079018742968181C05953F +:1055800006960894E5F72CFF2768002F23D1212EDB +:1055900021D0281C212102AAE2F76EFD029B002BDC +:1055A00019D0019B0120391C02AA0493FFF7F2F9DC +:1055B000206010E0062165681943002D05D1022204 +:1055C000DFF76EFA002806D003E00122DFF768FA61 +:1055D0004560002323600BB0F0BD37B51D1C041CD3 +:1055E0000023081C111C01220093131CDAF7FCFF96 +:1055F0000820FEF72DF82B68436004603EBD30B5EF +:10560000141C126887B0031C002A0AD101A841604B +:105610008260191C01320193C4600274E5F7E0FE58 +:1056200019E0806B002816D006236568C900043095 +:105630001943002D06D10222DFF732FA00280AD0E2 +:10564000256008E00122DFF72BFA002803D0636809 +:1056500043600023236007B030BDF0B5051C0F1C6C +:105660002C210023012489B003A88160161C29681D +:1056700001AA0374019302934460C2600395E5F7A5 +:10568000AFFE019B201C042B07D12869DCF718FA18 +:10569000391CC36A321C2869984709B0F0BD70B53F +:1056A0001923051C002488B003A8436001AE0B3306 +:1056B00029688360C6600474019474600395E5F7FB +:1056C0008FFE0198A0420DD0042806D12869DCF78E +:1056D000F7F9436A2869984704E0201C211C321C12 +:1056E000FFF758F908B070BD08B5FFF71BFF431E60 +:1056F0009841C0B208BD13B5081C1C1C111C002326 +:1057000002220093131CDAF76FFF03CCE6F7E4F9EB +:1057100016BD10B50C1CDCF7D3F9211CE6F71CFAFA +:1057200010BD38B50D1C041CDCF7CAF9291CE6F7BE +:10573000E1F9031E00D02369181C38BDF0B5856857 +:105740008BB0161C029352004B19041C019398183D +:1057500053180F1C0393052814D8211CAD002A1CD4 +:105760000C3105A805F048FD05AB5819039B0299BB +:105770009A0005F041FD60680199321C05ABE2F723 +:10578000FDFB1DE08000FDF763FF211C051CA368E5 +:105790000C319A0005F030FDA36802999800039B34 +:1057A00028189A0005F028FDA3686068F918321CD3 +:1057B0002B1CE2F7E3FB041C281CFDF770FF201CE8 +:1057C0000BB0F0BD10B5884213D20378303B092BE3 +:1057D0000FD8002313600A23146863430478013050 +:1057E000303C1B191360884203D00378303B092BEF +:1057F000F1D910BDF7B50025994218D31E1CCC1A5B +:10580000089B019200900027AB4201DD271C2C1C55 +:10581000009B01991D19281C321C05F0DEFC002894 +:1058200005D0BC4202D0089BE418F1E70025281CF3 +:10583000FEBDF8B5061C1020151C0F1CFDF708FF57 +:10584000041C06608560002F0FD0291C381CDAF775 +:1058500037FD6060681CFDF7FBFE391CE0602A1C08 +:10586000061C05F0C9FC00237355201CF8BD13B5B8 +:10587000012A0AD10C1C01A9E6F714FB019B206048 +:10588000636062230020A36005E0002301200B6019 +:105890004B60013B8B6016BD08B501220023E6F783 +:1058A0005FFB08BD012208B552420023E6F758FB12 +:1058B00008BD012208B5131CE6F752FB08BD012202 +:1058C00008B552420123E6F74BFB08BD08B5031C9F +:1058D0000A1C0220191CE6F785FC08BD08B5031C4C +:1058E0000A1C0020191CE6F77DFC08BD08B5031C46 +:1058F0000A1C0120191CE6F775FC08BDF0B50C1C4C +:1059000095B0042803D001235B42069309E0C868E0 +:10591000DCF7C0F90690002800D189E0069B002B37 +:10592000F1DB2068DCF7CCF8061C6068DCF7C8F80F +:10593000051EB54201D0606806E0A068DCF7C0F83B +:105940000790A84202D0A068E6F7ACF90DA920683C +:10595000E6F7A8FA0EA908906068E6F7A3FA0FA97F +:105960000B90A068E6F79EFA0E9B0D9A0990002610 +:1059700093425DD80E9B0D9F002B0BD1002E04D0BF +:10598000301C09990F9A05F037FC0F9B03930123F4 +:10599000049302E0002304930393089D049B069A5A +:1059A000934236D0002F34D00E9B281C0A9301233B +:1059B000391C00930B9A0A9BFFF71CFF05900028E7 +:1059C00027D00A9B059A5F427B41D31805935F1B42 +:1059D000002E05D0039B291CF0183A1C05F00CFC86 +:1059E000039BFF18002E04D0F01909990F9A05F0B7 +:1059F00003FC0E9A0F9B9446FB180393059B0D9A8C +:105A000063441D1C089B9918049B4F1B013304938E +:105A1000C4E7002E05D0039B291CF0183A1C05F0A2 +:105A2000EBFB039BD919002E09D1049B002B01D15C +:105A3000206808E010A8FDF789F8129E9AE70798F9 +:105A400010A9E6F7BBF915B0F0BD08B50122E6F7DD +:105A5000ABFC08BD012208B55242E6F7A5FC08BD23 +:105A6000F0B589B0071C0D1C081C03A9E6F71AFA4B +:105A70000024061C039904A8FDF768F8069B01930F +:105A8000039B9C4205D2305DB847019B18550134F9 +:105A9000F6E7281CDCF714F804A9E6F78FF909B03B +:105AA000F0BD13B5041C01A98068E6F7FBF9E368B3 +:105AB0000199021C00208B4205D2D05C0133E360C7 +:105AC00001234000184316BD1FB5041C0122081C09 +:105AD00001A9DCF79FFA201C0199029AE7F7F0FE72 +:105AE00004B010BD38B5041C2420FDF7C3FD051C0F +:105AF0004461A000FDF7ACFDA861281C38BD10B5BD +:105B0000041C002902D0C068FDF7C9FDA069FDF79B +:105B1000C6FD201CFDF7C3FD10BD38B5041C0D1ECD +:105B2000012D07D10121436949429A00806905F09E +:105B300080FB07E0022905D14068FDF789FD636815 +:105B4000E060A36000232560636038BD7047806813 +:105B50007047C06870470368012B03D842688369A7 +:105B60008900CA50704742684B42013A51181940A7 +:105B70004160704770B505684468012D02D861180E +:105B800041600CE00E19C3684660022D07D11B1955 +:105B900059188B4203D01A70120A0133F9E770BD0D +:105BA000026810B54368012A03D8023343601030FD +:105BB00003E0C2689C1C4460D0180170090A41705F +:105BC00010BD016A10B5041C002904D0B0231B02CB +:105BD0001943FFF7E5FFBD21E36909021943201CC2 +:105BE000FFF7DEFF10BD30B504684368012C03D811 +:105BF00004334360103003E0C4681D1D4560E018A5 +:105C000001708270090A120A4170C27030BD08B575 +:105C10001143DB001943FFF7C3FF08BD08B5072A8E +:105C200001D8D20003E04023083AD2001A430729E2 +:105C300002D98023083919430A438C21C901114331 +:105C4000FFF7AEFF08BD38B583698900CC584368BB +:105C5000051CE41AE023043C21051B02490D1943ED +:105C6000FFF79EFF2B680120022B07D1E40AE40214 +:105C700004D080231B01E4186042604138BDF8B5B0 +:105C8000061C8069920014587268A41A043C6510BE +:105C9000002B15D1D023FF271B02090219433D40D9 +:105CA000301C2943FFF77CFF01233268181C022AAD +:105CB0001FD1BC431DD00134FF346042604118E065 +:105CC000F02389011B0219438023A212DB00134039 +:105CD0008022920119432303144080222D051202D1 +:105CE0009B0E22432D0D301C19432A43FFF77BFFE7 +:105CF0000120F8BD38B583698900CC584368051C7C +:105D0000E41AF023043C61021B02490D1943F823F5 +:105D100062101B0292B21A43FFF765FF2B68012045 +:105D2000022B07D1A40DA40504D08023DB03E418C3 +:105D30006042604138BDF0B51D09002495421BD278 +:105D4000521B6C00061C151C0919002D0DD00C8867 +:105D5000012D02D94F883F043C430F271F40FC40D0 +:105D6000013D348002310236EFE75300C01802389B +:105D7000048860424441141B201CF0BDF0B5059C12 +:105D8000121B94460022271C161C002F08D08C5A88 +:105D90009D5A013F6519AE198652360C0232F4E75E +:105DA000059B62465C00031909191C1C002A07D0D8 +:105DB0000D88013AAE1926800231360C0234F5E71F +:105DC000624652009A18002E02D00123138002323C +:105DD000101A4010F0BDF7B50025089C2E1C271C9A +:105DE0000193121B002F0AD04B5B013F9C46019B85 +:105DF00066445B5BF61A465336140235F2E76400DC +:105E00000319151C1F1C0919002D07D00C88013D12 +:105E100036193E80023136140237F5E75200023A55 +:105E20009A18824204D31388002B01D1023AF8E772 +:105E30000232101A4010FEBD0239814202D30B8893 +:105E4000002BF9D00231081A4010704710B5002815 +:105E500006D0041C8068FDF722FC201CFDF71FFC07 +:105E600010BD38B5051C0C1E012C00D80224A868F2 +:105E7000002803D02B689B08A3420CD22B789B07E9 +:105E800009D46100FDF7FAFB03232A68A40013403C +:105E90001C43A8602C6038BD38B5051C0C20FDF7EC +:105EA000D7FB01212B78041C0B401A1C03788B4371 +:105EB00013430222934303702B682168980803233D +:105EC00082000B40134323606B686360AB68002B58 +:105ED00001D1A36009E04000FDF7BAFBA0602B6888 +:105EE000A9689A08520005F087F9201C38BD10B542 +:105EF0004B00C018D218002908D00238023A038893 +:105F000014881B1B04D406D10139F4E7081C03E0F4 +:105F10000120404200E0012010BD38B5051C0C1CDA +:105F20000221FFF79EFF2B780122002C03DA134396 +:105F30002B70614202E0211C93432B7000236B60A5 +:105F4000002907D06B685A1C6A60AA685B009952E6 +:105F5000090CF5E738BDFC230278134003700323D6 +:105F6000026813400360002343608360704708B5F4 +:105F7000002805D003789B0702D48068FDF78FFBCB +:105F800008BD38B50C1C4968051CFFF76AFF0121E4 +:105F90002378A8680B401A1C2B788B4313432B7073 +:105FA0006368A1686B6063685A0005F025F938BD25 +:105FB00008B5002901D1416001E0FFF7AEFF08BD3F +:105FC00038B50D1C041CFFF7C6FF291C201CFFF769 +:105FD000EFFF38BD38B5012504788160AC436D19F9 +:105FE0002C4304700324AA400568191C2C4022434A +:105FF000026000224260FFF7DBFF38BDF8B5041CE9 +:106000001F1C06AB1D780421161CFFF72AFF2378FE +:106010000122002D07D0002F05DA1343237000233F +:106020007242BB4103E093432370321C3B1C0021AE +:106030006160111C19430CD061681D04481C60602C +:10604000A06849000A52100C190C05432A1C0B1CAD +:10605000EFE7F8BDF7B50D1C01210378EA0F8B437C +:106060001343FF220370D2012B0C061C134002D1F4 +:10607000002373604DE09342FAD07F236C00240E1E +:106080005B42E318F4D4002B02D1FFF746FF40E057 +:10609000221C6F3AD117090F8A1880216D02121144 +:1060A0006D0A090400920D43162B05DC9623002788 +:1060B0001C1BE5403C1C08E00F273B40173B963C6F +:1060C0001F40E3171B0F1C192411301C0099FFF708 +:1060D000C8FE009B736063000193002C04D0B0687D +:1060E00000211A1C05F0A5F8002F08D02B1CBB407E +:1060F000B2680199013453521023DF1BFD40009B0D +:1061000064005B009C4204D0B26815532D0C02342D +:10611000F8E7F7BDF7B5041C0D1C1E1C8B18D10049 +:10612000090901310193FFF79CFE23780122002E1B +:1061300001D0134300E0934323700023281C6360C5 +:10614000019B984231D20278131C303B092B07D9AE +:10615000113B192B03D9131C613B192B25D80A338A +:10616000089A934221D26268A6689446311C9BB279 +:106170000092009A002A0CD00A88171C089A92B242 +:106180007A43D318009A0B80013A1B0C009202311B +:10619000EFE762465200B218002B01D013800232A2 +:1061A000961B761066600130CAE7401BFEBD406852 +:1061B00043425841C0B2704770B50D1C4168021C83 +:1061C000002903D16B68081C002B1AD02B78147897 +:1061D000DB07E007DB0FC00FDBB2C0B2181A10D12B +:1061E0006B689668AA68994206D30130994205D82F +:1061F000301CFFF77CFE01E001204042E30700D5A0 +:10620000404270BD10B5041E8C4201D0FFF7B9FEAC +:10621000012223789343237010BD10B5041E8C42D5 +:1062200001D0FFF7AEFE01212378DA07D20F8A1AD8 +:106230000A408B431343237010BD7FB5041E8C426C +:1062400001D0FFF79EFE6268002A0BD1201C0121BD +:10625000FFF707FE0122A3681A80237862601343C8 +:10626000237020E00E26012523786E442B420AD0AD +:10627000A068AB4323703580011C0095331CFFF7E9 +:10628000AAFD60600FE0511C201CFFF7EAFDA0682A +:106290003580331C0095011C6268FFF76FFD237881 +:1062A00060601D4325707FBDF0B50D1C496887B047 +:1062B000041C161C002901D0002A03D1291CFFF759 +:1062C00060FE4FE0FFF7CDFDA968331CA0686A6847 +:1062D000FFF731FD6060029001202B780340191C0C +:1062E000237883430B43237003423BD00E230021CA +:1062F00002AA9B186A68300919800392039A914296 +:1063000010D081420ED04A0094466746AA68BA5A15 +:10631000002A05D00121039A1980904205D314E088 +:106320000131EBE7039A90421CD2A9684000405A21 +:106330000F210E400E390D1CB5402E1C013E0642A9 +:1063400000D01980198800290CD0029A0120A16878 +:10635000002A01D1088004E00090029A081CFFF78F +:106360000DFD606007B0F0BD73B5151C061C0C1C5C +:1063700088686B6849689268994204D306D8FFF729 +:10638000B6FD002802DA231C2C1C1D1C2A78237859 +:106390005340DB070DD46368301C591CFFF761FDC7 +:1063A0006B68B0680093A1686268AB68FFF7E6FCB1 +:1063B0000BE0301C6168FFF754FD6B68B068009318 +:1063C000A1686268AB68FFF706FD01217060237861 +:1063D0000B401A1C33788B431343337073BDF7B5EE +:1063E000171C041C0D1C88687B68496892689942D8 +:1063F00006D30026994207D8FFF779FDB04203DAA9 +:106400002B1C01263D1C1F1C3A782B785340DB07C0 +:106410000DD56B68201C591CFFF723FD7B68A06815 +:106420000093A9686A68BB68FFF7A8FC0BE0201C12 +:106430006968FFF716FD7B68A0680093A9686A6821 +:10644000BB68FFF7C8FC60602B782178002E08D06D +:10645000DA070123D20F9A1A99431A400B1C1343EF +:1064600003E00122134091430B432370F7BDF0B5C5 +:106470004B68141C52688BB0051C0E1C934201D251 +:10648000261C0C1C0123327871681A4201D1227833 +:1064900013405918281CFFF7E4FC2278B368111C3C +:1064A00003937368A8680193A368049363683478BE +:1064B000079361400023C90702D4E307DB0FDBB277 +:1064C000E407E40FE1B20F1C8446D207D20FD4B226 +:1064D0005A4292B208924A4292B20992624292B2EF +:1064E0000692019A02910594561E721C2AD0039AB4 +:1064F000099912884A40BF180199079A521A9219AD +:106500000699B24206D8049A1188069A5140049A14 +:1065100002320492059A013E521805923A1C0599DE +:106520003F0C0A4008994A4092B2D3186246138041 +:10653000059A1B0C120C059202229444039A023213 +:106540000392D2E7019A51004118002B02D0012397 +:106550000B800231FFF770FC029B012223401C1CC0 +:106560002B78686093431C432C700BB0F0BDF0B5E2 +:106570004B68161C52688BB0051C0C1C934201D250 +:10658000341C0E1C0123227861681A4201D1327832 +:1065900013405918281CFFF764FCA368A8680393EC +:1065A000636824780193B36832780493736807931F +:1065B00001231C4200D11340E407E40FE1B20F1C99 +:1065C0008446D207D20FD4B25A4292B208924A42BB +:1065D00092B20992624292B20692019A0291059495 +:1065E000561E721C28D0039A099912884A40BF1877 +:1065F0000199079A521A92190699B24206D8049A3A +:106600001188069A5140049A02320492059A013E7A +:106610005218089905923A434A4092B2D3186246FA +:106620001380059A3F0C120C059202229444039A9F +:106630001B0C02320392D4E7019A51004118002B3F +:1066400002D001230B800231FFF7F6FB0122029BEF +:1066500068601C432B7893431C432C700BB0F0BD37 +:10666000F0B54B6889B0041C0E1C151C002B02D021 +:106670005368002B02D10023636072E0814207D18E +:10668000081CFFF709FC071CB5420AD1051C08E0ED +:106690000027824206D1101CFFF7FEFB051C071CD9 +:1066A00000E03E1C6B687268201C9918FFF7D9FB4C +:1066B000236800219A085200A06804F0BAFDA3687C +:1066C0000393B368039A059373680493AB680193CB +:1066D0006B680293049B5B00D1185B420693002316 +:1066E000069A02988A1800282CD0059B0020009357 +:1066F000049B9C466346002B14D013881B180793F9 +:10670000009B1B88181C019B1B8843430798C018DB +:1067100001235B429C44009B10800233000C0093D9 +:106720000232E7E70B1C002801D008808B1C039A7B +:1067300002319B1A029A5B10013A0292019A0232CC +:106740000192CDE70122636033782978594023789C +:10675000114201D1934300E013432370381CFFF72B +:1067600075FB09B0F0BDF8B54B68002B03D00127CD +:1067700013783B4202D00023436036E05368151C77 +:10678000041C002B03D1391CFFF7C7FB2DE0081CAC +:10679000FFF782FB061C281CFFF77EFB391C051C3B +:1067A000201CFFF7BAFB6B68002B11D0AB681B886D +:1067B000DB0704D5201C211C321CFFF751FFA86801 +:1067C0006A68011C0123FFF7B6FA6860002806D149 +:1067D000301CFFF73BFB281CFFF738FB05E0301CA3 +:1067E000311C321CFFF73CFFDDE7F8BD4368011C9C +:1067F0005A00002310B58468A218023A901C844203 +:1068000003D210881B040343F7E7181C0B78DB073F +:1068100000D5404210BDF0B59C4685B01D1C002936 +:1068200000D09D1800248368261C019343680293BE +:1068300001230393029B002B29D0019B24041B8876 +:1068400010361C43072E1BDD0778A3B2FF0706D5C1 +:10685000FF279F43039BFB189BB21F0A0397002946 +:1068600004D06F1E3B70674506D110E02B70634665 +:106870006F1C9B189F420AD0083E240A3D1CE1E78A +:10688000019B02330193029B013B0293D2E705B0C7 +:10689000F0BDF8B586684368051C00205C0034191B +:1068A000023CA31C9E420CD28F21C905F3F7F2FED5 +:1068B000071C2088F4F7BEF9011C381CF3F77CFB99 +:1068C000EEE72B78DB0702D580231B06C018F8BD46 +:1068D000F0B58BB0099310AB1B78119E071C049187 +:1068E000141C0593002E03D00B1C023B1E2B02D957 +:1068F0000020307089E04368002B12D1301C331C1B +:10690000002A07D02278181C002A03D01A700134FC +:106910000133F7E730230370002301300370801B3D +:1069200073E05B00181C0393FCF792FEB968039AAE +:10693000029004F061FC06960196039A029B94462D +:1069400063441D1C00210793029B023D9D420DD311 +:106950002B88090419430891081C0499F3F77CF863 +:10696000049928800898F3F7FDF8EDE730313929CC +:1069700002D9099B3A3BC918019B5D1C1970029B07 +:10698000079A934204D21A88002A06D10233F7E705 +:10699000059B002B13D0012303E0059B002B0CD09B +:1069A0000023069AAA1A032A05D16946019A097D8D +:1069B000951C51700695002B01D10195BDE70298F9 +:1069C000FCF76DFE002C0CD0201C04F037FD2B1CB6 +:1069D00020181D1CA04204D9013802781A70013316 +:1069E000F7E73B78DB0702D52D232B700135321CEE +:1069F0006B1E9A4206D211781878013B10705970BC +:106A00000132F6E70023A81B2B700BB0F0BD08B5D0 +:106A1000081C111CEDF766FA08BD70B5061C081CB1 +:106A20000D1C04F00BFD041E03D009CE291C221CF2 +:106A30009847201C70BDF0B58BB0029312AB1B7849 +:106A40000D1C03930F2302A9071C5B18002A01D118 +:106A500000220EE0002D03DA2D226D421A7012E0A2 +:106A6000119A920701D52B2203E0119A5207EFD514 +:106A700020221A70002D06D130221F2406ABDA73B3 +:106A800002ABE41818E00AAC281C0299F3F76AF884 +:106A90000E1C281C0299F2F7DFFF331C051C303353 +:106AA000092E02DD109B0A3BF318013C237006AB54 +:106AB0009C4201D9002DE7D140250F21119B1D409B +:106AC00002ABC9180B78002D0FD00025AB4213D0B4 +:106AD0000122039B01920093381C119BE7F7AAFC4B +:106AE000139B051C013B139306E0002B04D006AA60 +:106AF000944201D9013C23700AAB1A1B039B381C3A +:106B00000093139B211C0193119BE7F793FC28181A +:106B10000BB0F0BDF0B51E1C8DB012AB1B78071C7E +:106B20000393151C2B23B20702D47307DB0F5B0101 +:106B3000149A04AC00920193081C2B1C211C2022E7 +:106B4000DEF746FCC343051CDB171D40F30507D5E4 +:106B50006B1C1F2B04DC2522625500221D1CE254F5 +:106B6000402000233040984212D022782F2A12D899 +:106B70000122211C00930192381CE7F75BFC0921DC +:106B8000139B041C013B139302AB013DC91804E0A5 +:106B9000211C041C01E0211C1C1C039B381C0093BD +:106BA000139B2A1C0193331CE7F744FC20180DB0FB +:106BB000F0BD0EB403B503AA02CA0192E7F7AEFD19 +:106BC00002B008BC03B018470123884202D0037802 +:106BD00058424341181C7047037842780A3B1B0215 +:106BE000134302300B607047838BC26A01339BB240 +:106BF0008383918C994200D29384704738B5051CE9 +:106C00000C1C101C191C2A68049BFEF755FAEB6A31 +:106C1000A4004360AB6AE05038BD13B5041C081CE7 +:106C200001A9FFF7D9FF206B0199FDF7C0FB13BD48 +:106C3000F0B587B0051C0C1C04920593002B03DDF6 +:106C400008220B7E13430B766B461B8AE383EB6AA9 +:106C50001B78002B06D1286B211C049A059BFDF79D +:106C600096FD33E00026371CEA6A138D9E4223DA34 +:106C7000D26AF300D31803931B78033B012B19D876 +:106C800000230293029A238D9A4213DA029BE26A4E +:106C9000DB00D3181A78042A09D1039A5B6851687B +:106CA000994204D15288286BFDF753FA0137029BB1 +:106CB0000133E6E70136D7E7002FCCD0059B286BE0 +:106CC0000093211C3A1C049BFDF776FD07B0F0BD34 +:106CD00073B51D1C0B781A32061C93420ED1081C8A +:106CE00001A9FCF7F6FA019B041E9C4209D0301C56 +:106CF000211CA847201CFCF7E2FAF4E7002B00D087 +:106D0000A84773BD30B5041C85B0081C03A9FCF767 +:106D1000A7FA6379051C012B08D1E36A201C5B7E6E +:106D20000399009302222B1CFFF768FF039BA26AC2 +:106D30009B009958201C2A1C1423E7F795FE05B0E8 +:106D400030BD7FB5041C081C03A9161CFCF788FA8B +:106D50006279051C012A05D10096201C03992B1C81 +:106D6000FFF74CFF281CFCF7AAFA039BA16A9B00C3 +:106D70005D58021C291C201C0C23E7F775FE2869AE +:106D800004B070BD10B5C36A041C5A7EFFF7D9FF6A +:106D9000011C201CE7F730FE10BD1FB50368002B57 +:106DA0000DD100290BD00B78192B08D9041C03AB8B +:106DB000081C02AA01A9FCF7B3FA029B23601FBDBD +:106DC00038B5051C081C0C1CFCF779FA011C281CA2 +:106DD000E7F7EEFF281C211CE7F7EAFF38BD10B5E6 +:106DE000041CE7F7E5FF206BFDF703FB10BD10B5B2 +:106DF000041CE7F7DDFF206BFDF732FB10BD38B553 +:106E0000051C141CA14204D0281CE7F7D1FF011C6B +:106E1000F8E738BDF0B5041C85B0081C0D1C171C24 +:106E2000FCF74DFAFCF750FA03A9FCF719FA63795D +:106E3000061C012B08D1E36A201C5B7E039900939A +:106E40003A1C2B1CFFF7DAFE039BA26A9B009958A1 +:106E50000022201C131CFFF7EBFE301CFCF72FFA5E +:106E6000011C201CE7F7A4FF206BFDF78DFB00221F +:106E7000206B0121131CFDF7BBFC05B0F0BD38B53C +:106E8000041C0D1E954204D1006B0F21DFF7E8FDB5 +:106E900025E00B78A82B0DD1006B0F21DFF7E0FD6B +:106EA000281CFCF751FA002819D1281CFCF70CFA11 +:106EB000011C0CE0A92B10D1081CFCF705FA011CE1 +:106EC000201CE7F775FF0378011CAA2B07D0201CB4 +:106ED000E7F76EFF206B032103E0E7F769FF02216C +:106EE000206BFDF72DFC38BD70B50E1C151C041C65 +:106EF0000F21006BDFF7B4FD311C2A1C201CFFF7AB +:106F0000BEFF70BD38B5151C041CE7F751FFFCF738 +:106F1000DBF92A1C011C201CFFF7B1FF38BDF8B5B6 +:106F2000051C161C1F1C0C1E02D0E7F741FF012494 +:106F3000BE4206D0311C281CE7F73AFF0134061C7C +:106F4000F6E7286B211CFDF796FBF8BD10B50C1C6D +:106F5000131C0021221CFFF7E2FF10BDF8B5041C32 +:106F6000171CE7F725FF051CBD4213D0A91C201CE8 +:106F70006E78E7F71DFF0721051C206B312E06D028 +:106F80000821342E03D00921332E00D00A21FDF729 +:106F90004FFBE9E7F8BDF8B5051C161CE7F708FF3D +:106FA000041CB4420DD0A11C281C6778E7F700FF31 +:106FB0000521041C286B2F2F00D00621FDF738FB7C +:106FC000EFE7F8BDF8B5051C161CE7F7F1FE041C49 +:106FD000B4420DD0A11C281C6778E7F7E9FE032115 +:106FE000041C286B372F00D00421FDF721FBEFE7AD +:106FF000F8BDF8B5051C161C1F1CE7F7D9FE041CCC +:10700000B44209D0211C281CE7F7D2FE391C041C0D +:10701000286BFDF70DFBF3E7F8BD08B50223FFF77A +:10702000E8FF08BD08B50123FFF7E3FF08BD08B579 +:107030000023FFF7DEFF08BD10B5041CE7F7B8FE1C +:10704000206B0621FDF7E7FA10BDF7B5041C0D1CF7 +:10705000171C06690193731C0361BD420CD0291CE7 +:10706000201CE7F7A5FE051EBD42F6D0206B019956 +:10707000321CFDF749FAF0E7311C206BFDF7F2F8FE +:10708000F7BD08B50023FFF7E0FF08BD08B50123F1 +:10709000FFF7DBFF08BDF0B5041C85B00D1C081C14 +:1070A000111CFCF700F9291C0290201CE7F780FE58 +:1070B000029B061C032B06DD012303932369019326 +:1070C0000133236102E00023039301930127029A15 +:1070D0007B1C934246DA3378012B18D17078B11CAF +:1070E00036380B2811D8F2F799FC21100610101031 +:1070F00010100A0C080E1A2519E01B2517E01C2594 +:1071000015E01D2513E01E2511E01F250FE02225A7 +:10711000812B06D0301CFCF717F9023D002800D166 +:107120000335301CFCF7CBF8011C00E01925201CAE +:10713000E7F73EFE029B0237061C9F4205DA206BF2 +:10714000FDF77AF9206BFDF7ADF9206B291CFDF7EF +:107150006FFA029B9F42BADA206B0021019AFDF779 +:10716000D3F9B4E7039B002B18D02569206B6B1C67 +:107170002361291CFDF7ABF9206B0199FDF772F82B +:107180000121206BFDF76AF8206BFDF774F9206B85 +:10719000FDF766F9206B291CFDF764F805B0F0BD1A +:1071A000F7B5041C0D1C171C914203D3111CE7F703 +:1071B000FFFD37E00669731C03610B78702B15D156 +:1071C000081CFCF781F8011C201CE7F7F1FD311CBD +:1071D0000190206BFDF7A9F9201C01990022E7F727 +:1071E000EBFE281CFCF76BF8051C09E0E7F7E0FD57 +:1071F000311C051C206BFDF798F9206BFDF730F969 +:10720000201CFFF7F1FC201C291C3A1CFFF7C8FFCB +:10721000206B311CFDF7DEF9A38B206B013BA383B0 +:10722000FDF7A7F9F7BD13B5041C019101A855217D +:10723000FCF75EF80199021C201CFFF7B1FF13BD9B +:107240007FB5041C081C03A9151CFCF709F8637919 +:10725000061C012B06D10095201C03990722331C24 +:10726000FFF7CCFC206BFDF7BAF8039BA26A9B00EA +:107270009D580022201C131C291CFFF7D9FC2969EA +:10728000206BFDF769F8301CFCF719F80378011C36 +:10729000B53B581E834100225B421940201CA2715D +:1072A0000223E8F765F9286904B070BD10B5C36A18 +:1072B000041C5A7EFFF7C4FF011C201CE7F79CFB4F +:1072C00010BD914292411140002208B5131CE8F70D +:1072D0004FF908BDF0B5051C0E1C171C85B0BE4249 +:1072E00033D0301CFBF7EBFF041EBC4225D03378B3 +:1072F000A22B22D10378A02B1FD1301CFBF7E4FF77 +:107300000190201CFCF720F80026B04203D1201C7D +:10731000FBF7DAFF061C03A90198FFF75DFC286B59 +:107320000399FDF750F8281C311C01220023E8F7CF +:107330001FF9201CFBF7C3FF03E0281C311CE7F7F3 +:1073400037FD0023061CAB71C9E705B0F0BDF0B5F1 +:10735000041C056985B003936B1C03610F1C006B53 +:10736000291C161CFDF7F9F8201CFFF73DFC002E28 +:107370000DD1206B0321FCF771FF391C201CE7F7AE +:1073800017FD0321206B4942FCF768FF07E00A9BC9 +:10739000201C0093391C321C039BE8F7ADFA206BCC +:1073A000FDF70EF9206B0F21DFF75AFB206B291C2C +:1073B000FCF758FF0B99201CE7F7FAFCA38B206B16 +:1073C000013BA383FDF7D5F805B0F0BDF0B5061C71 +:1073D00087B0081C0D1CFBF772FF03900378022294 +:1073E000191C914369290AD1512103A8FBF780FF99 +:1073F0000022031C0092301C291C039A14E0682B05 +:1074000020D104A9FBF765FF5121059005A8FBF7E2 +:107410006FFF041CFBF753FF049B984207D1301CFD +:10742000291C231C059A0094E8F766FA12E0201C38 +:10743000059FFBF744FF00940190291C301C3A1C67 +:10744000231C05E000230190291C301C1A1C00930A +:10745000FFF77DFF07B0F0BD08B516221723E8F748 +:107460005DFC08BD08B50E220F23E8F757FC08BDE8 +:10747000F8B5041C0D1C081C111C161CFFF7A4FBFE +:10748000002802D0206B002139E02B789A2B30D1D4 +:10749000281CFBF719FF051CFBF711FF0278131CD2 +:1074A0006333DBB2012B13D8FBF70EFF071C291C3B +:1074B000201CE7F77DFC201C391C321CFFF79FFCC9 +:1074C000311C381C246BFBF7EEFE411C201C16E01F +:1074D000201C291CBE2A03D1BB3AFFF79BFC10E0FD +:1074E000E7F766FC011C201CE7F762FC206B022119 +:1074F00005E0291C201CE7F75BFC0121206BFDF750 +:10750000C7F8F8BDF8B5051C0C1C081C111C161C8E +:10751000FFF75AFB071E04D00021281C0A1C0B1C75 +:107520001CE0201CFBF7D0FE041CFBF7C8FE027811 +:10753000131C6333DBB2012B05D8FBF7C5FE211CFE +:10754000021C281C09E0281CBE2A04D1211CB83AC0 +:10755000FFF760FC04E0391C221C331CFFF7DFFC42 +:10756000F8BD38B5041C4D780231E7F721FC206BDB +:1075700003212F2D03D00421302D00D00521FDF74C +:107580004AF838BD38B5041C0D1C081C111CFFF747 +:107590001BFB002802D0206B002116E02B784A2B21 +:1075A0000DD1281CFBF790FE011C201CE7F700FC06 +:1075B000011C201CE7F7FCFB206B022105E0291CC5 +:1075C000201CE7F7F5FB0121206BFDF733F938BDEF +:1075D000F0B5061C87B00D1C141C002903D1012135 +:1075E0003068216022E000220B780192562B0CD1EA +:1075F000081CFBF769FE051CFBF761FE211CFFF769 +:10760000EBFA002DEBD0012301932B78002BE6D071 +:107610000A3B281C0F2B0CD805A9FFF7DDFA019BAC +:10762000002B01D1059B236030680599FCF72AFEE9 +:1076300054E002A9FBF74DFE019B051C002B02D173 +:10764000211CFFF7C9FA01242F1C6442029B9F42B0 +:107650000AD0381C05A9FFF7BFFA071C0598FBF7ED +:1076600009FA01342418F1E7201C03A9FBF7D7F924 +:107670002F1C041C029B9F4215D0AF4202D92E231F +:1076800023700134381C04A9FFF7A6FA05A9071CCA +:107690000498FBF7F9F9059A011C201C03F0ACFDD6 +:1076A000059BE418E6E70398FBF7C4F9011C306872 +:1076B000FCF7E8FD019B002B10D0281CFBF7FFFD19 +:1076C000041C029B9C4209D005A9201CFFF784FAE8 +:1076D0000599041C3068FCF76AFEF2E707B0F0BDBC +:1076E00037B5041C0D1C006B0021FCF7EFFD206B6F +:1076F0000F21DFF7B5F9201C291C01AA3030FFF754 +:1077000067FF201C0199E7F777F937BD08B50378C3 +:10771000012B04D1407810384342584107E0032B35 +:1077200004D1FBF7ACFD431E984100E0002008BDEA +:1077300008B50378012B02D140780E3803E0032B03 +:1077400004D1FBF79CFD4342584100E0002008BDF6 +:10775000F0B5041C85B0081C0E1C151C0193FFF726 +:10776000E7FF002850D1301CFFF7D0FF002852D18E +:107770003378192B55D9301C03A9FBF7AAFD3378B0 +:10778000071C7B2B20D1002D22D12669731C23617D +:10779000381CFBF794FD039B984208D00122391C4A +:1077A0006A40201C331CFFF7D3FF071CF0E72A1C9C +:1077B000391C019B201CFFF7CBFF051C311C206BE3 +:1077C000FCF750FD281C37E07C2B0CD1002DDCD1C0 +:1077D0000398874230D0391C201C2A1C019BFFF7DC +:1077E000B7FF071CF4E77E2B07D10122201C6A405B +:1077F000391C019BFFF7ACFF1EE0962B11D1301C0A +:10780000FBF7A2FD002806D0002D06D1206B0199C0 +:10781000FCF75DFE01E0002DF8D1301CFBF74FFDB9 +:107820000AE0311C201CE7F7C3FA061C291C206B58 +:10783000019AFCF758FE301C05B0F0BDF0B5041CF1 +:107840000D1C066989B01F1C731C0493B31C0361D3 +:10785000311C006B0592FCF705FD206B0499FCF7C9 +:107860009DFE201C291C0022E7F7A6FB281CFBF725 +:1078700026FDFBF724FD059B984224D1201C391CD2 +:10788000E7F796FAE36A1B78032B05D10E9B206B72 +:10789000991CFCF70AFF3BE0042B05D10E9B206BE3 +:1078A000991CFCF726FF33E0052B05D10E9B206BBE +:1078B000991CFCF738FF2BE0206BFCF7C9FF206B0D +:1078C000FCF7CEFD24E00378BF2B09D105A9FBF717 +:1078D00000FD0022011C331C201CFFF739FFCAE702 +:1078E00007A9FBF7F6FCFBF7EAFC0390FBF7E7FCC4 +:1078F000011C201CE7F75CFA206BFCF745FE0E9B91 +:10790000201C5D1C00950399079A3B1CFFF796FF0E +:10791000206B311CFCF7DBFD206B0499FCF7A2FC0B +:10792000206BFCF747FE09B0F0BDF7B5041C081C3E +:107930000F1CFBF7C4FCFBF7C7FC25690022AB1C3E +:10794000011C2361201C2B1CFFF702FF6E1C391C3D +:107950000190201CE7F72CFA311C206BFCF7B7FDD7 +:10796000291C206BFCF77EFC0121206B4942FCF7AF +:1079700075FC0199201CE7F71BFA311C206BFCF702 +:1079800071FCF7BDF8B50569161C6B1C012203617B +:107990002B1C041CFFF7DCFE071C5821206BFCF796 +:1079A00083FB311C381CFFF70FF9061E09D1391C67 +:1079B000201CE7F7FDF9206B0121321C331CFCF77A +:1079C00017FF206B0121FCF735FF291C206BFCF70A +:1079D00049FCF8BDF0B589B00792038B07690493A1 +:1079E000438B7E1C0593C38B07830693BB1C0361EB +:1079F000838B4683C383041C081C0D1CFBF75FFCB0 +:107A00000290FBF75CFC0390281CFFF791FE002816 +:107A10001ED12369281C019301332361FFF776FEF1 +:107A2000002803D1206B311CFCF751FD206B01991C +:107A3000FCF718FC0299201CE7F7BAF9206B311CFF +:107A4000FCF710FC201C291C0122019BFFF780FE83 +:107A50006B461B8A079A23836B469B8A63836B461C +:107A60001B8BE383039B934203D0201C191CE7F775 +:107A70009FF9206B391CFCF7F5FB09B0F0BDF0B5A0 +:107A8000041C236985B000930133081C2361039112 +:107A90000192FFF74DFE061E07D00398FBF70FFC7F +:107AA0000390FBF70CFC039030E0256903986B1CF6 +:107AB0002361FFF72BFE321C03992B1C071C201C93 +:107AC000FFF746FE011C0390201CE7F771F9061C26 +:107AD0000390002F60D10199FFF776F8002809D1B3 +:107AE000206BFCF7B6FB00280CD1206B0099FCF74B +:107AF000EEFC07E0301CFBF7E2FB0199FFF764F8AE +:107B00000028EDD0206B291CFCF7ACFB039B019AED +:107B1000934241D003A84821FBF7EAFB071C0398D6 +:107B2000B84232D0FBF7D0FB0390FFF701FE051EF1 +:107B300007D00398FBF7C3FB0390FBF7C0FB039050 +:107B4000EDE726690398731C2361FFF7DFFD331C03 +:107B5000029003992A1C201CFFF7FAFD011C0390D8 +:107B6000201CE7F725F9029B0390002B14D1206B12 +:107B7000FCF76FFB002803D1206B0099FCF7A7FCF2 +:107B8000206B311CFCF76EFBC9E7019B9F4203D0C1 +:107B9000201C391CE7F70CF9206B0099FCF762FBFD +:107BA00005B0F0BD70B50B78161C0A3B4A781B0275 +:107BB0001343B53B5A4253410C1C8371321C051CC4 +:107BC000FFF71DF9201C311CFBF76DFB032803D1C7 +:107BD000286B0B21FCF72CFD70BDF0B587B001912F +:107BE0000B78041C0D1C012B01D0532B02D10595E1 +:107BF000002509E00026502B1AD1081CFBF764FB76 +:107C00000590FBF75CFB051C05A83921FBF770FB11 +:107C10000026071C0598B8420AD00378012B27D10B +:107C200043784A2B24D10136FBF749FB0590F1E755 +:107C30000198FBF744FB01900778012F1AD1437894 +:107C4000312B17D1206B311CFCF740FB206B02213C +:107C5000FCF782FB206B391CFCF70DFD201C291C56 +:107C6000303005AAFFF7B4FC206BFCF724FB4CE096 +:107C70000336D9E7311C206BFCF728FB01A83E2115 +:107C8000FBF736FB0027019E0090009B9E420FD21F +:107C9000301CFBF719FB05A9FEF79EFF206B059929 +:107CA000FCF75AFB301CFBF70AFB0137061CECE71C +:107CB000206B391CFCF7DFFC201C291C303002AA89 +:107CC000FFF786FC019D009B9D421BD2281C03A947 +:107CD000FBF7FFFA04A9FEF77FFF0499051C206B50 +:107CE000FCF7DDFA039B9D4202D1201C049906E0BB +:107CF000281C05A9FEF770FF051C201C0599E6F756 +:107D00007BFEE0E7206BFCF7ABFB07B0F0BD026841 +:107D100013783E2B05D83C2B05D2212B07D13E23CF +:107D200001E0402B03D101320260181C00E040202A +:107D30007047F7B5051C0668741C20780194DDF7C0 +:107D400079FFA71B031C01340028F6D12868391CD1 +:107D50000A22DBF7D9FD019B40102B60FEBD73B5F5 +:107D6000E4F704FD00906846FFF7D1FF0025061CEC +:107D7000009B01241A78002A28D001941878DDF796 +:107D800059FF002803D06846FFF7D3FF041C009B6F +:107D90001A780023732A13D1231C012410E0002B2E +:107DA00006D1009B301C197801AAE1F78BFD031C5A +:107DB000019A013C501E4519524215405D1900239D +:107DC000002CECD1009B01330093D1E768002043E5 +:107DD00076BD4368F7B51C1E1BD0051C0021181C7E +:107DE000E1F770FF0026041C6B689E4211D2B300BD +:107DF0000193EB189868E0F709FA071E04D1201CDC +:107E0000FDF7BFF83C1C04E0019B0136E3189860C5 +:107E1000EAE7201CFEBD08B5E0F7AAF908BD08B5E1 +:107E2000031C0A1C0C20191CE0F730FA08BD38B5F9 +:107E30000124A04200D04C680868E0F799F9051CBD +:107E4000281CE0F7E3F9021E05D0211C0520E0F70D +:107E50001DFA041CF4E7201C38BD08B5011C0220E3 +:107E6000E0F722F808BD08B51A23E8F7B9FD08BD08 +:107E700008B51923E8F7B4FD08BD10B50C1C02289D +:107E800002D106CC093007E0096862680B20E0F7F0 +:107E9000FDF9011C0A20A268E0F7F8F910BD0023E3 +:107EA00010B5C25C002A06D0CC5C002C03D0A242E4 +:107EB00010D10133F5E70024CB5CA34207D1013494 +:107EC000002A04D0101CDDF7CDFE6040C4B20120B2 +:107ED000204000E0002010BD10B5131CC468002233 +:107EE000A04710BD002108B50A1CFFF7F5FF08BD2B +:107EF00007B5019101AA0121FFF7EEFF0EBD08B5FC +:107F0000E9F742FA08BD08B5D9F7DAFDE9F784FACE +:107F100008BD38B5041C0D1CFFF7F5FF002803D081 +:107F2000201CD9F7CDFD041C291C201CE3F7E2FD21 +:107F300038BD13B5041C4068E0F768F9021E0BD089 +:107F4000A3680220591CA16001215B000B43694614 +:107F500000930192E1F7B6FE16BDF8B5071C0C20A0 +:107F60001D1C0E1CFBF774FB0760041C2868E0F75F +:107F7000FFF860600020012E02D96868D9F78AFEF8 +:107F8000A060201CF8BD08B5DBF756FC01234000BB +:107F9000184308BD136870B5002B10D14568AC1CA0 +:107FA000A4002458AB420AD09E00A6598E4204D1A8 +:107FB00002339B001B58136001E00133F2E770BDF0 +:107FC00008B54B680A1C02339B005958EAF752F96E +:107FD00008BD002313B5041C0093081C111C1A1CB7 +:107FE000D8F702FB0420FBF733FB046016BD10B585 +:107FF000141C081C111CEBF767FF201C10BD00208F +:10800000F8B5824219D01C1C151C0E1CEBF738FF6A +:10801000002803D10B23013823600EE0771C75196B +:10802000EBF73AFF7B1E3C1E1870AC4204D0EBF716 +:1080300027FF01370028F3D1A01BF8BD836810B5D6 +:10804000041C5808FBF756FE0123A2681340A360E6 +:1080500010BD10B5041C0430EAF70AFA012160686B +:1080600002F061F9FBF746FE10BD10B5041C0430A8 +:10807000EAF7FEF90121606802F063F9FBF73AFEC6 +:1080800010BD10B5041C0430EAF7F2F90121606854 +:1080900002F065F9FBF72EFE10BD38B50021051C76 +:1080A0000320E1F70FFE041C281DEAF7E1F96868D8 +:1080B000012102F038F9FBF71DFE0121A06068687C +:1080C00002F03FF9FBF716FE0121E060686802F05C +:1080D00046F9FBF70FFE2061201C38BD08B540684B +:1080E000F0F75CFBFBF706FE08BD08B54068F0F74B +:1080F000A7FBFBF7FFFD08BD08B5DDF7C7F8FBF7E9 +:10810000F9FD08BD08B5EAF75FFB407B40B208BD4A +:10811000031C013B5A42534141205B4218407047C7 +:10812000202304304B60423308608B60002070478E +:1081300010B5FFF7E7FF021CA0240023C132FF3275 +:10814000E405920013510133011C181C0138C0468C +:10815000C046C046C046C046C046C046C046C046EF +:10816000C046C046C046F1D1A222D200A058C840A5 +:10817000184010BD08B50120EAF74EFD08BD0223E6 +:1081800010B584171C40013B1C1B802342021B04BA +:10819000520AC0151A43C3B2963B5918002901DD93 +:1081A0008A4005E00B1C00201F3303DB49420A41D3 +:1081B000101C604310BD002307B5081C0093111C60 +:1081C0001A1CD8F711FAEAF7B1FE0EBD0423591AAA +:1081D000033B8B40191C031C421D1878084003D137 +:1081E00001339342F9D100E00120704708B501281E +:1081F00003D14868D9F7C4FE00E0002008BD10B5DF +:108200000421041CFFF7E2FF031C0420002B06D10D +:10821000201C0321FFF7DAFF431E9841023010BDF6 +:10822000002210B5036902764269C36093420FD2FF +:108230001B78827E0377002A01D005230BE0041C03 +:10824000181CEAF741FFFFF7DAFF0130607603E020 +:10825000202303771B3B437610BD05235A43521856 +:10826000182A03D100790007C00F08E0D308C0180E +:108270004379072002401341181C0123184070471E +:1082800083795A4352185308C018C37904209200C6 +:1082900002401341181C0F231840704730B51C1CB6 +:1082A00083795A43042352189500F021520880180C +:1082B000221C1D402941AA40C3790B401343C371BE +:1082C00030BD08B54279837900215A4301325210FA +:1082D000073002F0AEFF08BD08B50379DB0705D50E +:1082E000FFF7BBFF09235843C0B201E0FFF7C8FF07 +:1082F00008BD02790523D20700D48379181C704782 +:1083000008B5FFF7F6FF01234000184308BD0279C6 +:108310000523D20700D44379181C704708B5FFF72E +:10832000F6FF01234000184308BDF0B50B6887B085 +:1083300048680C1C0293D9F7ADFC0090A068D9F7EF +:10834000A9FC0190E068D9F7A5FC071C2069D9F7C2 +:10835000A1FCFE43C543F617ED1737400540291C25 +:10836000381C0497EAF7BEFE009B019ADC43E41731 +:108370001C40019B0390DB43DB171A4002980592D7 +:10838000FFF7B7FF049B009A9F18874200DD071C88 +:108390000298FFF7BCFF019BEE18864200DD061C29 +:1083A000049A3B1B9A4203DC059BF31A9D4204DDB1 +:1083B0000398FFF786FF00E00134BC4211DA059D07 +:1083C000B542F9DA2A1C0298211CFFF785FF009AB2 +:1083D000031CA11A019A0398AA1AFFF75FFF01353F +:1083E000EEE7039807B0F0BDF7B5061CFFF781FF75 +:1083F000071C301CFFF78BFF00900099381CEAF730 +:1084000071FE00240190009B9C4211DA0025BD42C0 +:108410000CDA291C221C301CFFF75EFF291C031CF0 +:10842000221C0198FFF73AFF0135F0E70134EAE733 +:108430000198FEBD08B5FFF7D7FF08BDF7B5061CCC +:10844000FFF757FF0090301CFFF761FF0190019983 +:108450000098EAF747FE0024071C019B9C4213DAB0 +:108460000025009B9D420DDA291C221C301CFFF7C1 +:1084700033FF0923291C1B1A221C381CFFF70EFF8F +:108480000135EEE70134E8E7381CFEBD08B5FFF71B +:10849000D5FF08BDF7B5051C0C1C0E1C8379009395 +:1084A00043790193009B9E4212DA0027019B9F4271 +:1084B0000CDA3A1C311C281CFFF7E2FE3A1C031CA4 +:1084C000311B281CFFF7EAFE0137EFE70136E9E729 +:1084D0001C1B009B9C420DDA0026019B9E4207DA82 +:1084E000321C281C211C0023FFF7D8FE0136F4E7BC +:1084F0000134EEE7F7BDC368426970B5041C9342CE +:108500000BD1037E052B08D1C37E181E4DD0201C35 +:10851000FFF786FEA068FFF7D4FEA0680121FFF7F1 +:10852000B9FF227E637E9A4216D2207FEAF7CCFD05 +:108530000025061C0421237E725DCB1A1A41131CF0 +:108540000122134008325343A0682A1C0135FFF76B +:10855000A5FE052DEED124E09A4222D1E36861699F +:108560005A1CE2608A4206D1202323771B3B6376A4 +:108570000023237615E058782077EAF7A5FDA17E41 +:10858000051C002904D0FF232376FA3B637608E01C +:10859000FFF71CFE40422076281CFFF730FE01301A +:1085A0006076237EA0680133237670BDF7B500297D +:1085B00029DB0E1C041C437901938579013DB542EA +:1085C00010DB0027019B9F42F8DA3A1CA91B201CF4 +:1085D000FFF756FE3A1C031C291C201CFFF75EFE09 +:1085E0000137EFE70025B5420DD00027019B9F42E0 +:1085F00007DA3A1C201C291C0023FFF74FFE013725 +:10860000F4E70135EFE7F7BD70B5041C0D1CFFF76B +:1086100070FE4342061C201C9D4201DDB54206DB74 +:10862000FFF775FE011C301CEAF75CFD0CE0FFF75C +:10863000DBFE041C002D03DB291CFFF72BFF02E0EF +:108640006942FFF7B3FF201C70BD10B5041C081C65 +:10865000D9F720FB011C201CFFF7D6FF10BD10B579 +:10866000041C081CD9F716FB4142201CFFF7CCFF65 +:1086700010BDF0B587B00D1C0490FFF73AFE0190D5 +:108680000498FFF744FE4342041CAB4200DA2B1C63 +:10869000A34200DD231CDA43D2171A4005921A19AF +:1086A0000392A24200DD03945B420093DB43009AF5 +:1086B000DB171A400198211C0092EAF713FD0025F0 +:1086C0000290009B9D420DD00026019B9E4207DA3E +:1086D000311C02982A1C0023FFF7E0FD0136F4E765 +:1086E0000135EEE7059D009B059A9B1A5F19039BD8 +:1086F0009D4213DA0026019B9E420CDA311C04983D +:108700002A1CFFF7E9FD311C031C3A1C0298FFF7F5 +:10871000C5FD0136EFE70135E5E70137A7420BDA82 +:108720000025019B9D42F8DA291C02983A1C00237F +:10873000FFF7B4FD0135F4E7029807B0F0BD10B5BE +:10874000041C081CD9F7A6FA011C201CFFF791FF96 +:1087500010BD10B5041C081CD9F79CFA4142201C1E +:10876000FFF787FF10BDF8B5071C081CEAF7ACFC43 +:108770000025061C00240423325D5B1B1A41131CD8 +:108780000122134008325343381C221C291C013497 +:10879000FFF784FD052CEED10135052DEAD1F8BD9A +:1087A00013B5041C01A94068E3F7F6FFA26801991C +:1087B00000238A4207D2815CE068FFF7D4FFA368F8 +:1087C0000133A360E368181C16BDF7B50025042A21 +:1087D00011D1041C0E1C406801A9E3F7DDFF2B1C1E +:1087E000071C0199321C2068D9F72CFB395CA06862 +:1087F000FFF7B9FFA568281CFEBD38B5051C05208C +:10880000011CEAF76FFC041C291CFFF7ACFF201CBD +:1088100038BD10B518C96210E10701D58158CB5891 +:108820008018984710BD10B5041C0430EBF70EF902 +:108830000121606800F09EFDFBF75CFA10BD10B5E9 +:10884000041C0430EBF702F90121606800F09FFD81 +:10885000FBF750FA10BD10B5041C0430EBF7F6F826 +:108860000121606800F0A0FDFBF744FA10BD10B5CF +:10887000041C0430EBF7EAF8606800F09DFDFBF79C +:1088800039FA10BD10B5041C406800F0D3FD002873 +:1088900002D1201CEBF7A2F8201DEBF7D7F8606897 +:1088A000EEF7ECFCFBF726FA10BD012803D1CB88CC +:1088B0005B00184300E00020704710B5041C02F074 +:1088C000BDFD011C201CEBF7FFFA10BD08B501200F +:1088D000EBF750FD08BD08B50020EBF74BFD08BDD8 +:1088E000F0B585B00390081C0D1CFFF702FD0526AE +:1088F000042803DC281CFFF7FCFC061C281CFFF7DF +:1089000006FD0527042803DC281CFFF700FD071CD3 +:10891000039B0293002301930093009BB34224DA4C +:108920000024BC420FDA221C281C0099FFF7D4FC5B +:10893000029B1B19187101238340181C019B0134F1 +:1089400003430193EDE7FB43DB173B40042B05DCBE +:108950000021029AD21811710133F7E7009B01330D +:108960000093029B05330293D7E7F343DB171E40C6 +:1089700005237343039A0433D318042E08DC002222 +:1089800001361A705A709A70DA701A710533F4E76A +:108990006A46039B92881A8405B0F0BD73B5061C25 +:1089A000081C0D1C002402F049FD221C011C231C84 +:1089B000281C0094EAF790FE0123011C0093301C50 +:1089C0009622231CECF7C4F973BD70B5051C081C76 +:1089D000161CD9F75FF9041C301CD9F75BF9211C70 +:1089E000021C281CECF7D4FA01234000184370BD88 +:1089F00004231A1CA0210320C132FF329200C905B2 +:108A000001335050112BF4D17047704710B5041C3E +:108A100043694268991800F077F8E36A002B04D1A3 +:108A2000A369002B07D0984705E0A069002802D071 +:108A3000211C1C31984710BD10B5041C00F06CF8C7 +:108A40000023A361E36210BD10B5041CECF710FB1A +:108A5000201C02F0BCFA201C10BD38B5051C0C1CF3 +:108A600000F05AF86C61286900F0D5F90119281C4A +:108A700000F04AF838BD00207047F8B5071C0E1CFE +:108A80000D1C8C18A54209D001353B686A1E5B6A33 +:108A90001178381C9847431CF4D12C1CA01BF8BD3E +:108AA000F8B5071C0E1C0D1C8C18AC4209D03B6895 +:108AB000381C9B6A9847431C02D028700135F4E7A4 +:108AC0002C1CA01BF8BD0020704700207047002020 +:108AD00070470020704738B50D1C041C4069F8F73A +:108AE00093F8281C6169F8F7FBF938BD10B5041C30 +:108AF0004069F8F789F8606900F0A4F810BD08B57E +:108B000003689B68984708BD08B50A1C031C011D33 +:108B1000006900F048F908BD08B5011D006900F0C2 +:108B20005EF908BD704718234A1C5A4382189268A0 +:108B300010B55943002A05D14118CB68002B08D045 +:108B4000984706E04318D868002802D0191C103155 +:108B5000904710BD10B5041C02F039FA201C10BD5E +:108B600038B50D1C041C0430EDF722F9E56338BD5F +:108B700008B5043000F0FFF908BD38B50C1C051C21 +:108B8000111C0430221E0AD018231A1C4A43AA18AA +:108B9000D4604A1C53430022EB189A600132EDF76F +:108BA00053F938BD08B5043000F0D8F908BD10B548 +:108BB0000C1C0430EDF78CF9201C10BD036870B557 +:108BC0001B6900210122041C9847061C731C0DD050 +:108BD000236800211B690222201C9847051C23687A +:108BE000201C1B69311C00229847281C70BD08B549 +:108BF000431E012B01D9002804D180239B014B6027 +:108C0000002005E0F7F756FF0923036001204042EA +:108C100008BD08B50120F7F753FF7047704708B546 +:108C2000FFF7FCFFFFF7F9FFEDF73EFA08BD08B5C7 +:108C3000002801D000F00AF8FEE708B5002102F094 +:108C4000D4FB08BD08B5F8F721F808BD00B59BB006 +:108C500002A8032100F064F808A8022100F060F8DF +:108C60000EA8012100F05CF814A8102100F058F8BB +:108C7000059B039A96201A60099A0C9B1A600F9A1A +:108C8000129B1A60159A179B01921A6000F058F80F +:108C9000069B039A96201A60099A0B9B1A600F9AFA +:108CA000119B01921A60159A189B1A6000F048F8FF +:108CB000DEE70FB4012008B5F7F702FF70B50D1C11 +:108CC000041C161CEDF712F96B1C07D0201C0021A8 +:108CD00000F05EF9201C311C00F054F970BD08B59D +:108CE0000322FFF7EBFF08BD08B5FFF7E7FF08BD5C +:108CF00070B50D1C041C161CEDF7F8F86B1C0ED09B +:108D00006368002E01D0E26800E02269201C012186 +:108D1000136000F03DF9201C002100F033F970BD14 +:108D200008B50022FFF7E4FF08BD38B5041CECF7D6 +:108D300037FF051CECF734FF401BA042FAD338BDC7 +:108D400008B5FA239B005843FFF7EFFF08BD38B57D +:108D5000041C0D1C03681B68984763681D6038BDC0 +:108D600038B50368041CDB68984763685A68236851 +:108D7000002A02D19B68984714E05B681568984701 +:108D800063682D1A002D08DC5A68916859601B68C9 +:108D9000002BEAD050689847E7E75A6821681068C6 +:108DA0000B69984738BD70B50D1C72B64B60002337 +:108DB00046680A607468002C05D02168511A02D4F4 +:108DC000231CA468F7E7002B05D1036875601B69B5 +:108DD000101C984700E09D60AC6062B670BD08B59D +:108DE00072B6426853688B420CD19B68536002682C +:108DF000002B02D1936898470BE0126918689047DE +:108E000007E0131C002B04D09A688A42F9D18A68C3 +:108E10009A6062B608BD08B503685B68984708BDEC +:108E2000F7B50192B1221F1C03684910D200995076 +:108E30008021012289005A50191C0024061CFC3193 +:108E4000CC601A607D1E019BAC4213DA1919301CEC +:108E50000022ECF77DFC00280AD0301CECF772FDF4 +:108E6000071C301CECF73AFD251C002F1ADA18E01D +:108E70000134E7E75919301C0122ECF769FC00289E +:108E800003D0301CECF72AFD0CE0089B3D1C002BA6 +:108E900008D031680B1CFC339A68002AFAD00022F3 +:108EA0009A603D1C281CFEBDF8B5171CB1221D1C84 +:108EB0000368D200491099508022002492009C50EF +:108EC0000122061C9A60AC4211DA395D301CECF7C5 +:108ED00029FC002809D0301CECF700FD301CECF711 +:108EE00031FD00280EDA041C0CE00134EBE7069B90 +:108EF0002C1C002B06D0301CECF70AFD002801D0FA +:108F000001246442201CF8BD82B00190C046C046D6 +:108F1000C046C046C046C046C046C046C046C04621 +:108F2000C046C046C046C046019B013B0193002B92 +:108F3000ECD102B070472F23C046C046C046C046A1 +:108F4000C046C046C046C046C046C046C046C046F1 +:108F5000C046C046013B002BEED1704703681A1C87 +:108F6000FC32D1680129FAD10021D160A322D200BC +:108F70009858C0B270470368FC33D8680138434240 +:108F80005841704708B5007840B200F05FF808BD5E +:108F9000002901D0012907D10023A022C356D20500 +:108FA000C133FF339B0099507047002310B5036015 +:108FB00043600A78041C2F2A15D14A789A4212D0AD +:108FC000481C191C206023681A782F2A02D101330B +:108FD000236005E0002A03D0013301312360F2E76A +:108FE000EDF746F86060201C10BD0068704708B5BA +:108FF0004368181E05D000F042F80138434258413A +:10900000C0B208BD10B5041CFFF7F1FF031E00D06D +:109010006368181C10BD08B54368181E04D000F022 +:109020002EF843425841C0B208BD10B5041CFFF7EA +:10903000F2FF031E03D06268131E00D0131F181C1A +:1090400010BD4068431E9841C0B27047A023800005 +:10905000DB05C018E02310B50C24DB00C2588900E2 +:10906000A243C250C2581143C15010BD10B5041CD8 +:10907000ECF7D2FF201C01F0AAFF201C10BD007BE2 +:10908000704770477047002070477047704710B5B1 +:10909000041CEFF7A9FC201C10BD10B5041CEFF751 +:1090A000A3FC201C10BD10B5041CF0F743F90023ED +:1090B000201C237510BD3ADF704708B50368002BEC +:1090C00001D0081C984708BD13B5041C7D30FF3043 +:1090D000002100F075F8201CA530FF30002100F0C1 +:1090E0006FF8201CCD30FF30012101F088FE13BD48 +:1090F0001FB5041C009202A80822019302F07CF81C +:10910000039A029B5010D20701D52258D358201839 +:109110000099019A98471FBD08B5EDF731FC016031 +:109120007047021C002310B5AC320432141F2468AF +:10913000002C01D00133F8E72A339B00C318596093 +:10914000201C10BD021C002310B5AC320432141FC9 +:1091500024688C4201D00133F8E72A339B00C318FE +:109160000020586010BD021C002310B5D432043218 +:10917000141F2468002C01D00133F8E734339B001E +:10918000C3185960201C10BD021C002310B5D43236 +:109190000432141F24688C4201D00133F8E73433C1 +:1091A0009B00C3180020586010BD4068704710B580 +:1091B000041CEDF7BFFD201CEFF716FC201C10BDB2 +:1091C0000630C17770470123807918407047C06826 +:1091D000431E9841704710B5041CEDF7EDFD201CAF +:1091E000EFF702FC201C10BD38B58388041C5A0719 +:1091F00008D59A0631D4DA0604D52169626901F0EE +:1092000027FC2AE004221343A380A3889A0705D5EC +:10921000A0682169626901F065FC09E02069616963 +:10922000DB0703D5E268A368984701E0A368984785 +:10923000A388DA060ED5A06900280BD0231C021CD7 +:10924000103322CA22C38368A361EFF7CDFBEEF788 +:1092500023FADAE704229343A38038BD031C72B6D5 +:10926000C068002807D08268DA60002A00D11A613D +:10927000DA8A013ADA8262B670478068002801D043 +:10928000C069FBE77047F7B50122041C0D1C076994 +:10929000EDF7B0FD00281FD1E38A092B1CD86B46DF +:1092A0000C3006CD06C3EFF77BFB0099019A051C35 +:1092B00000F0CDF872B6002F03D1E368AB60E56033 +:1092C00002E0BB68AB60BD60AB68002B00D12561DC +:1092D000E38A0133E38262B6F7BD07B500916946C0 +:1092E0000192FFF7D0FF07BD38B5051CFFF7C5FF9A +:1092F000281CFFF7B3FF041E0BD0211C0022281CE2 +:10930000EDF778FD201CEFF76FFBEEF7A5F90028CD +:10931000EED138BD10B5041CEDF792FE201CEFF71E +:1093200063FB201C10BD836B806A1B681840431EC2 +:1093300098417047836B37B51B68826A1A4218D010 +:109340000121041C6425EDF7C5FE68430321A061DB +:10935000201CEDF7BFFE68430521E061201CEDF7FE +:10936000B9FE4543A1882562684604220123EEF731 +:1093700061F837BD012904D0022906D10369C0690B +:1093800001E08369C068181A00E08069704701290C +:1093900004D0022906D18369C06801E00369C0696D +:1093A000181A00E0C06970470139036A012901D821 +:1093B0004269D31A181C7047F7B58369C268041C48 +:1093C000981AF3F777FAE2692369061C981A0F1CBA +:1093D000F3F770FA636900900191206A181AF3F7A5 +:1093E00069FA321C0D1C041C3B1C301C391CF2F7A2 +:1093F00017FC061C0F1C00980199021C0B1CF2F7AD +:109400000FFC021C0B1C301C391CF1F7A3FC2B1C9D +:10941000061C0F1C221C291C201CF2F701FC021C3C +:109420000B1C301C391CF1F795FCF4F7AFF8F3F77F +:109430000BFAFEBD01238079184070470223807922 +:10944000184070470122837993438371704737B581 +:10945000041C009101926D46EDF7CEFF231C06CD52 +:1094600006C30023201CA3603EBD72B601650B68D5 +:10947000002B03D143658365086007E05A6D002A1D +:1094800001D0131CFAE758658365426562B67047E0 +:10949000036D002B12D072B6826D436D002A01D08D +:1094A000536501E0026D1360436D002B01D0826DA6 +:1094B0009A65002343658365036562B6704708B506 +:1094C0000B1C111C1A1C0123EEF79EF808BD38B5C1 +:1094D000051CEFF30884C36B006C1C1B6B6C1B1A20 +:1094E000A3420CD21F2320349C43002801D0EFF765 +:1094F0007BFA201CEFF754FA041928646C6438BD19 +:1095000010B50C1C8047A047EEF78EF910BD08B5CA +:10951000EEF78AF908BD38B5141C031C101C0D1C8D +:109520009847201CA847EEF77FF938BD08B5EEF73D +:109530009BF8EEF7B1F8FAE710B5041C006801F0EB +:10954000C1FA201C10BD70B5061C081C0D1C01F0D2 +:1095500075FF041C0530EFF723FA306001F0A5FA1F +:109560003068291C4480621C043001F045FE70BD47 +:1095700038B5041C0B6800680D1C984205D001F03A +:10958000A1FA2868206001F093FA201C38BD00235E +:10959000994207DB02680223D05E0023884201DD86 +:1095A00051180B79181C704710B582604A43041C8F +:1095B0004160002A0ADDFE2390005B059A4201DD2E +:1095C00001204042EFF7ECF9206001E00023036046 +:1095D000201C10BD4B688A6870B543605343041C5F +:1095E0000D1C8260002B12DDFE229E005205301CF5 +:1095F000934201DD01204042EFF7D2F900232060C1 +:109600002A68D158C1500433B342FAD101E0002393 +:109610000360201C70BD4068704700290DDB002AE4 +:109620000BDB4368994208DA83689A4205DA4B43B8 +:109630009A1803689200D05800E00020704710B5D7 +:1096400000290CDB002A0ADB4468A14207DA84689F +:10965000A24204DA4C430168A2189200535010BD94 +:1096600010B5041C0068002801D0EFF7BDF9201CDC +:1096700010BDF0B58A684B6893B001900C1C9A42FB +:1096800001D000F0A1FD042A01D000F09DFD111CC5 +:109690000FA8FFF789FF24680F9FA36A66690293EA +:1096A000E36AE56B0393A36B02990493636A301C2E +:1096B0000593A3690693E3690793636B0893F0F737 +:1096C000E9FF291CF0F7E6FF03990990301CF0F739 +:1096D000E1FF0499F0F7DEFF011C0998F1F70CF99E +:1096E0000699061C0598F0F7D5FF291CF0F7D2FF64 +:1096F000011C301CF1F700F90799051C0598F0F7DB +:10970000C9FF0499F0F7C6FF011C281CF0F754FCB0 +:109710000699051C0898F0F7BDFF0399F0F7BAFF0A +:10972000011C281CF0F748FC0799051C0898F0F765 +:10973000B1FF0299F0F7AEFF011C281CF1F7DCF82D +:109740003860A36A66680293E36AE56B0393A36BD0 +:1097500002990493636A09900593A3680693E368EA +:109760000793636B089380231B06F018F0F792FFB2 +:10977000291CF0F78FFF03990A90301CF0F78AFF3D +:109780000499F0F787FF011C0A98F0F715FC069979 +:10979000061C0598F0F77EFF291CF0F77BFF011CE3 +:1097A000301CF0F709FC051C05980799F0F772FFCB +:1097B0000499F0F76FFF011C281CF1F79DF806993A +:1097C000051C0898F0F766FF0399F0F763FF011C8A +:1097D000281CF1F791F80799051C0898F0F75AFF33 +:1097E0000299F0F757FF011C281CF0F7E5FB7860A1 +:1097F000A36966680293E369E56B0393A36B301C6E +:10980000049363690593A3680693E3680793636B06 +:1098100002990893F0F73EFF291CF0F73BFF0399EC +:109820000A90301CF0F736FF0499F0F733FF011C63 +:109830000A98F1F761F80699061C0598F0F72AFFD7 +:10984000291CF0F727FF011C301CF1F755F8079988 +:10985000051C0598F0F71EFF0499F0F71BFF011C8B +:10986000281CF0F7A9FB0699051C0898F0F712FFD1 +:109870000399F0F70FFF011C281CF0F79DFB0799D7 +:10988000051C0898F0F706FF0299F0F703FF011C8A +:10989000281CF1F731F8B860A36966680293E369A0 +:1098A000E56A0393A36A0299049363690593A36825 +:1098B0000693E3680793636A089380231B06F018F6 +:1098C000F0F7E8FE291CF0F7E5FE03990A90301C3A +:1098D000F0F7E0FE0499F0F7DDFE011C0A98F0F7BE +:1098E0006BFB0699061C0598F0F7D4FE291CF0F7CF +:1098F000D1FE011C301CF0F75FFB0799051C059891 +:10990000F0F7C8FE0499F0F7C5FE011C281CF0F71B +:10991000F3FF0699051C0898F0F7BCFE0399F0F7D1 +:10992000B9FE011C281CF0F7E7FF0799051C0898F1 +:10993000F0F7B0FE0299F0F7ADFE011C281CF0F71D +:109940003BFBF860A36A26690293E36AE56B039325 +:10995000A36B02990493236A0593A3690693E369B1 +:109960000793236B089380231B06F018F0F792FEF1 +:10997000291CF0F78FFE03990A90301CF0F78AFE3D +:109980000499F0F787FE011C0A98F0F715FB069979 +:10999000061C0598F0F77EFE291CF0F77BFE011CE3 +:1099A000301CF0F709FB0799051C0598F0F772FECB +:1099B0000499F0F76FFE011C281CF0F79DFF069933 +:1099C000051C0898F0F766FE0399F0F763FE011C8A +:1099D000281CF0F791FF0799051C0898F0F75AFE2C +:1099E0000299F0F757FE011C281CF0F7E5FA3861E0 +:1099F000A36A26680293E36AE56B0393A36B0A905C +:109A00000493236A301C0593A3680693E3680793C5 +:109A1000236B08930299F0F73DFE291CF0F73AFEFC +:109A200003990B90301CF0F735FE0499F0F732FEE5 +:109A3000011C0B98F0F760FF0699061C0598F0F7DB +:109A400029FE291CF0F726FE011C301CF0F754FFFC +:109A50000799051C0598F0F71DFE0499F0F71AFE0A +:109A6000011C281CF0F7A8FA0699051C0898F0F7C5 +:109A700011FE0399F0F70EFE011C281CF0F79CFA6A +:109A80000799051C0898F0F705FE0299F0F702FE09 +:109A9000011C281CF0F730FF78612668A369E56B8C +:109AA0000293E36902990393A36B049323690593DB +:109AB000A3680693E3680793236B089380231B0630 +:109AC000F018F0F7E7FD291CF0F7E4FD03990B907F +:109AD000301CF0F7DFFD0499F0F7DCFD011C0B985A +:109AE000F0F76AFA0699061C0598F0F7D3FD291CD1 +:109AF000F0F7D0FD011C301CF0F75EFA0799051C49 +:109B00000598F0F7C7FD0499F0F7C4FD011C281C67 +:109B1000F0F7F2FE0699051C0898F0F7BBFD0399D3 +:109B2000F0F7B8FD011C281CF0F7E6FE0799051CAC +:109B30000898F0F7AFFD0299F0F7ACFD011C281C66 +:109B4000F0F73AFAB861A36926680293E369E56A17 +:109B50000393A36A029904932369301C0593A368B5 +:109B60000693E3680793236A0893F0F793FD291C93 +:109B7000F0F790FD03990B90301CF0F78BFD0499E2 +:109B8000F0F788FD011C0B98F0F7B6FE0699061C4D +:109B90000598F0F77FFD291CF0F77CFD011C301CB7 +:109BA000F0F7AAFE0799051C0598F0F773FD0499D4 +:109BB000F0F770FD011C281CF0F7FEF90699051C52 +:109BC0000898F0F767FD0399F0F764FD011C281C65 +:109BD000F0F7F2F90799051C0898F0F75BFD029978 +:109BE000F0F758FD011C281CF0F786FEF861636A47 +:109BF00026690293E36AE56B0393636B301C04935D +:109C0000236A059363690693E3690793236B0893BB +:109C10000299F0F73FFD291CF0F73CFD03990B90EA +:109C2000301CF0F737FD0499F0F734FD011C0B9858 +:109C3000F0F762FE0699061C0598F0F72BFD291C2B +:109C4000F0F728FD011C301CF0F756FE0799051CA3 +:109C50000598F0F71FFD0499F0F71CFD011C281C66 +:109C6000F0F7AAF90699051C0898F0F713FD039977 +:109C7000F0F710FD011C281CF0F79EF90799051C50 +:109C80000898F0F707FD0299F0F704FD011C281C65 +:109C9000F0F732FE0B903862636A26680293E36A3B +:109CA000E56B0393636B02990493236A05936368DE +:109CB0000693E3680793236B089380231B06F01831 +:109CC000F0F7E8FC291CF0F7E5FC03990C90301C38 +:109CD000F0F7E0FC0499F0F7DDFC011C0C98F0F7BC +:109CE0006BF90699061C0598F0F7D4FC291CF0F7CF +:109CF000D1FC011C301CF0F75FF90799051C059891 +:109D0000F0F7C8FC0499F0F7C5FC011C281CF0F71B +:109D1000F3FD0699051C0898F0F7BCFC0399F0F7D1 +:109D2000B9FC011C281CF0F7E7FD0799051C0898F1 +:109D3000F0F7B0FC0299F0F7ADFC011C281CF0F71D +:109D40003BF97862636926680293E369E56B0393E4 +:109D5000636B029904932369301C0593636806932F +:109D6000E3680793236B0893F0F794FC291CF0F742 +:109D700091FC03990C90301CF0F78CFC0499F0F7DF +:109D800089FC011C0C98F0F7B7FD0699061C059894 +:109D9000F0F780FC291CF0F77DFC011C301CF0F76B +:109DA000ABFD0799051C0598F0F774FC0499F0F7D2 +:109DB00071FC011C281CF0F7FFF80699051C089897 +:109DC000F0F768FC0399F0F765FC011C281CF0F71C +:109DD000F3F80799051C0898F0F75CFC0299F0F776 +:109DE00059FC011C281CF0F787FDB86263692668DE +:109DF0000293E369E56A0393636A04932369059315 +:109E000063680693E3680793236A089380231B061D +:109E1000F0180299F0F73EFC291CF0F73BFC03997F +:109E20000C90301CF0F736FC0499F0F733FC011C61 +:109E30000C98F0F7C1F80699061C0598F0F72AFC73 +:109E4000291CF0F727FC011C301CF0F7B5F8079926 +:109E5000051C0598F0F71EFC0499F0F71BFC011C8B +:109E6000281CF0F749FD0699051C0898F0F712FC2C +:109E70000399F0F70FFC011C281CF0F73DFD079932 +:109E8000051C0898F0F706FC0299F0F703FC011C8A +:109E9000281CF0F791F8F8622669636AA56B0293B3 +:109EA000A36A02990393636B0493236A059363691E +:109EB0000693A3690793236B089380231B06F0186E +:109EC000F0F7E8FB291CF0F7E5FB03990C90301C38 +:109ED000F0F7E0FB0499F0F7DDFB011C0C98F0F7BC +:109EE0006BF80699061C0598F0F7D4FB291CF0F7CF +:109EF000D1FB011C301CF0F75FF80799051C059891 +:109F0000F0F7C8FB0499F0F7C5FB011C281CF0F71B +:109F1000F3FC0699051C0898F0F7BCFB0399F0F7D1 +:109F2000B9FB011C281CF0F7E7FC0799051C0898F1 +:109F3000F0F7B0FB0299F0F7ADFB011C281CF0F71D +:109F40003BF83863636A26680293A36AA56B0393A0 +:109F5000636B02990493236A0C9005936368301C29 +:109F60000693A3680793236B0893F0F793FB291CD0 +:109F7000F0F790FB03990D90301CF0F78BFB0499E0 +:109F8000F0F788FB011C0D98F0F7B6FC0699061C4B +:109F90000598F0F77FFB291CF0F77CFB011C301CB7 +:109FA000F0F7AAFC0799051C0598F0F773FB0499D4 +:109FB000F0F770FB011C281CEFF7FEFF0699051C4B +:109FC0000898F0F767FB0399F0F764FB011C281C65 +:109FD000EFF7F2FF0799051C0898F0F75BFB029971 +:109FE000F0F758FB011C281CF0F786FC78636369C6 +:109FF00026680293A369A56B0393636B049323699B +:10A00000059363680693A3680793236B08938023E3 +:10A010001B06F0180299F0F73DFB291CF0F73AFBFC +:10A0200003990D90301CF0F735FB0499F0F732FBE3 +:10A03000011C0D98EFF7C0FF0699061C0598F0F774 +:10A0400029FB291CF0F726FB011C301CEFF7B4FF9D +:10A050000799051C0598F0F71DFB0499F0F71AFB0A +:10A06000011C281CF0F748FC0699051C0898F0F71D +:10A0700011FB0399F0F70EFB011C281CF0F73CFCC8 +:10A080000799051C0898F0F705FB0299F0F702FB09 +:10A09000011C281CEFF790FFB86326686369A56A66 +:10A0A0000293A36902990393636A301C04932369A2 +:10A0B000059363680693A3680793236A0893F0F7F0 +:10A0C000E9FA291CF0F7E6FA03990D90301CF0F735 +:10A0D000E1FA0499F0F7DEFA011C0D98F0F70CFC98 +:10A0E0000699061C0598F0F7D5FA291CF0F7D2FA64 +:10A0F000011C301CF0F700FC0799051C0598F0F7CF +:10A10000C9FA0499F0F7C6FA011C281CEFF754FFAE +:10A110000699051C0898F0F7BDFA0399F0F7BAFA0A +:10A12000011C281CEFF748FF0799051C0898F0F759 +:10A13000B1FA0299F0F7AEFA011C281CF0F7DCFB2B +:10A14000F86321680998F0F7A5FA6168051C0A9878 +:10A15000F0F7A0FA011C281CEFF72EFFA168051CE0 +:10A160000B98F0F797FA011C281CEFF725FFE16820 +:10A17000051C0C98F0F78EFA011C281CEFF71CFF49 +:10A180000021041CEFF734FE002805D000210198BF +:10A190000A1CFFF709FA13E0FE20211C8005F0F7E6 +:10A1A00087F83E1C3C1C051C40362068291CF0F733 +:10A1B00071FA01C4B442F8D101980FA9FFF70AFA65 +:10A1C0000FA8FFF74DFA04E0002101980A1CFFF7E1 +:10A1D000EBF9019813B0F0BDF0B58BB00593161CE8 +:10A1E000059A0D1C4B6803908968002A01D00293E0 +:10A1F00001E00291191C029B7268934205D0002174 +:10A2000003980A1CFFF7D0F942E007A8B268FFF7ED +:10A21000CBF90027089B00939F4232DA002300937A +:10A22000009B099A93422ADA002300240193029B9F +:10A230009C421BDA059B281C002B02D0211C3A1CD7 +:10A2400001E0391C221CFFF7E8F9211C009A049058 +:10A25000301CFFF7E2F9011C0498F0F71BFA011C0F +:10A260000198EFF7A9FE01340190E0E7019B07A8F0 +:10A27000391C009AFFF7E3F9009B0133CFE7013760 +:10A28000C8E7039807A9FFF7A5F907A8FFF7E8F9BA +:10A2900003980BB0F0BD10B5041CEDF735FB201C86 +:10A2A000EEF7A2FB201C10BD836A80691B68184072 +:10A2B0004342584170470E23C25E1023C15E1223F1 +:10A2C000C35E494352435B438818C018704713B5B7 +:10A2D000041CEDF7FDFB211C231C36310A783433B6 +:10A2E000824204D11A78092A04D8013201E00022FE +:10A2F00008701A7035340A782178914209D01B7899 +:10A30000092B06D92270684692B21B210123EDF772 +:10A3100091F813BD08B5836A82691B681A4201D19E +:10A32000EDF79CFC08BD012904D0022906D11023B9 +:10A33000C05E05E00E23C05E404201E00E23C05E19 +:10A340007047012904D0022906D10E23C05E01E026 +:10A350001023C05E404201E01023C05E704712220D +:10A36000835E5842022900D0181C7047F7B5041CC0 +:10A370001023C05EF0F75EFC0E23E55E1222A35EA2 +:10A380006D425B420190281C0093F2F793FA061C81 +:10A3900000980F1CF2F78EFA021C0B1C301C391CA3 +:10A3A000F3F7F0F8F2F716FB2063061CF3F784F8D6 +:10A3B000071C301CF2F7D4FE802212069446019B43 +:10A3C000061C6344281C0193F0F734FC391CF0F799 +:10A3D00061F9051C0098F0F72DFC311CF0F75AF9D3 +:10A3E000011C281CEFF7E8FD011C0198EFF760FF46 +:10A3F000F2F74EFD0122A379E0621343A371F7BD8A +:10A4000010B58379041CDB0701D4FFF7AFFFE06AC6 +:10A4100010BD10B58379041CDB0701D4FFF7A6FF3C +:10A42000206B10BD35300078704752DF70477047A1 +:10A4300010B5041CEEF7D8FA201C10BD70B5041C32 +:10A44000161C1D1C03220723EEF72EF9201C311CBD +:10A45000022207231030EEF727F9201C291C0122C5 +:10A4600007232030EEF720F9201C0499042203234F +:10A470003030EEF719F9201C0599052203234030EE +:10A48000EEF712F9201C0699112201235030EEF745 +:10A490000BF9201C07990C2201236030EEF704F918 +:10A4A000201C08990B2201237030EEF7FDF8201CC8 +:10A4B0000999122201238030EEF7F6F8201C0A9940 +:10A4C0000A2201239030EEF7EFF8201C0B990622A8 +:10A4D0000323A030EEF7E8F8201C0C991A22012380 +:10A4E000B030EEF7E1F8201C0D9914220123C030A2 +:10A4F000EEF7DAF8201C0E9917220123D030EEF780 +:10A50000D3F8201C0F9916220123E030EEF7CCF887 +:10A51000201C109915220123F030EEF7C5F8601CBD +:10A52000119910220123FF30EEF7BEF8201C1130E4 +:10A53000129900220123FF30EEF7B6F8201C2130DB +:10A5400013991E220123FF30EEF7AEF8201C70BDD8 +:10A5500010B5041C006800F0B5FA201C10BD08B549 +:10A560000A1C002100F065FE08BD10B5041C086837 +:10A57000206000F09DFA201C10BD08B50368998882 +:10A58000981D5B885943FFF7EAFF08BD10B5041C0E +:10A590000023EDF751FC201C10BDF0B5071C89B05D +:10A5A0000EA800780591079038680490468800202E +:10A5B000B24200DB82E0049CA488A34200DB7DE081 +:10A5C0000D6803956D88AC46151C65440195854260 +:10A5D00074DD039DAD885919069181426EDD002A14 +:10A5E00005DA01990291B14207DD029605E0B11A40 +:10A5F0000291614501DD61460291002B05DA069961 +:10A600000191A14206DD019404E0E11A0191A94201 +:10A6100000DD01955542D01728400025039C0634E3 +:10A62000AB4202DA61464D425D4328182118D443FB +:10A63000E41722400024049803910630A34201DD70 +:10A64000341C5C43079BA2188418002B02D1059D83 +:10A650001E1C1BE00022101C019B9A422EDA0023D4 +:10A6600002998B4207DA0399CD5C002D01D0E554A5 +:10A6700001300133F4E7059B03991B6801325B88C5 +:10A68000CB1803933B685B88E418E5E7019B9E4287 +:10A690000EDA201C029A039900F0AEFD2B68039A93 +:10A6A0005B880136D31803933B685B88E418EDE7B9 +:10A6B000D843C0171840029B4343181C09B0F0BD93 +:10A6C00010B518C96210E10701D58158CB58801820 +:10A6D000984710BD10B5041CEDF748FD201CEEF79F +:10A6E00083F9201C10BD70B5051C041C74350121B4 +:10A6F000281CEDF767FC221C5A3213780133DBB2B9 +:10A700001370E17901318B4225D10023261C13708F +:10A71000626D58360221525E33882021934205DA59 +:10A72000201C19B25430FEF732FF011CE2790023DD +:10A73000281CEDF7F9FB626D33880221525E9342CB +:10A7400007DD231C00224C331A70201CEDF70CFE91 +:10A7500001E00133338070BD70B5051C061CC26D6D +:10A7600060350221525E2B88041C743620219342EE +:10A7700004DA19B25C30FEF70AFF011C0022301C1B +:10A78000131CEDF7D1FBE26D2B880221525E934240 +:10A7900007DD231C00224C331A70201CEDF7E4FD6A +:10A7A00001E001332B8070BD73B5041C061C251C11 +:10A7B0007436301C6835FFF7E0FE0023EA5E211C8A +:10A7C000002364310093301CFFF7E7FE002804D11A +:10A7D000231C70331B78002B04D1231C6A331B7895 +:10A7E000002B07D1231C00224C331A70201CEDF7DC +:10A7F000BBFD06E02A885BB29B182B8001237034D6 +:10A80000237073BDF0B5071C0021051C041C6A37BA +:10A81000406E7956408868350023EA5E4B1D1B1A4E +:10A82000201C261C85B07030039074369A4202DCDE +:10A830000378002B22D1002A04DD494209B2301CE2 +:10A84000EDF7C0FB0023EA5E211C0023301C0093BF +:10A850006431FFF7A2FE0023FB56002B05D1221C1A +:10A860004C321370201CEDF77FFD0123039A137007 +:10A8700000222B88BA56D3182B8009E0231C002213 +:10A880004C33301C1A70FFF778FE201CEDF76CFD7E +:10A8900005B0F0BD38B5051C4C35297800292BD002 +:10A8A000021C041C503213884E3406339BB21380B2 +:10A8B00024889C4220D80023041C1380022901D143 +:10A8C000FFF711FF2B78032B02D1201CFFF744FF69 +:10A8D0002B78042B02D1201CFFF766FF2B78052B69 +:10A8E00002D1201CFFF78EFF2B78062B04D100230A +:10A8F000201C2B70EDF738FD38BD13B5827A041C8F +:10A90000042A09D1818801236846ECF793FD0023CE +:10A91000A3722033E3720AE0EDF7A6FC201CFFF7D8 +:10A92000B9FFE37A5B00E372A37A0133A37213BD2C +:10A9300008B57430FFF721FE08BD031C10B5443183 +:10A9400014C914C310BD10B58379041C1B0706D5A8 +:10A95000806800F061FA0D23E35683420CD0201C7E +:10A96000EDF7AEFE0D2001212056EEF7A9FA0822E0 +:10A97000A379A0601343A371002010BD80210CC8EF +:10A980009B1A09069B080B4313607047031C70B5A4 +:10A990008208980702D1181E01D137E00132541CF9 +:10A9A00072B621C9A84219D20368002B13DA5B00E2 +:10A9B0005B08990041180E68002E01DAA94202D303 +:10A9C000A34208D30DE08021760076089B19090682 +:10A9D00019430160EDE79B00C018E3E762B6002071 +:10A9E00014E00232934203D992008218954204D8AF +:10A9F00003685B005B08036006E080211B1B0906FF +:10AA0000043A0B431360046062B6043070BDF7B5BE +:10AA10001D1C08AB1B88041C1030161C0F1C019356 +:10AA2000ECF7EAFC6A460023928827806680A560DE +:10AA3000201CE360A280E361A361FEBD10B58388A2 +:10AA4000041C9B0702D58068EDF7CEFF201C10BDCB +:10AA50007FB584690192051C6B4600910122002C90 +:10AA60000DD102AC221C03CB03C20C20EDF798FFE2 +:10AA7000061C02996268FEF7EAFCAE6114E0A16868 +:10AA8000002902D001320C1CF9E7092A0CDC02ADC6 +:10AA90002A1C03CB03C20C20EDF782FF061C02998F +:10AAA0006A68FEF7D4FCA6607FBD0323038070476D +:10AAB00010B5041CEDF7B4FF002802D1238802333F +:10AAC000238010BD10B5041CEDF7AAFF002808D1A3 +:10AAD0002388023B9BB22380012B02D1201CEDF77F +:10AAE00083FF10BD37B50D1C131C011D44692A1CC2 +:10AAF0000068A04737BD026808B594460A6800237D +:10AB0000944507D104300431102200F066FB434223 +:10AB10004341DBB2181C08BD704780235B05F7B5C5 +:10AB20001A695B690F1C133B1C1C5443211C061C37 +:10AB3000EDF78CFF231C251C483301933B1BEA587F +:10AB4000291C301CEDF7C4FF019B04359D42F5D153 +:10AB50000020FEBD10B5041CEDF7D6FF201CEDF75C +:10AB600043FF201C10BD704710B5041CEDF73CFFDF +:10AB7000201C10BD031CC068002804D0426ADA60A3 +:10AB80001A7A013A1A72704737B5041CE568002D2D +:10AB90001ED0EA78012A06D0022A09D1201C1830DA +:10ABA000EEF736F80AE0201C1430EEF70FF805E057 +:10ABB00092B268461E210123ECF73CFCE3689D42FB +:10ABC000E4D1201CFFF7D6FF281CEDF70DFFDDE7D1 +:10ABD00037BD0023036070470023037070471FB523 +:10ABE000041C009202A80822019300F005FB039ABE +:10ABF000029B5010D20701D52258D3582018009933 +:10AC0000019A98471FBD0289031C8A4202D18079AC +:10AC1000012305E0428900208A4202D1987902236B +:10AC2000184070470289031C8A4202D180790423AC +:10AC300005E0428900208A4202D198790823184011 +:10AC400070470289031C8A4202D18079102305E0F3 +:10AC5000428900208A4202D1987920231840704707 +:10AC6000038910B58B4207D183790124002A01D0D2 +:10AC7000234300E0A343837143898B4207D1837947 +:10AC80000221002A01D00B4300E08B43837110BDE9 +:10AC9000038910B58B4207D183790424002A01D09F +:10ACA000234300E0A343837143898B4207D1837917 +:10ACB0000821002A01D00B4300E08B43837110BDB3 +:10ACC000038910B58B4207D183791024002A01D063 +:10ACD000234300E0A343837143898B4207D18379E7 +:10ACE0002021002A01D00B4300E08B43837110BD6B +:10ACF000F0B587B0009107898DB2041CBD4200D128 +:10AD000047896B465E88022E25D0052E11D0012E74 +:10AD100073D1201C291C321CFFF7A2FF201C391CF8 +:10AD2000FFF771FF002868D0A18804A8321C331CEB +:10AD30000EE0201C291C0122FFF7AAFF201C391C51 +:10AD4000FFF770FF002858D0321C0123A18804A807 +:10AD5000ECF770FB51E0201C391CFFF754FF002872 +:10AD600016D0321CA188012302A8ECF763FB201C3B +:10AD7000291CFFF757FFA68800282ED0201C391C5D +:10AD8000FFF750FF002828D004A8311C042227E038 +:10AD9000201C291CFFF755FF00280ED1267B012E11 +:10ADA0000BD1201C291CFFF73DFF002821D0291CB6 +:10ADB000042204A8331CECF73DFB201C291C0022B4 +:10ADC000FFF74EFF201C291C0022FFF761FF201C0B +:10ADD000291C0022FFF774FF0FE0311C032204A896 +:10ADE0000123ECF727FB201C391C0122FFF768FF29 +:10ADF000E3E704A8291C0322DCE707B0F0BD0173D8 +:10AE0000704738B50D1C0121041C41560278281CDE +:10AE1000EEF72AF8657038BD407840B2704710B53B +:10AE2000041C0068FFF74EFE201C10BDF8B5D4438B +:10AE3000E4171440071CA01D1E1C0D1CEDF7B0FDEF +:10AE40003860FFF732FE3B681C7138684680002D81 +:10AE500004D00530291C221C00F0CEF9F8BD0A1CD4 +:10AE6000002110B5041C0B1CFFF7E0FF201C10BDD7 +:10AE700051DF704761DF7047F8B5061C0F1C041CDA +:10AE80001518AC4206D0BB1B195D201CEEF7A4F9C7 +:10AE90000134F6E7F8BD08B5FDF784FE08BD08B536 +:10AEA000FDF785FE08BD08B5C36A011C002B04D15F +:10AEB0008369002B06D0984704E08069002801D000 +:10AEC0001C31984708BD10B5041CEEF7F5F9201C9D +:10AED00000F07DF8201C10BD10B5041CEEF7FAF947 +:10AEE000201C00F074F8201C10BD08B50430FEF7DB +:10AEF00049F808BD08B50A1C031C02211C30002AB1 +:10AF000004D09A6300220221DA640132EEF724FDB4 +:10AF100008BD836980681B681840431E98417047CC +:10AF200008B54369011C002B04D10368002B06D02F +:10AF3000984704E00068002801D00431984708BD14 +:10AF400008B5012903D0022904D1383000E02030AF +:10AF5000FFF7E6FF08BDF0B585B01C1C0AAB061C68 +:10AF60000F1C03921D78EEF7FDF901235D4000955B +:10AF7000231C301C391C039AFDF796FF201A441E2F +:10AF8000A04105B0F0BDF0B585B01C1C0AAB061C95 +:10AF90000F1C03921D78EEF7E5F901235D40009543 +:10AFA000231C301C391C039AFDF73AFF201A441E5B +:10AFB000A04105B0F0BD0023CB565A1C05D08342FA +:10AFC00001D1486802E00C31F5E7181C704708B55C +:10AFD000F6F7B2F808BD08B5031C081C191CF5F7F4 +:10AFE0005BFD08BD011C002008B5021C031CFDF719 +:10AFF0000CFD08BD08B500210A22F7F72DF808BDA1 +:10B00000F7B58A89051C0C1C13075ED44B68002B0E +:10B0100002DC0B6C002B1ADDE76A002F17D000232F +:10B020002E682B6080235B011A4001D0626D15E011 +:10B03000281C216A0123B847021C431C0ED12B682F +:10B04000002B0BD01D2B01D0162B02D12E6000201F +:10B050005EE04021A3890B43A38159E0A3895B07EC +:10B0600006D56368D21A636B002B01D0236CD21A09 +:10B070000023281C216AE76AB847A389421C06D12D +:10B080002A68002A03D01D2A01D0162A19D10022CD +:10B09000626022692260DB0405D5431C02D12B6863 +:10B0A000002B00D16065616B2E600029CFD0231C7E +:10B0B0004433994202D0281CF6F748F80020606318 +:10B0C00026E040221343A38122E00F69002FBED067 +:10B0D0000B680F60DB1B01930023920700D14B69C3 +:10B0E000A360019B002BB2DD281C216A3A1C019B46 +:10B0F000A66AB047002806DC40220120A38940420E +:10B100001343A38104E0019B3F181B1A0193E8E756 +:10B11000FEBD70B568254B1E5D430E1C291C7431A5 +:10B12000F6F75AF8041E08D000212A1C0160466078 +:10B130000C30A060683200F07CF8201C70BD7047B5 +:10B14000704708B5F5F7D8FE08BDF7B54830041CC0 +:10B1500000260191002C12D0A5686768013F0CD42D +:10B16000AB89012B07D90E22AB5E013303D0281C1B +:10B17000019B984706436835F0E72468EAE7301CEE +:10B18000FEBDF7B5041C071C002601914834002CB5 +:10B1900016D06368A5680093009B013B00930DD413 +:10B1A000AB89012B08D90E22AB5E013304D0381CC9 +:10B1B000291C019B984706436835EDE72468E6E7BC +:10B1C000301CFEBDC9B28218904204D003788B4275 +:10B1D00002D00130F8E70020704730B500249442D7 +:10B1E00008D0035D651C0C5DA34201D0181B02E072 +:10B1F0002C1CF4E7002030BD002310B5934203D08F +:10B20000CC5CC4540133F9E710BD10B5814208D2BB +:10B210008B18984205D29B1A013A09D3995C815444 +:10B22000FAE70023934203D0CC5CC4540133F9E71E +:10B2300010BD031C8218934202D019700133FAE743 +:10B240007047936810B5013B9360002B05DA946951 +:10B25000A34208DBCBB20A2B05D01368581C106040 +:10B260001970C8B201E0F6F7C5FF10BDF8B5061CAD +:10B270000F1C141CD518AC4208D02178301C3A1C85 +:10B28000FFF7DFFF0134431CF5D100E00020F8BDDB +:10B29000F7B5171C01930A698B6800900C1C934248 +:10B2A00000DA131C221C3B6043321278002A01D0C2 +:10B2B00001333B6023689B0602D53B6802333B6049 +:10B2C000062523681D401ED0231C43331B785A1EBD +:10B2D0009341226892061CD53020E1184031C87095 +:10B2E000211C5A1C45310978A21840320233D17012 +:10B2F0000FE0221C0123009801991932089EB047E3 +:10B30000431C0ED00135E3683A689B1A9D42F0DB7E +:10B31000DAE7221C009801994332089DA847431C94 +:10B3200002D10120404220E006232068E1683A680B +:10B3300003400025042B03D18D1AEB43DB171D407E +:10B34000A3682269934201DD9B1AED180027AF42E2 +:10B350000ADA221C0123009801991A32089EB0478C +:10B36000431CDED00137F2E70020FEBD092208B5FC +:10B370008189031C0A400020092A02D1181CF5F714 +:10B3800043FC08BDF0B50A785E2A02D04B1C0024AD +:10B3900002E001244A788B1C011C451CFF350C700F +:10B3A0000131A942FBD1002A01D1581E1CE0012124 +:10B3B0000C1BE7B2875419785E1C2D2906D05D2935 +:10B3C0000FD000290FD00A1C331CF2E75D785D2DE9 +:10B3D000F9D09542F7DB023301328754AA42FBDBF6 +:10B3E000E9E7301C00E0181CF0BD08B54A424A41AC +:10B3F00080235200DB00F6F789FC08BD002070476F +:10B4000008B50E23C95EF6F7D5FF08BD021CC9B208 +:10B410001378002B03D08B4204D00132F8E7181CBC +:10B42000002900D1101C704702780B78002A03D045 +:10B43000013001319A42F7D0D01A70470023C25C24 +:10B440000133002AFBD1581E7047002330B59A42C1 +:10B450000DD0013AC45CCD5CAC4202D1934202D122 +:10B46000251C631B03E00133002CF3D1F8E7181C03 +:10B4700030BD0B7830B5722B0ED0772B07D0612BF7 +:10B480000ED182258420AD00012340001BE0C025A1 +:10B490000123ED00082016E0002504202B1C12E0FB +:10B4A0001623036000201BE0622C11D0782C12D0F0 +:10B4B0002B2C08D10F3CA0430C3C20430D3CA34354 +:10B4C0001C1C0223234301310C78002CECD105E035 +:10B4D00080246402F6E780242401F3E72B43136001 +:10B4E00030BDF8B5061C0C1C151C002904D1111C1C +:10B4F000F5F772FE041C18E0002A03D1F5F726FECA +:10B500002C1C12E000F06FF8A8420ED2301C291C4F +:10B51000F5F762FE071E07D0211C2A1CFFF76CFE00 +:10B52000301C211CF5F712FE3C1C201CF8BD38B560 +:10B53000141C4B1C02D10120404234E0938920228C +:10B540009343626BA381CDB26368002A0FD0A26BD4 +:10B55000934206DA2368013B23601D706368013360 +:10B560001FE0211CF6F708FE0028F3D0E3E721696D +:10B570002268002909D08A4207D9511E0878A842BA +:10B5800003D10133216063600DE02364231C443345 +:10B5900063630323A363231C4633E2631D702360AC +:10B5A0000123281C636038BD10B50C1C496B0029B1 +:10B5B0000ED0231C4433994201D0F5F7C7FD00207B +:10B5C000236C60636360834202D0E36B236009E015 +:10B5D000236920222360002301206360A389404265 +:10B5E0001343A38110BD0B1F1A68101F002A04DA31 +:10B5F000891804390B68D01804387047F8B5C0466C +:10B60000F8BC08BC9E467047F8B5C046F8BC08BCFC +:10B610009E4670470000000000000000000000008F +:10B6200071500100498A02000D8A020000000000EA +:10B6300000000000000000007B8A0200778A020000 +:10B64000A18A0200CB8A0200C78A0200CF8A0200C8 +:10B65000D38A02000000000000000000138C0200EA +:10B66000138C0200FCFFFFFF000000000000000040 +:10B6700000000000000000000000000000000000CA +:10B680000000000000000000138C02000000000019 +:10B690000000000000000000258B0200558B020016 +:10B6A0000000000000000000138C0200138C020058 +:10B6B000138C0200138C0200138C0200138C020006 +:10B6C000BD8B020000000000000000000000000030 +:10B6D0000000000000000000138C0200138C020028 +:10B6E000138C0200138C0200138C0200138C0200D6 +:10B6F000BD8B02000000000000000000FCFFFFFF07 +:10B700000000000000000000000000000000000039 +:10B710000000000000000000196001006D900200B0 +:10B72000000000000000000075610100B961010027 +:10B7300097AE02009FAE0200C0FFFFFF00000000B6 +:10B740007B8A0200778A0200A18A0200CB8A02006B +:10B75000C78A0200CF8A0200D38A020099610100E1 +:10B76000CB6101007992010069920100BCFFFFFFEB +:10B7700000000000A9610100DD610100000000007F +:10B780000000000000000000716C010085900200C4 +:10B7900087900200356D0100AF91020000000000AB +:10B7A000000000000000000083900200E992020007 +:10B7B000CF910200B96D0100D79102000000000096 +:10B7C000000000000000000083900200359302009A +:10B7D0002793020041700100159302000000000051 +:10B7E00000000000000000008390020015A302008A +:10B7F000A9A202000979010097A20200000000003E +:10B800000000000000000000839002008D7D010018 +:10B81000C17C01002FA4020031A40200000000003E +:10B8200000000000000000008983010085900200F4 +:10B83000879002006D810100D5A602000000000083 +:10B8400000000000000000008390020085900200CC +:10B85000879002008D9002008F900200000000008F +:10B86000000000000000000083900200298B01000E +:10B8700087900200098B010055AB02000000000018 +:10B8800000000000000000008390020089AB02006D +:10B890008790020067AB020069AB02000000000065 +:10B8A000000000000000000083900200859002006C +:10B8B000879002008B9002009B9002000000000025 +:10B8C00000000000000000002D610100ED6101009A +:10B8D00097AE02009FAE0200C0FFFFFF0000000015 +:10B8E0007B8A0200778A0200A18A0200CB8A0200CA +:10B8F000C78A0200CF8A0200D38A02005561010084 +:10B90000FF6101007992010069920100BCFFFFFF15 +:10B9100000000000656101001162010000000000EC +:10B920000000000000000000B9920100C7AE020054 +:10B93000A7AE0200000000000000000000000000B0 +:10B94000D5920100D9AE0200E2652F227F2B7A3C0E +:10B95000075C143326A6813CBDCBF07A8807703C87 +:10B96000075C143326A6913C4FBB610567ACDD3FF5 +:10B97000182D4454FB21E93F9BF681D20B73EF3F16 +:10B98000182D4454FB21F93F000000000000304313 +:10B9900000000000000030C30000000000000000B4 +:10B9A0000A000000D10200006C2403006F24030091 +:10B9B000792403007D2403008124030093240300E1 +:10B9C0009F240300A9240300B6240300C12403001C +:10B9D000CB240300D8240300E3240300F024030055 +:10B9E000FB24030006250300112503001C2503008A +:10B9F0002B250300362503004725030052250300AD +:10BA0000612503006D2503007825030082250300CE +:10BA10008D2503009B250300A9250300B7250300FE +:10BA2000C1250300CB250300D6250300E025030034 +:10BA3000EE250300F8250300032603000C2603006F +:10BA4000152603001E2603002726030030260300C8 +:10BA50003F2603004D2603005826030060260300FE +:10BA60006C260300742603007C2603008326030053 +:10BA70008A26030090260300962603009D260300D5 +:10BA8000A3260300A9260300AF260300B526030062 +:10BA9000BB260300C1260300C7260300CE260300F1 +:10BAA000D5260300DB260300E2260300E926030077 +:10BAB000ED260300F2260300F7260300FE2603000E +:10BAC000042703000C270300142703001A27030090 +:10BAD00020270300272703002E2703003527030014 +:10BAE0003D270300432703004A2703005127030093 +:10BAF00059270300612703006C2703007727030001 +:10BB00008727030097270300A9270300BA2703000C +:10BB1000CB270300D9270300E4270300F027030005 +:10BB200002280300162803002B2803003B280300EB +:10BB3000492803005C280300692803007D280300CE +:10BB40008828030096280300A4280300B0280300D7 +:10BB5000C6280300D0280300E0280300EF280300D4 +:10BB6000FD2803000A290300162903002A290300DF +:10BB7000372903004B2903005A29030061290300D8 +:10BB8000692903007029030079290300842903002F +:10BB900092290300982903009E290300A429030089 +:10BBA000AB290300B3290300B9290300C12903000D +:10BBB000C8290300D4290300DC290300E729030076 +:10BBC000ED290300FB2903000A2A0300112A0300C0 +:10BBD000172A0300202A03002C2A0300332A03001B +:10BBE0003A2A0300432A03004B2A0300582A030081 +:10BBF000622A03006C2A0300762A0300802A0300CD +:10BC0000872A03008D2A0300932A0300982A030041 +:10BC10009E2A0300AB2A0300B82A0300BF2A0300B0 +:10BC2000C52A0300CC2A0300D52A0300DB2A03001F +:10BC3000E12A0300E72A0300F12A0300FE2A030099 +:10BC4000052B03000B2B0300112B0300182B030003 +:10BC50001E2B0300252B03002B2B0300332B03008B +:10BC60003B2B0300422B0300492B0300542B030002 +:10BC70005C2B0300652B0300742B03007A2B03005D +:10BC8000822B0300882B0300932B03009B2B0300C4 +:10BC9000A22B0300AA2B0300B22B0300B82B030036 +:10BCA000BE2B0300C42B0300CB2B0300D22B0300BD +:10BCB000DA2B0300E12B0300EC2B0300F22B030033 +:10BCC000FA2B0300012C03000B2C0300182C03009B +:10BCD000212C03002A2C0300332C03003B2C0300EF +:10BCE000422C03004A2C0300522C03005B2C03005F +:10BCF000632C03006C2C0300752C03007C2C0300C8 +:10BD0000832C03008B2C0300942C03009D2C030038 +:10BD1000A62C0300AC2C0300B62C0300BD2C0300A2 +:10BD2000C52C0300CE2C0300D62C0300DF2C03000F +:10BD3000EC2C0300F72C0300012D03000D2D030054 +:10BD40001A2D0300222D03002A2D0300342D030099 +:10BD50003E2D0300482D0300522D03005C2D0300EF +:10BD6000672D03006F2D03007E2D0300882D030037 +:10BD7000942D03009F2D0300AB2D0300B62D03006F +:10BD8000BF2D0300C72D0300D12D0300DE2D0300BE +:10BD9000F22D0300012E0300172E0300242E0300B2 +:10BDA0002F2E03003C2E0300422E0300592E0300C9 +:10BDB000772E03007F2E03008B2E0300922E0300AC +:10BDC000962E03009B2E0300A22E0300A82E030034 +:10BDD000AE2E0300B42E0300BA2E0300C02E0300C3 +:10BDE000C72E0300CE2E0300D52E0300DD2E030048 +:10BDF000E42E0300EF2E0300F62E0300FD2E0300B9 +:10BE0000052F0300102F0300182F0300202F03001D +:10BE1000282F03002F2F0300372F03003F2F03008D +:10BE2000492F0300532F03005E2F03006A2F0300E6 +:10BE3000762F0300822F0300902F0300B32F0300FF +:10BE4000BE2F0300C92F0300D62F0300E32F0300EA +:10BE5000EF2F0300FB2F0300063003001030030018 +:10BE60001730030023300300293003003030030073 +:10BE700039300300443003004C30030055300300D8 +:10BE80005E30030068300300773003007E3003002B +:10BE90008F300300A1300300AA300300B430030048 +:10BEA000BB300300C7300300D0300300DE30030096 +:10BEB000E9300300EE300300F830030002310300E4 +:10BEC0000B31030017310300223103002E31030030 +:10BED000353103003D3103004B310300563103007F +:10BEE0005E31030066310300753103007D310300CC +:10BEF0008B310300923103009C310300AA3103000F +:10BF0000B1310300BC310300D1310300EC31030037 +:10BF1000FF3103000E3203001E3203002C320300F7 +:10BF20003B3203004F3203007032030091320300B2 +:10BF30009E320300AB320300B2320300B932030079 +:10BF4000C0320300C7320300CE320300D5320300F3 +:10BF5000DC320300E3320300EA320300F132030073 +:10BF6000F9320300013303000933030011330300E6 +:10BF70001933030021330300293303003133030055 +:10BF800039330300493303005133030059330300AD +:10BF9000613303006A330300733303007F3303000C +:10BFA0008B33030098330300A6330300B13303003F +:10BFB000BE330300CA330300D2330300E03303006F +:10BFC000E8330300EE330300F633030001340300CB +:10BFD00009340300123403001E3403002634030026 +:10BFE00031340300373403003D340300423403008E +:10BFF0004C340300553403005E34030067340300FF +:10C000007034030079340300823403008B3403005E +:10C01000943403009D340300A7340300B1340300BB +:10C02000BB340300C6340300D0340300DB34030008 +:10C03000E5340300F0340300FA340300053503004F +:10C0400010350300203503002D350300373503007C +:10C0500047350300503503005F35030068350300A2 +:10C060006E3503007F3503008E3503009E350300D7 +:10C07000AA350300B1350300BA350300C335030008 +:10C08000CC350300DA350300E1350300E935030060 +:10C09000F4350300003603000E36030016360300A5 +:10C0A0001E36030028360300303603003B360300FB +:10C0B00043360300503603005D3603006F3603003D +:10C0C00080360300933603009D360300A436030038 +:10C0D000AD360300B5360300BE360300C536030097 +:10C0E000CC360300D3360300DA360300E83603000B +:10C0F000FA360300FF360300053703000D3703004F +:10C100001637030027370300323703003D3703009B +:10C110004A37030058370300663703007E370300B1 +:10C120008E370300963703009E370300A6370300BF +:10C13000B3370300C5370300D2370300E0370300ED +:10C14000EF370300F4370300FB3703000238030026 +:10C150000A38030014380300203803002B3803008A +:10C1600030380300353803003A3803004238030002 +:10C17000543803005E380300683803007838030041 +:10C180008438030098380300AD380300BB3803003F +:10C19000C1380300C8380300CC380300D23803008C +:10C1A000DB380300E3380300EF380300FA380300FC +:10C1B00002390300083903000F3903001B3903005B +:10C1C000273903002D390300353903003D390300B9 +:10C1D00047390300523903005A390300623903001A +:10C1E0006E3903007C390300863903008D39030062 +:10C1F00099390300A3390300AA390300B0390300B9 +:10C20000BD390300C8390300D2390300DE39030009 +:10C21000E7390300F2390300FE390300083A03004E +:10C220000C3A0300113A0300183A03001F3A0300C6 +:10C23000243A0300293A0300303A0300373A030056 +:10C240003D3A0300433A0300493A03004F3A0300E2 +:10C25000563A03005B3A0300603A0300673A030072 +:10C260006E3A0300733A03007A3A0300803A0300FF +:10C27000863A03008A3A03008F3A0300953A030096 +:10C280009D3A0300A53A0300AC3A0300B33A030019 +:10C29000BA3A0300BF3A0300C63A0300CD3A03009E +:10C2A000D23A0300D93A0300E03A0300E73A030028 +:10C2B000EC3A0300F33A0300FA3A0300013B0300AF +:10C2C000083B03000E3B0300143B03001A3B030032 +:10C2D000203B0300263B03002A3B03002F3B0300C7 +:10C2E000373B03003E3B0300453B03004A3B030052 +:10C2F0004F3B0300563B03005B3B0300623B0300E4 +:10C30000693B03006F3B0300753B03007B3B03006D +:10C31000813B0300873B03008D3B0300933B0300FD +:10C320009A3B03009F3B0300A63B0300AB3B03008B +:10C33000B23B0300B83B0300BE3B0300C43B030019 +:10C34000CA3B0300D03B0300D63B0300DC3B0300A9 +:10C35000E33B0300E73B0300EC3B0300F23B03003D +:10C36000FA3B0300013C0300083C03000F3C0300C0 +:10C37000143C03001A3C0300203C0300263C03004D +:10C380002C3C0300323C0300363C03003B3C0300E2 +:10C39000423C0300493C0300503C0300553C030071 +:10C3A0005C3C0300633C0300683C03006F3C0300FB +:10C3B000753C03007B3C0300813C0300873C030089 +:10C3C0008B3C0300923C0300983C03009E3C03001E +:10C3D000A43C0300B33C0300BA3C0300C13C03008F +:10C3E000CC3C0300D33C0300DC3C0300E33C0300F3 +:10C3F000E83C0300ED3C0300F73C0300023D030072 +:10C400000D3D0300133D03001A3D0300283D0300CA +:10C410002E3D0300353D03003C3D0300433D03003A +:10C420004A3D03005B3D0300663D0300713D030090 +:10C430007A3D0300883D03008F3D03009B3D0300D0 +:10C44000A53D0300AE3D0300B83D0300C03D030021 +:10C45000CD3D0300DA3D0300E33D0300EE3D030064 +:10C46000F33D0300FB3D0300053E0300103E0300C7 +:10C470001A3E0300243E03002D3E0300383E030015 +:10C48000423E03004C3E0300533E0300603E030067 +:10C49000693E03006F3E03007B3E0300823E0300C3 +:10C4A0008B3E0300933E03009B3E0300A33E03002C +:10C4B000AF3E0300B73E0300C03E0300CD3E030085 +:10C4C000DD3E0300E73E0300F03E0300F83E0300BC +:10C4D000023F03000A3F0300163F0300203F030012 +:10C4E000283F0300373F0300443F030084D8020085 +:10C4F00002000200D105000080CA02000000000016 +:10C50000080000004D3103003CFF02000200000063 +:10C51000560100001CC502009CC50200BCDC0200E4 +:10C5200003000000030000000F00000001000000F5 +:10C530006E000000B6050000B60900007CC50200D0 +:10C54000BE09000068C50200CE09000008C502004F +:10C5500096090000F8C40200760900008E09000068 +:10C56000D6090000ECC40200BCDC0200030000009D +:10C5700007000000090000000100000080CA02005E +:10C580000000000005000000513F030064CE0200DF +:10C590003F0000000700000030C502003801000025 +:10C5A0003601000028D90200B60000008CC5020048 +:10C5B00064CE020017000000020000008CC60200DA +:10C5C00084D8020004000200A907000084D80200F9 +:10C5D000040002003D0700006CEB0200F4000000C4 +:10C5E000000000000000000000000000000000004B +:10C5F000000000000000000000000000D533020031 +:10C600003B2D0200000000000000000000000000C0 +:10C61000000000006CEB02007E0000002D0800000E +:10C620005D2D020000000000150700001109000048 +:10C63000000000000D0B00001508000000000000C5 +:10C64000192D02000000000000000000B0C502002B +:10C650006CEB0200820000002D080000B10B00000E +:10C660000000000015070000110900000000000094 +:10C670000D0B00001508000000000000192D02003D +:10C680000000000000000000B0C502005E060000CF +:10C69000C0C5020086060000CCC502006CEB02009B +:10C6A0009E0000003D0E0000CF2E020000000000A2 +:10C6B000150C0000510F0000000000002D100000BC +:10C6C000F90E000000000000000000000000000063 +:10C6D000000000006CC70200DA0000000302000046 +:10C6E00074E00200DB000000010200000000000016 +:10C6F0005E06000088C702000E06000048C7020060 +:10C7000016060000A0C702007E060000B8C702009F +:10C71000860600007CC702008E060000C4C7020027 +:10C720009E06000094C702002E02000054C70200BB +:10C730009606000060C70200DE060000D0C70200B7 +:10C74000A6060000ACC7020084D802000200010067 +:10C75000150D000084D80200020002009D0D0000AB +:10C7600084D80200040002001D0E000064CE020006 +:10C770005F0000000B000000F0C6020084D8020039 +:10C7800004000200850E000084D8020004000200AC +:10C79000750C000084D8020006000300C10C0000E4 +:10C7A00084D8020002000100212F020084D8020078 +:10C7B0000300FFFF3D0D000084D8020004000200CA +:10C7C000A92E020084D8020004000400752E020085 +:10C7D00084D80200020001003D0C00001E2303006B +:10C7E000C6200300482003002C230300EE1F030093 +:10C7F000AC210300B62103000C220300CE1F03006E +:10C80000881F0300462203009621030060220300D4 +:10C81000B4220300E0200300FA220300741F030087 +:10C82000D8230300482103007E220300821F030057 +:10C8300058220300982203002C200300B02103009B +:10C8400072230300E0220300D41F03004C200300E6 +:10C85000B423030088230300C81F03001C21030026 +:10C8600020240300F6220300CA2003003E23030015 +:10C870000E210300A422030010220300AC200300B9 +:10C880000822030052200300B01F0300AA22030065 +:10C890004220030080210300F82103006C230300E1 +:10C8A0008E2003007C1F0300D4220300D02003004D +:10C8B000C02103006C220300B22003008620030085 +:10C8C00076210300062303003A220300D22303004B +:10C8D000CC23030018200300122003005E20030075 +:10C8E00006200300B41F0300E82003004A230300CE +:10C8F000AE2203000C2303009E1F0300A8210300A7 +:10C90000322003000C240300F62003006A200300F9 +:10C91000DA20030080230300CC210300BA200300A7 +:10C920005A21030018240300EA2303002A220300EB +:10C93000E01F030038230300DA1F03003223030043 +:10C94000662103006823030092220300BA23030038 +:10C95000D6210300F22103005223030074200300B8 +:10C9600000230300942003008422030044230300D7 +:10C97000EC210300F823030078220300A221030026 +:10C98000FE21030002220300F0220300C222030062 +:10C99000282103009E220300BC220300E0210300A3 +:10C9A000DA2203003C210300941F0300402203000D +:10C9B0004E2103007E2003008A220300AC1F0300E7 +:10C9C000262303009A23030072220300E61F0300BC +:10C9D0009A2003002E210300BA1F03000C2003003D +:10C9E0007021030036210300C0230300C623030087 +:10C9F000EE200300142103005E2103003C2003000D +:10CA00008E1F030084210300C8220300CE220300EE +:10CA1000F41F0300FA1F030000200300E6210300B7 +:10CA2000342203007A21030066220300542103000C +:10CA3000422103005C23030022210300C21F0300E4 +:10CA4000E42203008A21030078230300F223030079 +:10CA500006210300C0200300642003009C21030082 +:10CA6000DE230300E4230300C6210300A02003000B +:10CA70001E2003002620030062230300EA22030095 +:10CA80006CEB02003E000000F9170000C5BE00007C +:10CA900000000000C117000079CD00000000000078 +:10CAA000BD1900009D170000000000006F58020033 +:10CAB00000000000000000007CCB0200E606000041 +:10CAC000D0EE0200EE06000064ED02008E060000CB +:10CAD000C8ED0200F6060000E8EE0200AE06000017 +:10CAE000ECED0200FE0600000CEF0200060700005D +:10CAF00080ED02000E070000E0ED020016070000C6 +:10CB0000C4EE0200B60600003CEF0200BE060000C4 +:10CB100098ED0200C60600008CED0200CE06000073 +:10CB200018EF02001E070000BCED02007E060000A8 +:10CB3000A4ED02002607000030EF02002E070000DF +:10CB400024EF020036070000F4EE02003E0700006A +:10CB5000B0ED020046070000DCEE02004E070000C8 +:10CB6000F8ED02005607000000EF02005E0700002B +:10CB700084EF020066070000D4ED020064CE0200DC +:10CB8000C700000018000000BCCA02006CEB0200E5 +:10CB90008E00000000000000A5330200000000002D +:10CBA0000000000000000000000000000000000085 +:10CBB000D53302008D1A00000000000000000000C4 +:10CBC000000000000000000084D802000200010004 +:10CBD000D5330200BCDC020001000000BCDC020016 +:10CBE00084D8020004000200312100008D340200CC +:10CBF000C3340200992C00005D340200533402005B +:10CC0000493402009128000084D80200020001008B +:10CC1000A1440000B94500005D460000000000008E +:10CC20000000000064CE02004F0000000900000078 +:10CC3000DCCC020084D80200020001007D2D00003F +:10CC40006CEB0200B20200000000000000000000D7 +:10CC500000000000000000000000000000000000D4 +:10CC600000000000000000000000000000000000C4 +:10CC700014CC02000000000024CC020084D8020082 +:10CC800002000200B12D00006CEB0200B3020000B4 +:10CC90000000000000000000000000000000000094 +:10CCA0000000000000000000000000000000000084 +:10CCB000000000000000000024CD02000000000081 +:10CCC00024CC020084D8020008000400A12D00003A +:10CCD00084D8020002000100912D000066060000C9 +:10CCE000D0CC0200C609000008CC0200B60000004B +:10CCF000C8CB0200BE000000C4CC0200A615000094 +:10CD000034CC020076050000C0EF0200AE14000033 +:10CD100090EF0200A6140000B4EF0200DE05000050 +:10CD20009CEF0200B94500005D46000000000000D5 +:10CD3000010000003CCD0200010000006CEB02008D +:10CD40008100000091380000AD38000000000000B4 +:10CD5000A7360200D33602000000000000000000E9 +:10CD600000000000000000000000000000000000C3 +:10CD700000000000000000003CCD020000000000A8 +:10CD80006CEB0200EF00000000000000000000005B +:10CD9000E336020000000000000000000000000078 +:10CDA0000000000000000000000000000000000083 +:10CDB0000000000000000000000000006CEB02001A +:10CDC000F40000000000000000000000000000006F +:10CDD0000000000000000000000000000000000053 +:10CDE000D53302004F3702000000000000000000B1 +:10CDF000000000000000000084D8020004000300CE +:10CE0000F5370200F9490300044A03000E4A030003 +:10CE1000BCDC02000100000064CE020084D80200E5 +:10CE200002000100793802006CEB0200790000007A +:10CE30009D3D00002941000000000000313E00003F +:10CE4000F13E00000000000079410000053D0000B7 +:10CE500000000000000000000000000010CE0200F2 +:10CE600034CF02006CEB0200880000009D3D000002 +:10CE70002941000000000000313E0000F13E0000AA +:10CE80000000000079410000053D000000000000A6 +:10CE900000000000000000000000000034CF02008D +:10CEA00084D80200020001009140000084D80200F2 +:10CEB00002000100A93E00000E060000A0CF020003 +:10CEC000160600001CCE02001E0600008CCF0200D9 +:10CED0002606000000D002002E06000028CF020027 +:10CEE00036060000A0CE02002E020000E8CF0200AD +:10CEF0003E060000ACCE020046060000F8CD02005F +:10CF00004E060000F4CF02005606000094CF020047 +:10CF1000D600000094DD0200DE000000A0DD02006B +:10CF2000E6000000ACDD020084D80200020001002F +:10CF30007540000064CE0200770000000E00000083 +:10CF4000B8CE02006CEB0200F4000000000000000C +:10CF500000000000000000000000000000000000D1 +:10CF60000000000000000000D5330200BB370200C3 +:10CF700000000000000000000000000000000000B1 +:10CF800084D8020004000300E54000006CEC0200BD +:10CF900080CF020084D8020002000100C93C0000DA +:10CFA00084D8020002000100293D00006CEB020061 +:10CFB000F1000000393D000000000000000000000A +:10CFC00000000000493802000000000000000000DE +:10CFD000E53C000000000000000000000000000030 +:10CFE000000000000000000084D8020004000300DC +:10CFF0001138020084D802000300FFFF893F0000BF +:10D0000084D80200040003002D3802006CEB0200FB +:10D010008F0000003148000091480000000000002F +:10D02000E54700009F3A02000000000000000000F9 +:10D0300000000000000000000000000000000000F0 +:10D0400000000000000000000000000007000000D9 +:10D05000130000002B00000059000000B300000086 +:10D060005B01000087020000CD040000F908000009 +:10D0700093100000951E00000B380000A165000011 +:10D080002DB80000D34B01007B530200652B040038 +:10D09000CF73070027460D00A59B170021E3290049 +:10D0A000A72E4A0084D80200000001006D4D000048 +:10D0B00028D90200AD020000D0D00200AF0200006B +:10D0C000B0020000B102000036010000B60200000C +:10D0D00064CE02002F0000000500000010D1020005 +:10D0E00080CA02000000000017000000D24A0300BE +:10D0F0003CFF0200050000008CD102007CD1020040 +:10D1000054D1020044D10200E0D00200BCD00200A1 +:10D110006E0000006E1500009606000070D102003F +:10D12000AE15000038D10200BE1500009CD10200EF +:10D130007615000064D1020084D8020000000000CF +:10D140002D47000080CA0200000000001D00000002 +:10D15000EA4A030080CA0200000000000300000049 +:10D16000084B030084D80200000000007553000043 +:10D1700084D80200020001008545000080CA020038 +:10D1800000000000080000004D31030080CA0200CA +:10D1900000000000080000004D31030084D80200A8 +:10D1A0000200010075470000AEC59D74CA1B0E5AEF +:10D1B00020BCBE4C00401C460000C842000020417C +:10D1C0001FB14F0A9595E62477CC2B3217B7D1388B +:10D1D0000AD7233CCDCCCC3D6CEB0200F300000021 +:10D1E0000000000000000000A55900000000000041 +:10D1F000000000000000000000000000000000002F +:10D20000000000000000000000000000000000001E +:10D210000000000084D8020004000200755B0000DA +:10D220006CEB0200F3000000015A00000000000057 +:10D2300000000000000000000000000000000000EE +:10D2400000000000D5330200915B000000000000E8 +:10D25000000000000000000068D2020084D8020034 +:10D2600002000100A15B000064CE02001F0000006C +:10D270000300000084D2020084D8020004000400ED +:10D28000415B0000660600005CD202006E060000F2 +:10D2900014D202007606000078D202006CEB020085 +:10D2A000F40000000000000000000000000000008A +:10D2B000000000000000000000000000000000006E +:10D2C000D53302006D5F0000000000000000000088 +:10D2D00000000000000000006CEB0200A000000055 +:10D2E00000000000E15F00000000000000000000FE +:10D2F000000000000000000000000000D533020024 +:10D30000E93E0200000000000000000000000000F4 +:10D310000000000084D80200040004003560000012 +:10D3200064CE0200170000000200000080D302005B +:10D330006CEB020099000000753F02008560000060 +:10D3400000000000D54D0000154F00000000000057 +:10D3500000000000000000000000000000000000CD +:10D36000000000000000000020D3020084D802006A +:10D37000040003002D3F02006CEC02006CD302009D +:10D380008604000078D30200BE05000014D302001A +:10D3900084D8020002000500AD6300006CEB0200BF +:10D3A000010000000000000000000000000000007C +:10D3B000000000000000000000000000000000006D +:10D3C000000000000000000000000000000000005D +:10D3D000000000000000000020080300735203005A +:10D3E00048080300A452030008080300095303007F +:10D3F00064090300875303002C080300CC53030087 +:10D4000018040300005403006C0303005754030086 +:10D41000600303008F5403002C040300C75403006F +:10D42000240000205555030030000020A1550300C2 +:10D430002C030300ED550300F80203002F560300F0 +:10D4400038030300AA560300240F03000E570300FD +:10D45000480F030046570300F40F0300E957030089 +:10D460000C0F0300755803003C0F03000A5903001A +:10D47000300F03006D590300CC0F0300195A03004D +:10D48000E80F0300C55A0300180F0300715B030087 +:10D4900050000020A65B0300E0150300C45B0300FE +:10D4A000EC140300715C0300581503000A5D0300CF +:10D4B00010150300355D030004150300C65D03006D +:10D4C000281603004F5E0300F8140300715E03008A +:10D4D000D0140300955E030008050300E35E03001B +:10D4E000AC060300125F0300A0040300415F0300C9 +:10D4F00070050300705F0300200603009F5F0300B8 +:10D50000A4060300CE5F03000C070300FD5F0300C9 +:10D51000680503002C600300180603005B6003002D +:10D520009C0603008A60030080050300B9600300C5 +:10D5300038060300E9600300BC060300196103001C +:10D54000A804030049610300780503007961030022 +:10D5500030060300A96103007C060300D9610300C3 +:10D560002806030009620300B406030039620300C1 +:10D570002005030069620300D0050300C7620300B1 +:10D58000880503001163030090060300676303002E +:10D590005C050300DB630300C80D0300396403006E +:10D5A000BC0D0300D7640300040E030022650300D2 +:10D5B000140A030078650300380D03006C6603004D +:10D5C0008C0D0300966603002C0D0300C16603005A +:10D5D000E809030050670300F4090300DB67030058 +:10D5E000200D03002C680300500A03007F6803002D +:10D5F000CC0C0300C5680300440D03000F69030051 +:10D60000D80C030042690300080A0300F76903000D +:10D6100020000020826A030004020300C76A03009E +:10D62000E80103005C6B0300C0EF0200C46B030061 +:10D63000A8EF0200156C0300B4EF0200466C030073 +:10D6400090EF0200896C03009CEF0200096D03005B +:10D650003C000020556D030094100300B66D0300DC +:10D66000B0100300696E0300F8100300B16E0300F0 +:10D6700004110300D96E030070140300A66F0300A9 +:10D6800088140300F56F03007C140300647003002A +:10D690001C1403000471030094140300957103002B +:10D6A00028140300EE710300341403001872030001 +:10D6B00068040300587203004010030073720300F3 +:10D6C00034100300F77203003011030043730300AA +:10D6D000701103007C73030084D802000000010075 +:10D6E000C566000028D9020087000000F0D60200BD +:10D6F00064CE02001F0000000300000000D70200FB +:10D700006E0000003E04000026050000E0CB020091 +:10D71000CE03000028CE02007D410200C14002007D +:10D72000DB400200F5400200534102007940020054 +:10D7300091400200A94002000F410200194102007D +:10D74000234102003B410200A2000000A7000000AC +:10D75000A70000007F00000080000000E200000041 +:10D760003C0000003C000000000000000000000041 +:10D77000E10000003C0000003B0000000000000051 +:10D7800000000000C80000000000000000000000D1 +:10D790003600000037000000C70000000000000055 +:10D7A00000000000360000003600000084D80200AF +:10D7B00002000300E948020084D8020002000300CE +:10D7C000F34802006CEB0200B00000000000000013 +:10D7D0001D490200000000000000000000000000E1 +:10D7E0000000000000000000D5330200FD480200E8 +:10D7F0000000000000000000000000000000000029 +:10D800006CEB0200F20000000000000000000000CD +:10D81000B97F0000000000000000000000000000D0 +:10D8200000000000000000000000000000000000F8 +:10D8300000000000000000000000000028D90200E5 +:10D840000B000000BC2E00206CEB0200F200000078 +:10D850000000000000000000C94A02002534020058 +:10D8600000000000000000000000000000000000B8 +:10D8700000000000000000000000000000000000A8 +:10D88000000000006CEB0200F2000000000000004D +:10D8900000000000474A020025340200000000009A +:10D8A0000000000000000000000000000000000078 +:10D8B0000000000000000000000000000000000068 +:10D8C0006CEB0200F200000000000000000000000D +:10D8D000498D000025340200000000000000000017 +:10D8E0000000000000000000000000000000000038 +:10D8F00000000000000000000000000028D9020025 +:10D900007E00000008D9020064CE0200170000006B +:10D910000200000018D902006E000000F6030000AB +:10D92000F603000014C602006CEB0200F5000000D4 +:10D93000B58F0000000000000000000000000000A3 +:10D9400000000000C98F000000000000000000007F +:10D9500000000000000000000000000000000000C7 +:10D9600000000000B70000001600000070D902009F +:10D970005E0000003CD802009E02000078F3020026 +:10D9800056010000C0FE0200F6030000FCD80200B1 +:10D990003E040000E4D60200E609000014F3020091 +:10D9A0002608000094DE0200B6050000A4C50200AF +:10D9B000160A0000A4DA0200660A0000200803002C +:10D9C000F60F000070140300960A000040100300D8 +:10D9D000A60A000068040300AE0A0000301103002C +:10D9E000FE140000C81103000E150000E80E03002D +:10D9F0006E150000B0D0020016160000F8120300E9 +:10DA00004615000030070300CE15000088E1020033 +:10DA10005E0A0000E4D60200DE09000014F30200F2 +:10DA200064CE02003F0000000700000060DA020040 +:10DA300084D8020000000000FD92000084D802009B +:10DA400000000000D74B020084D802000000000054 +:10DA50001593000084D80200000000002D93000000 +:10DA60006E000000160A00001E0A0000B0DA020074 +:10DA7000260A000030DA02002E0A000048DA02000E +:10DA8000360A000054DA02003E0A000098DA02006A +:10DA9000460A00003CDA020084D8020000000000C0 +:10DAA000C34B020028D902004201000020DA020024 +:10DAB00084D80200000000004D93000084D80200CA +:10DAC0000200FFFF8193000084D8020002000100E1 +:10DAD0000D4C020084D802000200FFFFBF4C020080 +:10DAE00064CE0200970000001200000068DB020014 +:10DAF00084D8020004000200D594000084D80200FB +:10DB000002000100B995000084D802000400020060 +:10DB10008195000084D802000200FFFFD19500002B +:10DB200084D8020004000200519500006CEB020052 +:10DB300003010000F9930000134D020000000000F3 +:10DB4000399600000D980000000000000000000061 +:10DB5000A59300000000000000000000000000008D +:10DB600000000000E0DA0200B601000008DB02005D +:10DB70000E060000FCDA020016060000C8DA0200F9 +:10DB8000BE070000F8DB0200C6070000D4DA02007E +:10DB9000CE07000014DB0200D60700001CDC0200E8 +:10DBA000DE07000004DC0200E6070000F0DA0200F5 +:10DBB000EE07000040DC0200F60700004CDC02002B +:10DBC0002E02000058DC02009606000010DC020065 +:10DBD0000608000034DC02000E08000020DB020012 +:10DBE0001608000028DC02004E060000BCDA020025 +:10DBF000AE000000B8DD020084D80200040002007C +:10DC00009D95000084D8020004000200F34C02003D +:10DC100084D8020004000200E195000084D80200CC +:10DC200004000200FD4C020084D80200040002003F +:10DC3000214C020084D80200040002003D4C020086 +:10DC400084D8020004000200754D020084D802004E +:10DC500004000200654D020084D8020002000100A9 +:10DC6000119600006CEB0200FF000000F993000029 +:10DC7000134D020000000000399600000D980000CE +:10DC80000000000000000000A5930000000000005C +:10DC9000000000000000000000000000E0DA0200C8 +:10DCA00084D8020004000400554F020064CE020034 +:10DCB000170000000200000000DD02006CEB020013 +:10DCC000B8000000ED9B0000759E00000000000001 +:10DCD000459C0000099D000000000000019E00001E +:10DCE000A19C0000000000000000000000000000F7 +:10DCF00000000000ACDC0200BCDC02000000000000 +:10DD00007E06000010DD02008E060000A0DC02008E +:10DD100084D8020004000200694F02006CEB02008C +:10DD2000AD000000459F0000DD4F02000000000034 +:10DD3000F59E00000000000037500200799F0000AF +:10DD4000259F00000000000000000000000000000F +:10DD500000000000000000006CEB0200F400000076 +:10DD600000000000000000000000000000000000B3 +:10DD7000000000000000000000000000D533020099 +:10DD80008B4F0200000000000000000000000000B7 +:10DD90000000000084D80200040002005F5002006E +:10DDA00084D80200060003007550020084D80200E7 +:10DDB000040002008D50020084D80200040002001A +:10DDC000A350020084D8020002000100A9A00000B4 +:10DDD00084D802000200010029A2000084D80200B9 +:10DDE00002000100F59F000084D802000400020038 +:10DDF000E1A1000084D802000200010031A000006F +:10DE000084D80200020001007DA3000084D8020033 +:10DE10000400020051A3000084D8020002000100A7 +:10DE20001552020084D80200020001000DA2000079 +:10DE300064CE0200E70000001C00000000DF0200CA +:10DE400084D802000200010061A2000084D8020010 +:10DE5000020001007DA2000084D80200020001003F +:10DE6000C9A0000084D8020002000100055202008F +:10DE700084D802000400020089A1000084D80200B6 +:10DE80000200010045A2000084D802000200010047 +:10DE90002952020028D902000401000030DE0200ED +:10DEA00084D8020002000100E9A0000084D802002A +:10DEB00002000200CDA2000084D80200020001008E +:10DEC00035A3000084D802000200010089A00000F0 +:10DED00084D802000200010051A1000084D8020091 +:10DEE000020001006DA0000084D8020004000200BE +:10DEF000B5A1000084D802000400020021A10000A6 +:10DF00006E000000260800002E08000056F8ADC084 +:10DF100036080000DA0FC9C03E08000000DE02002B +:10DF20005E0500000CDE020046080000B8DE0200BC +:10DF30004E080000ACDE020056080000E0DF0200E0 +:10DF40005E0800004CDE02006608000040DE0200B1 +:10DF50006E0800007CDE020076080000D0DD0200C2 +:10DF60007E08000024DE020086080000E8DD0200D2 +:10DF70008E08000088DE020096080000E8DE02003D +:10DF80009E080000DCDE0200AE08000018DE020081 +:10DF9000A608000070DE0200DE080000D0DE0200ED +:10DFA000E6080000F4DE0200D6080000A0DE020051 +:10DFB000B608000058DE0200BE080000C4DD020002 +:10DFC000C6080000C4DE0200CE08000064DE0200C5 +:10DFD000F6080000F4DD0200EE080000DCDD0200BF +:10DFE00084D802000200010099A200006329030006 +:10DFF0005C2903006B290300368603003A86030080 +:10E000003D86030044860300B28803004A8603006D +:10E0100056B0030053860300578603005C86030056 +:10E02000618603006886030070860300D930030010 +:10E030003CA30300598603009B4D0300FC31030001 +:10E040008F31030074860300FDA203007B8603006A +:10E05000718603004F38030029A503007F86030063 +:10E06000868603008A860300F22C03009086030054 +:10E070009686030078E002006CEB02007800000056 +:10E080004DAA0000000000000000000031AA0000BE +:10E090000000000000000000000000000000000080 +:10E0A0000000000000000000000000000000000070 +:10E0B0000000000084D802000300FFFFC7530200E5 +:10E0C000010200000202000040000000BF02000048 +:10E0D0000202000048000000BE0200000202000030 +:10E0E00080000000BD02000002020000800000006D +:10E0F000C002000001020000000000006CEB020002 +:10E10000F40000000000000000000000000000001B +:10E1100000000000000000000000000000000000FF +:10E12000D533020005AC0000000000000000000034 +:10E1300000000000000000006E000000CE1500008E +:10E14000D615000094E10200E6150000B4E00200DC +:10E15000DE15000060E102000E1600007CE1020006 +:10E1600084D802000300FFFFB153020064CE020016 +:10E170002F0000000500000038E1020084D80200F2 +:10E18000020001005DAA000028D90200B9020000C7 +:10E190006CE1020084D802000300FFFF93530200E9 +:10E1A000BCDC020008000000B400030014010300FE +:10E1B000740003003C00030034010300CC000300A2 +:10E1C000DC000300C4FF0200BCDC02000C00000005 +:10E1D000F40003007C010300F4FF02002C010300A3 +:10E1E000EC00030074010300E4FF02007C00030064 +:10E1F000D40003006C010300940003008C000300B2 +:10E200006CEB0200F600000069AF000000000000A7 +:10E2100000000000000000000000000000000000FE +:10E2200000000000000000000000000000000000EE +:10E230000000000000000000000000006CEB020085 +:10E24000F4000000000000000000000000000000DA +:10E2500000000000000000000000000000000000BE +:10E26000D53302000F54020000000000000000003F +:10E27000000000000000000000000100000002009B +:10E2800000000400BCDC020012000000CE110000FF +:10E290009611000066120000361200009E13000066 +:10E2A000361200009E1300005E130000BE13000033 +:10E2B0009611000096110000BE13000036120000F7 +:10E2C0007E130000361200007E130000561300007B +:10E2D00066120000BCDC020019000000FE11000004 +:10E2E00036120000CE1200004E120000561300003D +:10E2F000461300004612000036120000CE12000045 +:10E300004E120000BE130000B613000046120000BB +:10E31000361200002E1200001611000056130000E5 +:10E320002E0800005E12000006110000FE10000022 +:10E330003E11000056130000BE130000B61300008B +:10E34000BCDC02001E000000F61200002E080000D7 +:10E3500056130000BE130000BE1300005613000049 +:10E360002E0800005E1200009611000096110000B9 +:10E370005E1200002E0800003E130000BE120000D6 +:10E38000E61200002E1300002E08000056130000B5 +:10E39000BE130000BE130000561300002E0800003C +:10E3A0005E12000096110000961100005E1200003F +:10E3B0002E080000DE1200003E120000561200007F +:10E3C000BCDC02001200000006120000A6130000D0 +:10E3D00096130000B61300004E1200001E14000039 +:10E3E00016130000B61300004E120000A613000022 +:10E3F0002E1100002E1200002611000096130000BE +:10E40000AE1300002613000096130000261400002F +:10E41000BCDC02004F000000A61200005E110000EC +:10E420002E1400000E0200000E020000F610000084 +:10E430000E020000FE1300002E1400005E12000009 +:10E440005E1200002E1400005E1100000E1200008B +:10E450002E14000096110000961100002E140000EA +:10E460005E12000036130000361200001611000084 +:10E470002E140000EE100000EE100000C613000085 +:10E48000EE100000661300002E1400002E0800009D +:10E490002E0800002E140000961100005E110000EE +:10E4A0002E1400000E0200000E0200002E140000C8 +:10E4B0000E120000D6120000B61200005E1100001D +:10E4C0002E1400000E0200000E020000F6100000E4 +:10E4D0000E020000761100002E140000BE13000092 +:10E4E000BE1300002E1400005E1200009E110000FA +:10E4F0002E140000EE100000EE1000002E1400009C +:10E50000EE100000461100000E1400007E13000003 +:10E510002E110000EE100000C6130000EE100000E7 +:10E520001E1300002E110000EE100000C6130000A4 +:10E53000EE1000005E1200002E1400009E1100007C +:10E540005E1200002E1400009E110000BE1200009A +:10E550004E140000BCDC0200020000007E1100002E +:10E560000E130000BCDC02000A000000361400009C +:10E57000BE130000BE130000BE1300004E130000C7 +:10E5800046140000561300005613000056130000F6 +:10E59000E6120000BCDC02006A0000006E130000FE +:10E5A000C6130000BE1100007612000066110000C4 +:10E5B000A61200009E1100006E1100000E02000065 +:10E5C000A61100005E120000B61200009E110000AD +:10E5D00066110000AE110000661200005E1300001C +:10E5E000C6130000661200005E1300009E110000BA +:10E5F0005E1200005E110000A61100005E11000016 +:10E600006E1200005E130000CE13000066120000C0 +:10E610005E1300009E110000661200005E110000F3 +:10E620009E120000661200005E1200009E110000A3 +:10E630005E110000A6110000BE120000661100006D +:10E64000A6110000661200005E1300009E1100007B +:10E650005E1200009E1100005E110000B611000065 +:10E660005E110000A61100005E110000761300008C +:10E67000C61300008E11000076130000C6130000C0 +:10E680000E020000A6110000661200005E110000DC +:10E6900006130000661200002E0800005E13000042 +:10E6A0006E1100000E02000076130000C613000079 +:10E6B0000E0200005E130000061300006612000048 +:10E6C0009E1100005E1100005E1300006612000043 +:10E6D0002E0800005E1300008E110000761300006B +:10E6E000C61300008E11000076130000C613000050 +:10E6F0000E0200000E020000A611000066120000CB +:10E700005E1100005E130000C61300005E130000DF +:10E710008E11000086110000F61000000E020000AD +:10E720005E130000C61300000E0200000613000076 +:10E73000661200002E0800005E1300006E1100003B +:10E74000A6110000BCDC0200060000000614000058 +:10E750006612000096110000F613000086110000FA +:10E7600026120000BCDC020030000000CE110000C8 +:10E770002E080000BE130000EE100000F61000008E +:10E78000EE100000BE1300002E080000CE110000A5 +:10E790002E080000BE130000EE100000F61000006E +:10E7A000EE100000BE1300002E08000056130000FB +:10E7B000EE100000D61100005E120000661200008C +:10E7C0005E120000961100000E110000CE11000034 +:10E7D0002E080000BE130000EE100000F61000002E +:10E7E000EE100000BE1300002E080000BE13000053 +:10E7F0000E02000086120000561300008E13000067 +:10E80000EE100000D611000066120000CE110000CC +:10E810002E080000BE1300002E080000BE130000EA +:10E82000561300002E0800005E120000BCDC02003F +:10E830000500000006140000561300002E0800001A +:10E840005E12000096110000BCDC02000B0000000C +:10E85000E611000046120000361200004E120000C1 +:10E860007E120000B6120000C61200003612000030 +:10E87000461200004E110000E6110000BCDC020050 +:10E88000280000001E1100000E0200000E12000001 +:10E890005E110000361100002E1400002E11000041 +:10E8A0000E0200000E1200005E1100003611000082 +:10E8B0002E1400003611000006130000661200003E +:10E8C0002E080000561300002E08000066120000FB +:10E8D0002E080000661100000E1200005E120000FB +:10E8E000961100006E1100002E1400008611000029 +:10E8F0000E1200005E120000961100006E11000062 +:10E900002E1400008E110000061300006612000095 +:10E910002E080000561300002E08000066120000AA +:10E920002E080000BCDC020006000000EE13000010 +:10E930000E1200002E08000016140000161300002E +:10E940001E140000BCDC0200120000009612000041 +:10E95000661200002E0800001E120000FE120000C9 +:10E960001E120000FE1200002612000036120000E7 +:10E970005E120000661200002E08000096110000D2 +:10E980005E1200001E13000066110000AE120000AF +:10E990004E120000BCDC020008000000DE11000086 +:10E9A0002E140000BE120000661200002E1400009B +:10E9B000961100002E14000086130000BCDC02003B +:10E9C00009000000FE110000DE1300005E130000CD +:10E9D000BE130000D6130000BE1300002E1400006A +:10E9E0000E020000EE110000BCDC0200400000003E +:10E9F000F61100002E080000BE1300000E120000E9 +:10EA00002E080000E61300000E1200002E08000081 +:10EA1000EE1100002E080000BE1300000E120000D0 +:10EA20002E080000E61300000E1200002E08000061 +:10EA3000EE1100005E120000BE1300009E120000E6 +:10EA400056130000E61300009E120000561300004B +:10EA5000EE1100005E120000BE1300009E120000C6 +:10EA600056130000E61300009E120000561300002B +:10EA7000561100008E120000BE1300009E1200000E +:10EA800056130000E61300009E120000561300000B +:10EA9000561100008E120000BE1300009E120000EE +:10EAA00056130000E61300009E12000056130000EB +:10EAB000EE1100002E080000BE1300000E12000030 +:10EAC0002E080000E61300000E1200002E080000C1 +:10EAD000EE1100002E080000BE1300000E12000010 +:10EAE0002E080000E61300000E1200002E080000A1 +:10EAF000BCDC02000D000000F61100005E120000F8 +:10EB00001E130000BE130000B61200002E08000005 +:10EB10009E130000EE1000001613000056130000B4 +:10EB2000161400000E0200002E120000BCDC0200D1 +:10EB300005000000161200005E1200002E08000002 +:10EB400056130000BE130000BCDC020007000000EA +:10EB5000EE1200003E1400007E1200003E14000081 +:10EB6000CE1200003E140000C61100006CEB020043 +:10EB7000B90000001DB500008DBA0000D5B8000036 +:10EB80002534020000000000FF55020000000000D4 +:10EB90000000000000000000000000000000000075 +:10EBA0000000000000000000000000000000000065 +:10EBB0000000000000000000000000001D00000038 +:10EBC0001E00000000000000000000000000000027 +:10EBD0000000000000000000000000000000000035 +:10EBE0000000000000000000000000000000000025 +:10EBF0000000000000000000000000000000000015 +:10EC000000000000000000000000000024000000E0 +:10EC1000250000002600000027000000280000005A +:10EC200000000000150000000000000001000000CE +:10EC30006CEB0200B5000000EDB60000F7560200D4 +:10EC4000000000000000000000000000C9B4000047 +:10EC500000000000000000000000000000000000B4 +:10EC60000000000000000000000000006CEB02004B +:10EC70008600000000000000DB55020000000000DC +:10EC80000000000000000000000000000000000084 +:10EC90000000000000000000000000000000000074 +:10ECA00000000000000000006CEB0200B300000058 +:10ECB00000000000DB550200000000000000000022 +:10ECC0000000000000000000000000000000000044 +:10ECD0000000000000000000000000000000000034 +:10ECE0000000000084D8020004000200DDBB000028 +:10ECF00014000000180000000F00000000000000D9 +:10ED000000000000000000000100000084D80200A4 +:10ED100004000200135702006CEB0200F000000038 +:10ED200000000000000000003D570200000000004D +:10ED300000000000000000000000000000000000D3 +:10ED400000000000000000000000000000000000C3 +:10ED50000000000048EF020000000000000000007A +:10ED60000000000084D8020004000400A55802003E +:10ED700064CE0200C70000001800000004EE02008C +:10ED800084D802000200030001D4000084D80200ED +:10ED900002000200ED58020084D8020002000200C6 +:10EDA000DD58020084D8020004000400E1C2000023 +:10EDB00084D80200020001006DC4000084D8020063 +:10EDC00006000400FD58020084D80200040004007C +:10EDD000B358020084D802000200010035C50000CB +:10EDE00084D802000400030035C1000084D802006A +:10EDF0000400020039C0000084D8020002000100B3 +:10EE000005C50000E6060000D0EE0200EE06000098 +:10EE100064ED02008E060000C8ED0200F606000058 +:10EE2000E8EE0200AE060000ECED0200FE06000077 +:10EE30000CEF02000607000080ED02000E07000044 +:10EE4000E0ED020016070000C4EE0200B606000066 +:10EE50003CEF0200BE06000098ED0200C60600006E +:10EE60008CED0200CE06000018EF02001E07000025 +:10EE7000BCED02007E060000A4ED020026070000A3 +:10EE800030EF02002E07000024EF020036070000DA +:10EE9000F4EE02003E070000B0ED0200460700005D +:10EEA000DCEE02004E070000F8ED020056070000FD +:10EEB00000EF02005E07000084EF0200660700001A +:10EEC000D4ED020084D802000400030099C10000C0 +:10EED00084D80200040004009958020084D802007B +:10EEE00002000100F5C4000084D802000400040000 +:10EEF000BF58020084D80200020001005DC4000077 +:10EF000084D802000200010015C5000084D8020068 +:10EF100002000300BDD2000084D802000300FFFFFE +:10EF200081D2000084D8020004000200555A020079 +:10EF300084D80200040002004B5A020084D8020068 +:10EF400002000200CD5802006CEB020083000000BA +:10EF5000B9C60000B9C500000000000000000000B4 +:10EF600079CD00000000000045C50000C1BC0000D4 +:10EF7000000000006F5802000000000000000000C8 +:10EF800070ED020084D802000200010025C50000D7 +:10EF900084D802000400030085D7000084D8020052 +:10EFA00004000200C95A020084D8020002000100D5 +:10EFB00065D5000084D8020002000200EDD70000F1 +:10EFC00084D802000200020015D60000D4EF02002F +:10EFD000540000006CEB02000100000055D9000055 +:10EFE0000000000000000000000000000000000021 +:10EFF0000000000000000000000000000000000011 +:10F000000000000000000000000000000000000000 +:10F01000000000000F6A020000000000FF6D020007 +:10F02000FF6D020000000000000000000000000072 +:10F0300000000000000000000DF7000000000000CC +:10F04000856D0200000000000000000000000000CC +:10F0500000000000000000000000000000000000B0 +:10F0600000000000000000000000000000000000A0 +:10F070000000000000000000000000000000000090 +:10F08000000000000000000000000000FF6D020012 +:10F09000000000005DF4000000000000000000001F +:10F0A0000000000000000000000000004D6F0200A2 +:10F0B000000000000000000059EA0000FF6D02009F +:10F0C00000000000E1FB0000BDFB000009FE0000A5 +:10F0D000EF6D0200857502000000000000000000D6 +:10F0E0000000000049EA0000DB7B02000000000095 +:10F0F0000000000000000000000000000000000010 +:10F1000000000000000000000000000000000000FF +:10F1100000000000000000000000000051FB0000A3 +:10F12000ADFA000000000000857902000000000038 +:10F13000000000007F7A02000000000000000000D4 +:10F14000D5790200BDF10000CD730200000000007F +:10F1500000000000000000000000000000000000AF +:10F160000000000000000000277202000000000004 +:10F17000000000000000000000000000000000008F +:10F18000FF6D0200000000002B790200000000006B +:10F1900000000000056D0200056D02008D70020088 +:10F1A00083700200000000003970020097700200B6 +:10F1B000000000000000000000000000000000004F +:10F1C000A1ED00002F700200257002001B700200EC +:10F1D000C56F020000000000976F020000000000F1 +:10F1E0005D6F020000000000000000006375020077 +:10F1F00000000000A57B0200D572020000000000A4 +:10F200000000000000000000057502000000000082 +:10F2100071740200BDFE000000000000000000004C +:10F2200000000000000000000000000000000000DE +:10F23000C3720200DF6D02001B6C02004D6F020002 +:10F2400000000000056F0200E96E020000000000EF +:10F2500000000000000000000000000000000000AE +:10F26000000000004D6F020000000000C16D0200B0 +:10F27000000000000000000000000000000000008E +:10F28000AD7202000000000000000000000000005D +:10F29000000000000000000000000000000000006E +:10F2A000000000000000000000000000000000005E +:10F2B0004DFE000000000000000000000000000003 +:10F2C0006E000000E60900000E0A000020F30200B4 +:10F2D000EE09000008F30200F6090000F0F2020057 +:10F2E000FE090000FCF20200060A0000FCF2020027 +:10F2F00084D802000600FFFF0507010084D8020041 +:10F3000004000300DD04010084D802000200FFFFB6 +:10F31000BD06010028D902003C0100002CF30200C8 +:10F3200084D80200020001005F7D020064CE02006A +:10F330003700000006000000C0F202006CEB020083 +:10F34000BC000000000000005D070100000000009C +:10F3500000000000000000000000000000000000AD +:10F36000D5330200D37D0200000000000000000041 +:10F37000000000000000000028D902005300000037 +:10F3800058F7020084D8020002000100811F00002B +:10F3900084D80200020001005B7E020084D80200D3 +:10F3A00004000300650D010084D80200040003007E +:10F3B0007B7E020084D80200040002003D0D0100A3 +:10F3C00084D80200040002001F7E020084D80200DC +:10F3D00002000100AD08010084D802000200010013 +:10F3E000CD09010084D8020002000100D908010003 +:10F3F00084D802000300FFFF717E020084D802005F +:10F400000300FFFFE10D010084D8020000000000AE +:10F41000A507010084D80200020002002F7E02002E +:10F4200084D80200020001000D09010084D8020006 +:10F43000020001008108010084D8020002000100DE +:10F44000150C010084D8020002000100610C0100CB +:10F4500084D8020002000100E533020084D80200D3 +:10F4600002000100F108010084D802000000010040 +:10F47000250E010084D8020002000100B909010034 +:10F4800084D802000400FFFFBD0701002600000031 +:10F4900080F402003E00000090D302009E000000B5 +:10F4A00038F402000E0400003CCD02001E040000EF +:10F4B00048EF02001604000050C602004604000097 +:10F4C00064CE02005E04000078FE020076040000B4 +:10F4D0008CCB02007E0400000CD002001E0800004D +:10F4E0002CDB0200CE04000030D30200F604000042 +:10F4F0009CC6020006050000D8D20200BE03000030 +:10F5000078FF02006E0500001CDD02008605000089 +:10F51000C4D70200FE07000064DC0200F601000010 +:10F5200080CA0200AE05000030EC0200C6050000F3 +:10F53000BCDC0200CE0500006CEB0200E60500001A +:10F540003CF30200360400006CEC02009E05000053 +:10F55000A8EC0200A6020000CCEF0200D6030000D7 +:10F56000B0F70200DE0300002CF40200E603000006 +:10F57000CCF30200FE030000E4F3020026040000C6 +:10F580005CF402002E04000020F402004E0400008F +:10F5900068F4020056040000C0F302006604000094 +:10F5A000ACD702006E040000B8D702008E04000041 +:10F5B0009CF302009604000080F702009E04000005 +:10F5C00008F40200A6040000B4F30200AE04000038 +:10F5D00090F30200B604000074F40200C6040000B8 +:10F5E00050F40200D60400000CED0200DE0400001E +:10F5F000E4EC0200E604000098F70200EE040000CC +:10F6000084F30200FE040000A4F702000E050000CF +:10F6100074F7020016050000F0F302002E0500004A +:10F620004CF7020036050000D8F302004E0500003A +:10F6300068F702005E050000A8F3020066050000FE +:10F64000BCF702007E05000044F402008E050000B5 +:10F650008CF7020096050000FCF30200A6050000EE +:10F6600014F40200B60200007CFB0200BE0200009F +:10F6700038FA0200C6020000F4FB0200CE020000CD +:10F6800034FB0200DE02000030FC0200E602000053 +:10F690003CFE020006030000B4FD02000E03000061 +:10F6A000B8FB020016030000F8FA02001E03000077 +:10F6B0006CF9020026030000C8F702002E030000C8 +:10F6C000F0FD02003603000080FA02003E03000055 +:10F6D00090F8020046030000FCF902004E0300000F +:10F6E000A8FC020056030000C0F902005E030000FF +:10F6F0003CFD0200660300004CF80200AE02000070 +:10F70000BCFA02006E03000078FD020076030000E0 +:10F7100030F902007E03000000FD02009E0300009D +:10F72000E8F802008E03000010F8020096030000C3 +:10F730006CFC02004E0A0000D8D60200560A0000F7 +:10F74000A4D00200460500007CCC020084D8020050 +:10F7500002000100C50D010064CE0200C7020000D6 +:10F76000580000008CF4020084D80200020001005E +:10F77000CD0A010084D802000300FFFF677E02006B +:10F7800084D8020006000300A50D010084D8020001 +:10F79000020002008D0C010084D80200020001006A +:10F7A000177E020084D8020000000000B1070100AB +:10F7B00084D80200020001003108010084D8020050 +:10F7C0000100FFFF610B01006CEB02006400000010 +:10F7D000D5120100711201000000000000000000BD +:10F7E000000000005D1301000000000000000000A8 +:10F7F000000000000000000000000000B4F902005A +:10F8000000000000BCDC0200010000004CF8020017 +:10F810006CEB020071000000D512010071120100B2 +:10F820000000000000000000000000005D13010067 +:10F8300000000000000000000000000000000000C8 +:10F840000000000024F90200000000006CEB020040 +:10F850006C000000D51201007112010000000000D0 +:10F8600000000000000000005D1301000000000027 +:10F870000000000000000000000000000000000088 +:10F8800024F90200000000004600000074FA0200A3 +:10F890006CEB020067000000D5120100711201003C +:10F8A0000000000000000000000000005D130100E7 +:10F8B0000000000000000000000000000000000048 +:10F8C0000000000024F9020000000000B4FD020066 +:10F8D0000000000000000000F8DC0200BCDC0200B8 +:10F8E0000100000080FA02006CEB020073000000CF +:10F8F000D51201007112010000000000000000009C +:10F90000000000005D130100000000000000000086 +:10F91000000000000000000000000000E4FC020005 +:10F9200000000000BCDC0200010000003CFE020000 +:10F930006CEB02006E000000D51201007112010094 +:10F940000000000000000000000000005D13010046 +:10F9500000000000000000000000000000000000A7 +:10F9600000000000B4F90200000000006CEB02008F +:10F9700063000000D51201007112010000000000B8 +:10F9800000000000000000005D1301000000000006 +:10F990000000000000000000000000000000000067 +:10F9A000DCF8020000000000BCDC020001000000E6 +:10F9B00038FA0200BCDC0200010000007CFB0200FF +:10F9C0006CEB02006A000000D51201007112010008 +:10F9D0000000000000000000000000005D130100B6 +:10F9E0000000000000000000000000000000000017 +:10F9F0000000000024F90200000000006CEB02008F +:10FA000068000000D5120100711201000000000022 +:10FA100000000000000000005D1301000000000075 +:10FA200000000000000000000000000000000000D6 +:10FA300024F90200000000006CEB020057000000F7 +:10FA4000D51201007112010000000000000000004A +:10FA5000000000005D130100000000000000000035 +:10FA600000000000000000000000000024F9020077 +:10FA70000000000084D802000200FFFFC112010054 +:10FA80006CEB020066000000D5120100711201004B +:10FA90000000000000000000000000005D130100F5 +:10FAA0000000000000000000000000000000000056 +:10FAB0000000000024F90200000000006CEB0200CE +:10FAC00055000000D5120100711201000000000075 +:10FAD00000000000000000005D13010000000000B5 +:10FAE0000000000000000000000000000000000016 +:10FAF00024F90200000000006CEB0200620000002C +:10FB0000D512010071120100000000000000000089 +:10FB1000000000005D130100000000000000000074 +:10FB200000000000000000000000000070FB020068 +:10FB3000000000006CEB020059000000D51201002B +:10FB40007112010000000000000000000000000031 +:10FB50005D13010000000000000000000000000034 +:10FB6000000000000000000024F902000000000076 +:10FB7000BCDC02000100000078FD02006CEB02001A +:10FB800056000000D51201007112010000000000B3 +:10FB900000000000000000005D13010000000000F4 +:10FBA0000000000000000000000000000000000055 +:10FBB00000000000F0FC02006CEB0200610000009D +:10FBC000D5120100711201000000000000000000C9 +:10FBD000000000005D1301000000000000000000B4 +:10FBE00000000000000000000000000024F90200F6 +:10FBF000000000006CEB020058000000D51201006C +:10FC00007112010000000000000000000000000070 +:10FC10005D13010000000000000000000000000073 +:10FC2000000000000000000024F9020000000000B5 +:10FC30006CEB02005B000000D512010071120100A4 +:10FC40000000000000000000000000005D13010043 +:10FC500000000000000000000000000000000000A4 +:10FC60000000000024F90200000000006CEB02001C +:10FC700072000000D51201007112010000000000A6 +:10FC800000000000000000005D1301000000000003 +:10FC90000000000000000000000000000000000064 +:10FCA000A8F90200000000006CEB020069000000EF +:10FCB000D5120100711201000000000000000000D8 +:10FCC000000000005D1301000000000000000000C3 +:10FCD00000000000000000000000000004F8020026 +:10FCE00000000000BCDC02000100000010F802006F +:10FCF00064CE02000F0000000100000088F802003E +:10FD00006CEB02006F000000D512010071120100BF +:10FD10000000000000000000000000005D13010072 +:10FD200000000000000000000000000000000000D3 +:10FD30000000000024F90200000000006CEB02004B +:10FD40006B000000D51201007112010000000000DC +:10FD500000000000000000005D1301000000000032 +:10FD60000000000000000000000000000000000093 +:10FD7000A8F90200000000006CEB02006D0000001A +:10FD8000D512010071120100000000000000000007 +:10FD9000000000005D1301000000000000000000F2 +:10FDA00000000000000000000000000024F9020034 +:10FDB000000000006CEB020060000000D5120100A2 +:10FDC00071120100000000000000000000000000AF +:10FDD0005D130100000000000000000000000000B2 +:10FDE0000000000000000000B4F902000000000064 +:10FDF0006CEB020065000000D512010071120100D9 +:10FE00000000000000000000000000005D13010081 +:10FE100000000000000000000000000000000000E2 +:10FE200000000000DCF802000000000090F8020072 +:10FE30000000000000000000F8DC02006CEB020093 +:10FE40005C000000D51201007112010000000000EA +:10FE500000000000000000005D1301000000000031 +:10FE60000000000000000000000000000000000092 +:10FE7000B4F90200000000006CEB02008B000000EF +:10FE8000000000005B7F0200000000000000000096 +:10FE9000000000000000000000000000D533020058 +:10FEA000337F02000000000000000000000000009E +:10FEB0000000000084D8020000000000252201009C +:10FEC00028D902002A000000CCFE020064CE020005 +:10FED0003700000006000000E8FE020084D802009F +:10FEE00000000100DD2101006E000000560100004D +:10FEF000FE080000DCFE02000609000030FF0200E0 +:10FF00000E09000018FF020016090000B4FE0200EE +:10FF10001E09000024FF020084D802000000000037 +:10FF2000877F020084D80200000000001522010033 +:10FF300084D8020000000100352201006CEB0200B1 +:10FF4000B8000000C17F02000000000000000000B7 +:10FF5000459C0000099D0000957F0200019E000065 +:10FF6000A19C000000000000000000000000000054 +:10FF700000000000000000006CEB020077000000B1 +:10FF800000000000D37F020000000000000000001D +:10FF90000000000000000000000000000000000061 +:10FFA0000000000000000000000000000000000051 +:10FFB00000000000140A030009117CCA140A03009F +:10FFC000014308A7140A030009671404140A030074 +:10FFD0000951815F140A030009400155140A030006 +:10FFE00001600307140A030001001042140A030011 +:10FFF000010080E8140A030001001300140A030042 +:020000040003F7 +:1000000001EA7F47140A0300097E9DE7140A0300F2 +:1000100001849073140A030001AAAAAA140A030017 +:1000200001AE7EE7140A0300095ECABD140A03008C +:1000300009400117140A030001444545140A03004E +:10004000094150CC140A0300093FC6F8140A030002 +:1000500001403902140A03000184D173140A030019 +:1000600009E41315140A030001EE9362140A030055 +:1000700001841047140A030001047D44140A03009C +:1000800001001021140A030001A5BCF5140A0300A5 +:1000900001421000140A030001601000140A03005A +:1000A00001317E47140A0300096194F4140A030025 +:1000B00001C02907140A030001C45542140A0300B1 +:1000C00001E67807140A030001C46D47140A03000F +:1000D00001109571140A030001009001140A030035 +:1000E00001447C41140A03000100A222140A030007 +:1000F0000100100C140A030001841000140A03000C +:10010000010A2022140A03000180A80F140A030028 +:1001100001FB3BE7140A0300011C5311140A0300FE +:1001200009FB93BF140A030009511115140A0300B7 +:1001300001007000140A030001845447140A0300EC +:1001400001C47DA7140A0300014081E8140A0300DA +:100150000118FFAF140A030009BFFE5F140A030071 +:10016000017F03E5140A030001632B07140A03004F +:1001700001001C00140A030001001084140A03008B +:1001800001081100140A030001B57E42140A03009D +:1001900009C411F7140A030001C07D05140A030005 +:1001A00001802802140A0300010A10456CEB0200CA +:1001B0008A020000000000000000000000000000B3 +:1001C000000000000000000000000000000000002F +:1001D000000000000000000000000000F401030027 +:1001E000000000001002030084D802000200010099 +:1001F00061230100FF7F0200EF7F0200000000008A +:100200000000000084D802000300FFFFD12201009B +:1002100064CE02004F0000000900000074020300D9 +:100220008D02000002000000802500008E02000008 +:1002300002000000080000008F0200000300000020 +:1002400074E00200C0000000020000000100000095 +:10025000900200000302000074E00200910200001E +:100260000302000074E0020092020000030200009A +:1002700074E002006614000004020300E6030000BC +:10028000E801030076050000C0EF02009E140000A4 +:10029000A8EF0200A6140000B4EF0200AE140000A4 +:1002A00090EF0200DE0500009CEF0200B614000093 +:1002B00003000000BE140000050000006CEB02000B +:1002C000D601000000000000000000000000000057 +:1002D000000000000000000000000000000000001E +:1002E000000000000000000000000000000000000E +:1002F000000000000403030084D802000200010093 +:100300007D23010064CE02001F00000003000000F6 +:1003100014030300CE0E00002C030300D60E0000D1 +:10032000F8020300DE0E00003803030084D8020048 +:10033000020001009923010084D80200020001009C +:100340003D80020084D8020002000100A1240100C7 +:1003500064CE02004700000008000000B403030060 +:1003600084D80200020001006B80020084D80200E1 +:1003700002000100538002006CEB0200DC0100006F +:10038000000000000000000000000000000000006D +:10039000000000000000000000000000000000005D +:1003A000000000000000000000000000000000004D +:1003B00050030300F60E00006C030300FE0E000065 +:1003C00060030300060F00002C0403000E0F000062 +:1003D0000C040300160F0000440303001E0F00006E +:1003E00020040300260F0000F40303002E0F00007A +:1003F0000004030084D802000400020089250100E3 +:1004000084D8020002000100C524010084D8020043 +:10041000020001009B80020078030300A42A002050 +:1004200084D80200040002005D25010084D8020087 +:10043000020001008380020000000000E6010000CD +:10044000E7010000E8010000E9010000EA01000006 +:10045000EB010000EC010000ED010000EE010000E6 +:10046000EF010000F001000028D902005401000053 +:10047000840403006E000000A60A0000460000008D +:100480009404030064CE0200170000000200000084 +:100490007404030084D80200000000009D260100BF +:1004A00040060300502B0020DC050300002C002038 +:1004B00064CE02003700000006000000DC060300E6 +:1004C000DE0A000020050300D60A0000D005030064 +:1004D000EE0A000088050300E60A0000900603000B +:1004E000F60A0000C4060300FE0A0000D00603005E +:1004F0000E0B00005C05030064CE02003F0000000C +:1005000007000000C004030040060300302B002059 +:1005100064CE020037000000060000002C05030036 +:1005200084D8020004000200C9260100DE0A00008F +:1005300020050300D60A0000D0050300EE0A0000E3 +:1005400088050300F60A0000C4060300FE0A000046 +:10055000D0060300060B00008406030084D80200C6 +:1005600002000100AD260100DC050300A02B0020E5 +:1005700094050300602B0020DC050300102C0020F4 +:1005800094050300D02B002084D802000400020050 +:10059000FD2601006CEB0200580100000000000085 +:1005A000000000000000000000000000000000004B +:1005B000000000000000000000000000000000003B +:1005C000000000000000000000000000B004030074 +:1005D00084D8020002000100DD8002006CEB020002 +:1005E00057010000000000000000000000000000B3 +:1005F00000000000000000000000000000000000FB +:1006000000000000000000000000000000000000EA +:100610000000000010050300DC050300B02B0020E3 +:1006200094050300702B0020DC050300402C002003 +:10063000DC050300202C0020DC050300E02B00205B +:100640006CEB0200590100000000000000000000F7 +:10065000000000000000000000000000000000009A +:10066000000000000000000000000000000000008A +:100670000000000000000000F8040300DC05030097 +:10068000302C002084D8020002000100F980020012 +:1006900084D8020002000100EB800200DC050300A8 +:1006A000C02B0020DC050300802B00204006030047 +:1006B000402B0020DC050300502C0020DC0503004B +:1006C000F02B002084D802000400020069270100FA +:1006D00084D80200040002009D270100DE0A000009 +:1006E00020050300D60A0000D0050300EE0A000032 +:1006F00088050300E60A000090060300F60A0000E1 +:10070000C4060300FE0A0000D0060300DC05030057 +:10071000902B002008050300AC060300A004030092 +:1007200064CE02002F00000005000000E007030077 +:1007300028D90200A8020000200703006CEB020089 +:10074000A902000000000000B781020000000000C4 +:10075000118102004D2F0100000000009D290100C1 +:1007600000000000000000002181020000000000E5 +:10077000000000008407030084D80200000000008D +:10078000392D010066150000C8070300AB02000008 +:100790000301000000000000CC0100000100000087 +:1007A00001000000020200000300000074E00200EB +:1007B000AA0200000300000074E0020084D80200D6 +:1007C000000000004128010084D80200040002005B +:1007D0005929010084D802000100FFFFF52E010015 +:1007E0006E000000461500000606000078070300B2 +:1007F0001E100000D4070300C6150000BC0703004C +:100800004E1500003C07030084D8020002000100DE +:100810003930010084D802000000000025300100BA +:1008200028D902004C0100003808030084D80200D7 +:10083000000000008D30010064CE020017010000AE +:10084000220000005408030084D8020000000100C8 +:10085000A13001006E000000660A0000BE0B00001F +:10086000140A03003E0E000050000020BE0E0000DF +:1008700024000020C60E000030000020EE0E000014 +:1008800018040300960F0000480F0300CE0F00006D +:10089000C80D03005E14000020000020CE140000EC +:1008A0003C0000206E0A000014080300760A0000D5 +:1008B000080803007E0A000064090300860A00009D +:1008C000480803008E0A00002C0803001E0B0000DD +:1008D00008050300260B0000AC0603002E0B0000E9 +:1008E000A0040300360B0000700503003E0B00005F +:1008F00020060300460B0000A40603004E0B000078 +:100900000C070300560B0000680503005E0B000097 +:1009100018060300660B00009C0603006E0B000027 +:1009200080050300760B0000380603007E0B0000F4 +:10093000BC060300860B0000A80403008E0B000019 +:1009400078050300960B0000300603009E0B0000A4 +:100950007C060300A60B000028060300AE0B000077 +:10096000B406030084D802000000000079300100C2 +:100970006CEB0200F400000000000000000000002A +:100980000000000000000000000000000000000067 +:1009900000000000D5330200F784020000000000D0 +:1009A0000000000000000000000000006CEB0200EE +:1009B000F400000000000000000000000000000043 +:1009C0000000000000000000000000000000000027 +:1009D000D5330200A18702000000000000000000E3 +:1009E000000000000000000084D80200080004009D +:1009F000D531010084D80200040002004B860200B9 +:100A0000140A03000100000084D802000200010063 +:100A10008D8402006CEB020076010000653201005B +:100A20002D33010000000000000000006D360100C1 +:100A300000000000000000000000000000000000B6 +:100A4000000000000000000000000000BC0C0300DB +:100A500084D80200040002003F870200CE0B000091 +:100A6000380D0300D60B00008C0D0300EE0B0000C8 +:100A70002C0D0300E60B0000E8090300F60B000054 +:100A8000F4090300FE0B0000200D0300060C00001B +:100A9000500A03000E0C0000CC0C030016060000E8 +:100AA000440D0300760E0000D80C0300DE0B00009E +:100AB000080A03001E0C0000FCFF0200260C0000C8 +:100AC0004C0003002E0C0000440103003E0C00000B +:100AD000ECFF0200360C00002C000300460C000066 +:100AE000D4FF02004E0C0000CCFF0200560C0000A8 +:100AF000DCFF02005E0C0000A4010300660C000095 +:100B0000B4FF02006E0C00005C010300760C0000D4 +:100B1000FC0003007E0C0000E4000300860C0000D3 +:100B2000240103008E0C0000F4000300960C00006A +:100B30007C0103009E0C0000F4FF0200A60C0000E4 +:100B40002C010300AE0C0000EC000300B60C00000A +:100B500074010300BE0C0000E4FF0200C60C00009C +:100B60007C000300CE0C0000D4000300D60C000073 +:100B70006C010300DE0C000094000300E60C000092 +:100B80008C000300EE0C0000B4000300F60C000023 +:100B900014010300FE0C000074000300060D0000A9 +:100BA0003C0003000E0D000034010300160D000090 +:100BB000CC0003001E0D0000DC000300260D000029 +:100BC000C4FF02002E0D000004010300360D0000DA +:100BD000A40003003E0D000014000300460D0000B9 +:100BE000340003004E0D00009C010300560D000070 +:100BF000440003005E0D0000AC000300660D000021 +:100C0000840003006E0D00009C000300760D0000C0 +:100C10000C0003007E0D000054000300860D000050 +:100C2000240003008E0D000084010300960D0000D7 +:100C30008C0103009E0D000004000300A60D0000BF +:100C4000C40003001E0E0000C8E10200160E0000E2 +:100C5000A0E10200AE0D00000C010300B60D000083 +:100C60004C010300BE0D0000BC000300C60D0000D7 +:100C70003C010300CE0D000094010300D60D0000DE +:100C80001C010300DE0D00005C000300E60D000007 +:100C900054010300EE0D00006C000300F60D00008F +:100CA000BCFF0200FE0D00001C000300060E000049 +:100CB000640003000E0E00006401030064CE020015 +:100CC000670200004C0000005C0A030084D80200A8 +:100CD000040002005387020084D802000A000500C5 +:100CE0002B8302006CEB0200D10100000000000029 +:100CF00000000000000000000000000000000000F4 +:100D00000000000000000000313101000000000080 +:100D100000000000000000000000000000000000D3 +:100D200084D80200040002005F86020084D802001A +:100D3000060003007131010084D8020002000100A6 +:100D40000183020084D80200020001003584020001 +:100D50006CEB0200D5010000000000000000000064 +:100D600000000000ED810200000000000000000013 +:100D7000CB870200113101000000000000000000DC +:100D800000000000000000000000000084D8020005 +:100D9000020001001D830200FA01000002010000B0 +:100DA00000000000FB010000020100000000000044 +:100DB000FD010000010000000000000084D80200D6 +:100DC0000300FFFF29370100200E03000429002043 +:100DD000FA0100000201000000000000FC01000018 +:100DE0000301000000000000FD0100000100000000 +:100DF0000000000076050000BC0D0300DE050000C9 +:100E0000040E030084D802000300FFFF85370100B1 +:100E100064CE02001700000002000000F40D030081 +:100E20006CEB0200F8010000000000000000000070 +:100E300000000000000000000000000000000000B2 +:100E400000000000000000000000000000000000A2 +:100E50000000000000000000100E030084D8020013 +:100E6000020001008139010084D802000200010063 +:100E70001139010084D8020000000100E1380100AE +:100E80006E0000000E150000161500005C0E030039 +:100E90001E150000740E030026150000000F03004D +:100EA0002E150000CC0E030036150000680E03005E +:100EB0000E150000C00E03003E150000F40E0300E6 +:100EC00084D80200000000004138010084D80200EC +:100ED000040002004939010064CE0200470000000E +:100EE00008000000800E030028D90200A1020000C3 +:100EF000D80E030084D8020004000200013801006B +:100F000084D80200020003005938010084D802008E +:100F100002000100DD39010084D802000200010056 +:100F20006F88020084D80200020001008588020058 +:100F300084D80200020001002788020084D8020041 +:100F4000020001003D3A0100900F0300E02A00205A +:100F50009E0F0000240F0300A60F0000F40F0300F3 +:100F6000AE0F00000C0F0300B60F00003C0F030093 +:100F7000F60E0000300F0300FE0E0000CC0F030041 +:100F8000060F0000E80F0300BE0F0000180F03005B +:100F90006CEB0200F1010000000000000000000006 +:100FA0000000000000000000000000000000000041 +:100FB0000000000000000000000000000000000031 +:100FC0000000000000000000D80F030084D80200D9 +:100FD000020001003F88020064CE020047000000CA +:100FE00008000000500F030084D802000200010036 +:100FF0005788020084D8020002000100C1390100B4 +:101000006E000000960A0000460000002810030051 +:101010009E0A00003410030064CE02001F0000008E +:10102000030000000010030084D80200000000004C +:101030009D3A010084D80200000000007D3A0100C2 +:1010400028D9020052010000181003008D02000090 +:101050000200000040420F008E020000020000006B +:10106000080000009A0200000200000000000000DA +:101070009B0200000302000074E002009C020000DA +:101080000302000074E002009D0200000302000061 +:1010900074E0020084D802000300FFFFBD3A0100A3 +:1010A00064CE0200270000000400000010110300BD +:1010B00084D80200040002003D3B01006CEB0200FA +:1010C0009802000000000000000000000000000086 +:1010D0000000000000000000000000000000000010 +:1010E0000000000000000000000000000000000000 +:1010F00000000000A010030084D8020004000300D8 +:10110000B53B010084D8020006000300713B0100DA +:101110006614000094100300DE050000B010030008 +:1011200076050000F8100300F61400000411030017 +:1011300028D90200550100008811030000000000BA +:10114000398EE33D398E633E398EE33EABAA2A3FAA +:10115000721C473F0000803F6E000000AE0A000096 +:10116000460000007C110300B60A00007011030065 +:1011700084D8020000000000893C010084D80200ED +:1011800000000000893C010064CE02001F00000046 +:1011900003000000581103006E000000FE14000060 +:1011A00006150000D411030064CE020017000000F1 +:1011B000020000009811030064CE02001700000036 +:1011C000020000001C12030028D902009F02000048 +:1011D000A81103006CEB0200A00200000000000058 +:1011E000693D010000000000AB8802000000000023 +:1011F00000000000B93C01000000000000000000F9 +:10120000000000000000000000000000B811030012 +:1012100084D8020002000100A93C01000E06000073 +:1012200010120300460E00002C12030084D80200A6 +:1012300002000100993C010084D802000000000077 +:101240002140010084D8020002000100BD450100D8 +:101250006E0000001616000046000000D0120300C9 +:101260006E0A0000D01203001E16000010130300C7 +:10127000960E0000B81203009E0E00003812030004 +:1012800026160000041303002E160000EC120300C3 +:101290006E0600004412030036160000C41203005C +:1012A00076160000050000007E1600000100000018 +:1012B000861600000300000084D802000000000031 +:1012C0005141010084D8020000000000CD880200D6 +:1012D00084D8020000000000A13F010064CE02009B +:1012E0006F0000000D0000005012030084D80200BF +:1012F00000000000D788020028D90200C2020000C6 +:10130000DC12030084D8020002000100DD45010068 +:1013100084D802000100FFFF6141010064CE020099 +:10132000DF0000001B0000002C1303006E0A000009 +:101330003414030026100000881403002E1000004F +:10134000941403001E1000001C1403000E10000073 +:101350007C14030006060000281403006E10000031 +:1013600064E502007610000044E90200BE100000AF +:10137000E8E90200A610000040E302009E10000011 +:1013800094E50200D6100000F0EA0200861000008A +:1013900084E202005E10000064E7020056100000C4 +:1013A000D4E20200E6100000C0E302007E1000005C +:1013B00048E80200C6100000BCE90200CE100000A0 +:1013C00010E402004610000094E9020066100000DC +:1013D0007CE802004E10000054E50200DE10000020 +:1013E00048EB0200961000002CEB02008E1000006B +:1013F0002CE80200B610000024E90200AE10000044 +:1014000044E70200070200000202000000000000A2 +:1014100006020000020200000000000084D8020062 +:101420000100FFFF6947010084D8020000000100AD +:101430003D46010084D8020000000000FD45010087 +:10144000FE01000003010000000000000202000095 +:101450000300000008050300CC01000001000000AB +:1014600001000000CD0100000100000000000000AC +:1014700028D90200FE0100001C13030084D80200DA +:101480000100FFFFCD46010084D802000100FFFFEC +:101490006946010084D802000000000019460100DE +:1014A000FF01000002010000000000000002000037 +:1014B00002000000FFFFFFFF020200000300000027 +:1014C00008050300CC01000001000000010000003D +:1014D00084D8020002000100C14A010064CE02006B +:1014E0004700000008000000A015030084D8020097 +:1014F0000300FFFF914E010084D8020002000100AA +:10150000A54A010084D8020008000400614F0100D0 +:1015100084D8020006000300CB8902007801000095 +:101520000301000000000000CA01000002000000EA +:1015300090010000C1000000010200000000000056 +:10154000CC0100000102000001000000CD010000FC +:10155000010200000000000084D802000200010027 +:101560000D4F01006CEB0200C40100000000000000 +:10157000000000000000000000000000000000006B +:10158000000000000000000000000000000000005B +:10159000000000000000000000000000DC14030058 +:1015A000EE0B000010150300E60B0000041503000D +:1015B000460E0000E01503004E0E0000EC14030080 +:1015C0000E06000058150300960E000028160300B2 +:1015D0009E0E0000F8140300A60E0000D0140300B5 +:1015E00084D802000300FFFFC14D0100CF010000BD +:1015F0000301000000000000CA010000020000001A +:1016000096000000CC010000010200000100000073 +:10161000820100000102000000000000CD01000076 +:10162000010200000000000084D802000200010056 +:10163000994A0100455B0100A15B0100895C010042 +:10164000B15C0100CD5B010034160300A828002026 +:10165000B004000000F004006009000000D00900A0 +:10166000C012000000B013008025000000502700C9 +:101670004038000000003B00004B000000A04E007E +:101680008070000000F07500127A000000008000F9 +:101690000096000000509D0000E1000000F0EB000B +:1016A000002C010000903A0100C2010000E0D701C7 +:1016B0000084030000B0AF0390D0030000000004DA +:1016C0000008070000705F0700100E00A4DFBE0EC8 +:1016D00040420F0000000010D43000000000000065 +:1016E000A86100002000000050C30000400000007E +:1016F000A086010060000000400D03008000000093 +:10170000801A06008800000000350C0090000000E0 +:10171000006A1800B000000000D43000D0000000C3 +:1017200000A86100F00000000050C300F8000000B5 +:10173000FFFF000000000000E204000000000000C5 +:10174000C409000008000000881300001000000019 +:101750001027000018000000204E000020000000AC +:1017600080380100280000000071020030000000F5 +:1017700000C4090038000000FFFF01000100000064 +:10178000010000001700000046000000A300000058 +:101790005F010000D6020000C4050000A00B00009D +:1017A0000100000000700040040000000200000082 +:1017B00000700040080000000300000000700040BE +:1017C0001000000004000000007000402000000035 +:1017D000050000000070004040000000060000000E +:1017E0000070004080000000FF000000FFFFFFFFCE +:1017F00000000000000000000000000001000000E8 +:1018000001000000000000000100000002000000D4 +:1018100000000000010000000300000000000000C4 +:1018200001000000040000000000000001000000B2 +:10183000050000000000000001000000060000009C +:101840000000000001000000070000000000000090 +:10185000010000000800000000000000010000007E +:101860000900000000000000010000000A00000064 +:1018700000000000010000000B000000000000005C +:10188000010000000C00000000000000010000004A +:101890000D00000000000000010000000E0000002C +:1018A00000000000010000000F0000000000000028 +:1018B0000100000010000000000000000100000016 +:1018C00011000000000000000100000012000000F4 +:1018D00000000000010000001300000000000000F4 +:1018E00001000000140000000000000001000000E2 +:1018F00015000000000000000100000016000000BC +:1019000000000000010000001700000000000000BF +:1019100001000000180000000000000001000000AD +:101920001900000000000000010000001C00000081 +:1019300000000000010000001D0000000000000089 +:10194000010000001E000000000000000100000077 +:10195000FF000000FFFFFFFF0000000006A40100E1 +:10196000CEA30100EAA30100C2A30100EAA3010083 +:101970002EA30100EAA30100C2A30100CEA301002F +:10198000CEA301002EA30100C2A301006CA401009C +:101990006CA401006CA40100F0A30100CEA301001F +:1019A000CEA30100B6A40100C0A30100B6A40100AB +:1019B0002EA30100B6A40100C0A30100CEA3010024 +:1019C000CEA301002EA30100C0A301006CA401005E +:1019D0006CA401006CA401009AA40100CEA7010030 +:1019E000C6A70100C6A70100BEA7010010A70100FD +:1019F00010A70100B4A70100BEA7010010A70100B5 +:101A0000B4A7010010A70100BEA7010012A70100A2 +:101A100012A7010012A7010058A8010078B5010023 +:101A200066B401004CB5010052B401004CB5010090 +:101A300056B501004CB5010052B4010066B4010076 +:101A400066B4010056B5010052B401005CB4010057 +:101A50005CB401005CB40100BEB701000CBE010023 +:101A6000EABD0100EABD0100DEBD0100D2BC0100FB +:101A7000D2BC0100D2BD0100DEBD0100D2BC01001C +:101A8000D2BD0100D2BC0100DEBD0100D6BC010008 +:101A9000D6BC0100D6BC0100ECBF01006937AC31F7 +:101AA00068212233B40F14336821A2333863ED3E2A +:101AB000DA0F493F5E987B3FDA0FC93F737172744A +:101AC0000000000061636F73660000006173696E5F +:101AD000660000006578706600000000666D6F6447 +:101AE000660000006C6F676600000000706F77662C +:101AF0000000000073717274660000000000003F77 +:101B0000000000BFD1F71737D1F717B78071313F09 +:101B1000807131BF00000000000000800000000064 +:101B200000C0153F00000000DCCFD1350000803F31 +:101B30000000C03F000FC93F000F494000CB964056 +:101B4000000FC9400053FB4000CB164100ED2F4170 +:101B5000000F49410031624100537B41003A8A4104 +:101B600000CB9641005CA34100EDAF41007EBC413B +:101B7000000FC94100A0D5410031E24100C2EE4151 +:101B80000053FB4100F20342003A0A420083104234 +:101B900000CB164200141D42005C234200A52942DE +:101BA00000ED2F4200363642007E3C4200C74242E2 +:101BB000000F4942A2000000F9000000830000006D +:101BC0006E0000004E000000440000001500000000 +:101BD00029000000FC000000270000005700000062 +:101BE000D1000000F500000034000000DD0000001E +:101BF000C0000000DB000000620000009500000053 +:101C0000990000003C00000043000000900000002C +:101C100041000000FE0000005100000063000000D1 +:101C2000AB000000DE000000BB000000C5000000AB +:101C300061000000B7000000240000006E000000FA +:101C40003A000000420000004D000000D2000000F9 +:101C5000E000000006000000490000002E00000027 +:101C6000EA00000009000000D1000000920000001E +:101C70001C000000FE0000001D000000EB00000042 +:101C80001C000000B100000029000000A7000000B7 +:101C90003E000000E8000000820000003500000067 +:101CA000F50000002E000000BB0000004400000012 +:101CB00084000000E90000009C00000070000000AB +:101CC00026000000B40000005F0000007E0000005D +:101CD000410000003900000091000000D600000023 +:101CE00039000000830000005300000039000000AC +:101CF000F40000009C000000840000005F00000071 +:101D00008B000000BD000000F9000000280000006A +:101D10003B0000001F000000F800000097000000DA +:101D2000FF000000DE000000050000009800000039 +:101D30000F000000EF0000002F0000001100000065 +:101D40008B0000005A0000000A0000006D00000037 +:101D50001F0000006D000000360000007E00000043 +:101D6000CF00000027000000CB00000009000000A9 +:101D7000B70000004F000000460000003F000000D8 +:101D8000660000009E0000005F000000EA00000006 +:101D90002D0000007500000027000000BA000000C0 +:101DA000C7000000EB000000E5000000F1000000AB +:101DB0007B0000003D00000007000000390000002B +:101DC000F70000008A0000005200000092000000AE +:101DD000EA0000006B000000FB0000005F00000054 +:101DE000B10000001F0000008D0000005D00000039 +:101DF0000800000056000000030000003000000052 +:101E000046000000FC0000007B0000006B000000AA +:101E1000AB000000F0000000CF000000BC0000009C +:101E2000200000009A000000F400000036000000CE +:101E30001D000000A9000000E30000009100000068 +:101E4000610000005E000000E60000001B000000D2 +:101E500008000000650000009900000085000000F7 +:101E60005F00000014000000A000000068000000F7 +:101E7000400000008D000000FF000000D8000000BE +:101E8000800000004D0000007300000027000000EB +:101E900031000000060000000600000015000000F0 +:101EA00056000000CA00000073000000A8000000F7 +:101EB000C900000060000000E20000007B0000009C +:101EC000C00000008C0000006B0000000400000057 +:101ED00007000000090000000000C93F0000F039C1 +:101EE0000000DA370000A2330000842E0000502BDF +:101EF0000000C2270000D0220000C41F0000C61B43 +:101F00000000441700000000000000000000000076 +:101F100000000000000000000000000000000000C1 +:101F200000000000000000000000000000000000B1 +:101F300000000000000000000000000000000000A1 +:101F40000000000000000000000000000000000091 +:101F50000000000000000000000000000000000081 +:101F600000000000900000206CB003006FB0030080 +:101F700072B00300102332100810113032123320D7 +:101F8000342014331520481009129A200A2089336E +:101F90008A2048107314311033103510341047263E +:101FA00020105B204910582048305330783285206B +:101FB0002B2114104222251043207F2346109430F9 +:101FC00047109822481099301F22252020300822DF +:101FD000072009201B1246201C20576212106B207C +:101FE0005531562048107C2342107D304310042286 +:101FF000932005308D128E208F208E2249105B3069 +:102000008F225B20903041221F10432080228120AC +:1020100082303F313C2048103E333B204810A523FE +:1020200020105E20A330A6222E10A73017223110D8 +:102030001A30492419105B204910582088224A1070 +:1020400008102D222A109330023203201C221D205A +:1020500005102A152B202C202D202F202E2040313A +:1020600008104A109F2232105B204C242B1049107C +:1020700058204D2060A42410143049105E2076139F +:102080002F1030103D10386342103E204310316253 +:102090001E105B206231632011107D12A62080206B +:1020A000A4A51D10912022106120A3302822181011 +:1020B00091203713311038203E2050225B203D30D4 +:1020C0009E2231105B200121023023624D1024201A +:1020D00034241E103520211037204D124E2052205E +:1020E0000E63081011301230433108104810851368 +:1020F0008620872088204B271D10912022109320B6 +:102100004910582053309D139E209F20A020253336 +:1021100026204810862342109C3043102012212094 +:1021200022209712A42098206D316E203A107E2331 +:102130004410803045108212A42083207231742014 +:10214000732095225B20963012624D105B20752221 +:102150007620742094229520973051324F20872387 +:102160004410892045105924051006105A200710E4 +:1021700081126A205B2039323A2092126A206B2049 +:102180002E21A6208A128C208B209AA515100810CB +:102190009B30491058200B625A105B20A0225B2014 +:1021A000A1306822231069304832492005210510EA +:1021B00018223210081006244C10402086300510DA +:1021C000351240203620A312A420A5204F241B1036 +:1021D0005030491058205D24201061201A105B20D7 +:1021E000703172207120906249105B3065316B2034 +:1021F00066205E12602061202F2229103030692174 +:1022000026106A2231106B2029212810073206205F +:10221000271C4E104F1050105110531054105510D1 +:102220005610581057105910521054242D10552084 +:10223000491058209133922048103B2208103D301D +:102240007412752077200AA81710081042100C305D +:1022500043100B3049105820151316201720182052 +:102260000C330D20481093335B2048103622392060 +:1022700040307B120B100C10672226102210132204 +:102280000810113063126420652077237A2078309B +:1022900079305B125F205C201662081019306E31B5 +:1022A00070206F2026126A205B202C2116104562B8 +:1022B00048105B200D130E200F2010206F123710D6 +:1022C00039106C316D203C108B225B208C308C22BD +:1022D00049108D30332221103F2071122F10301001 +:1022E0001A610810993395204810A8221E105B200F +:1022F0006B316C203B10223223200F22311013301F +:102300006131622027103A124A100D1046184720FA +:102310004A204B204C2054200A209A2008200013E9 +:1023200005101C204620796232107420031205101B +:102330001B20581259201C2056225B205730241293 +:10234000A6202520642226106320442313105B203E +:1023500045305FA42410143049105B209662491068 +:102360005B20A712A82093205A321B2030225B202A +:10237000313019624D105B209B6342109C3043103A +:102380004E235120533052301E18282029202A2055 +:1023900032204120422044201F207A1C08100910BE +:1023A0000A100B100C100D100F1010100E107C20C6 +:1023B0007E207F201D331E204B105C2261205D306B +:1023C0008362481084308433812048103D621210AB +:1023D00008103C2240203D30116249105B20A112C0 +:1023E000A420A220A2624D105B2053631A10491052 +:1023F00058209C339D204810661936103810401024 +:102400003E103F1041102210672068204A252C10F2 +:102410005B2049105820533052631C10491058203B +:1024200021222720242000683B0000783C000088FF +:102430003D0000603E0000703F0000804000E10869 +:10244000E907EE0E4D0DDA0B2F0BF70961080000BE +:10245000180E8E0C00008F0A6809000002000200AE +:10246000040007000D0019003100610000000005A4 +:10247000000051282573290A008F012A00FA015F04 +:1024800000420F5F5F6275696C645F636C617373B8 +:102490005F5F002B095F5F636C6173735F5F002D8B +:1024A000075F5F646F635F5F00380A5F5F696D702D +:1024B0006F72745F5F005F085F5F696E69745F5F72 +:1024C0000079075F5F6E65775F5F007B0A5F5F6C17 +:1024D0006F63616C735F5F008E085F5F6D61696E33 +:1024E0005F5F00FF0A5F5F6D6F64756C655F5F0023 +:1024F000E2085F5F6E616D655F5F007F085F5F642C +:102500006963745F5F00F7085F5F686173685F5FAE +:102510000002085F5F6E6578745F5F006B0C5F5F41 +:102520007175616C6E616D655F5F00C8085F5F709B +:102530006174685F5F00010E5F5F7265706C5F7051 +:1025400072696E745F5F002B085F5F626F6F6C5F14 +:102550005F00C60C5F5F636F6E7461696E735F5F6F +:10256000006D095F5F656E7465725F5F0045085FAF +:102570005F657869745F5F00E2075F5F6C656E5F3F +:102580005F00CF085F5F697465725F5F00260B5F55 +:102590005F6765746974656D5F5F00320B5F5F73C1 +:1025A00065746974656D5F5F00FD0B5F5F64656CEA +:1025B0006974656D5F5F00C4075F5F6164645F5F3E +:1025C0000021075F5F7375625F5F0010085F5F72D5 +:1025D0006570725F5F00D0075F5F7374725F5F004A +:1025E000400B5F5F676574617474725F5F006807BA +:1025F0005F5F64656C5F5F00A7085F5F63616C6C21 +:102600005F5F005D065F5F6C745F5F00B6065F5FD3 +:1026100067745F5F0071065F5F65715F5F00CC0686 +:102620005F5F6C655F5F00A7065F5F67655F5F0068 +:10263000610C5F5F72657665727365645F5F000B46 +:102640000B6D6963726F707974686F6E0022086237 +:10265000797465636F646500C005636F6E737400A1 +:10266000430961736D5F7468756D620043056C6149 +:1026700062656C00A805616C69676E001504646191 +:10268000746100E30475696E7400B4036E6F7000CA +:10269000F1036D6F76009104616E645F003B03632C +:1026A0006D7000440361646400210373756200B6B9 +:1026B000036C736C00A8036C737200650361737222 +:1026C000005F036C6472005D046C64726200570406 +:1026D0006C64726800500373747200320473747215 +:1026E000620038047374726800C7016200CB026232 +:1026F0006C00DF02627800BB0470757368002A0307 +:10270000706F7000E805637073696400E9056370B9 +:10271000736965009D03776669005003636C7A00F6 +:10272000E804726269740066046D6F767700650470 +:102730006D6F76740052056D6F7677740089036D46 +:10274000727300CD0473646976008B0475646976D6 +:1027500000E2056C6472657800AD0573747265788B +:1027600000F7086275696C74696E7300F008456C57 +:102770006C697073697300EA0D53746F7049746506 +:10278000726174696F6E00070D426173654578630D +:10279000657074696F6E002D0F41726974686D65A4 +:1027A0007469634572726F7200970E41737365723C +:1027B00074696F6E4572726F7200210E417474728B +:1027C00069627574654572726F72001D0B427566A1 +:1027D0006665724572726F72009108454F46457288 +:1027E000726F7200F209457863657074696F6E00EC +:1027F0005B0F46696C654578697374734572726FD7 +:102800007200781146696C654E6F74466F756E6420 +:102810004572726F72000112466C6F6174696E6767 +:10282000506F696E744572726F7200160D47656E57 +:10283000657261746F724578697400200B496D7020 +:102840006F72744572726F72005C10496E64656ECF +:10285000746174696F6E4572726F7200830A496E9B +:102860006465784572726F7200AF114B6579626F63 +:10287000617264496E7465727275707400EA084B17 +:1028800065794572726F7200FF0B4C6F6F6B7570DC +:102890004572726F7200DC0B4D656D6F7279457217 +:1028A000726F7200BA094E616D654572726F720087 +:1028B000C6134E6F74496D706C656D656E7465649A +:1028C0004572726F7200A1074F534572726F7200AA +:1028D000810D4F766572666C6F774572726F72000C +:1028E000610C52756E74696D654572726F720094F9 +:1028F0000B53796E7461784572726F7200200A53BF +:10290000797374656D45786974002509547970652B +:102910004572726F72009911556E626F756E644CDC +:102920006F63616C4572726F7200960A56616C75C6 +:10293000654572726F7200B6115A65726F4469769E +:102940006973696F6E4572726F7200220C556E6901 +:10295000636F64654572726F72006F044E6F6E65CF +:1029600000380546616C7365001304547275650088 +:1029700090066F626A6563740017084E6F6E655447 +:1029800079706500F00B4F72646572656444696329 +:1029900074009503616273004403616C6C0013035F +:1029A000616E7900C20461726773007C05617272A6 +:1029B000617900E00362696E0058057B3A23627D0D +:1029C00000EB04626F6F6C00760962797465617266 +:1029D000726179005C056279746573000D0863614A +:1029E0006C6C61626C6500DC0363687200B40B633D +:1029F0006C6173736D6574686F64003F0C5F636F27 +:102A00006C6C656374696F6E73003F046469637412 +:102A100000FA0364697200B8066469766D6F640039 +:102A20007109656E756D6572617465009B046576EC +:102A3000616C001E046578656300250666696C7428 +:102A40006572003505666C6F617400350A66726FD9 +:102A50006D5F627974657300C00767657461747433 +:102A60007200D40773657461747472009D07676C9B +:102A70006F62616C73008C076861736174747200BB +:102A8000B70468617368007003686578007B03258C +:102A900023780028026964001603696E7400B60A80 +:102AA0006973696E7374616E636500B50A697373E7 +:102AB0007562636C617373008F0469746572006280 +:102AC000036C656E0027046C697374003B066C6FC1 +:102AD00063616C7300B9036D617000B1036D61785F +:102AE00000AF036D696E00CE0764656661756C7436 +:102AF000001E0A6E616D65647475706C6500420439 +:102B00006E65787400FD036F6374006C0325236F9A +:102B100000D1046F70656E001C036F72640088043E +:102B200070617468002D03706F77005405707269CE +:102B30006E74001A0572616E676500B70472656194 +:102B40006400D0047265707200A1087265766572C7 +:102B500073656400E705726F756E64005E06736FDF +:102B60007274656400620C7374617469636D65747A +:102B7000686F64002E0373756D00C405737570650E +:102B80007200BC0373797300D808746F5F62797444 +:102B9000657300FD057475706C65009D0474797033 +:102BA00065004E0576616C756500980577726974ED +:102BB0006500E6037A6970002303736570000A03F9 +:102BC000656E6400570473746570009D0473746FC0 +:102BD00070007C05636C65617200E004636F70795E +:102BE00000370866726F6D6B657973003303676534 +:102BF0007400E3056974656D730001046B65797396 +:102C000000BF07706F706974656D006C0A7365743E +:102C100064656661756C7400B40675706461746592 +:102C2000007D0676616C756573006B06617070657A +:102C30006E64003305636C6F736500B90473656E71 +:102C40006400B3057468726F7700A605636F756ED4 +:102C500074006306657874656E64007B05696E6454 +:102C6000657800630672656D6F7665001206696EA1 +:102C70007365727400BF04736F727400A7046A6F87 +:102C8000696E002905737472697000E5066C7374CF +:102C9000726970003B067273747269700026066672 +:102CA0006F726D61740032036B6579002507726580 +:102CB000766572736500010466696E6400D2057200 +:102CC00066696E6400E90672696E64657800B7052E +:102CD00073706C697400A5067273706C697400740B +:102CE0000A73746172747377697468001B08656E87 +:102CF0006473776974680049077265706C61636515 +:102D0000008709706172746974696F6E00150A72C8 +:102D1000706172746974696F6E00C6056C6F776557 +:102D2000720027057570706572005B0769737370B8 +:102D300061636500EB076973616C70686100A807E7 +:102D40006973646967697400DD076973757070651C +:102D50007200FC0769736C6F7765720025086974EF +:102D6000657261626C6500850573746172740097A9 +:102D70000C626F756E645F6D6574686F64007407D4 +:102D8000636C6F73757265002D09646963745F7697 +:102D900069657700270866756E6374696F6E0096C3 +:102DA0000967656E657261746F72004708697465C2 +:102DB0007261746F7200BF066D6F64756C6500B5EB +:102DC00005736C696365000F0764697363617264FE +:102DD00000720A646966666572656E6365009C11BF +:102DE000646966666572656E63655F75706461745B +:102DF0006500280C696E74657273656374696F6E23 +:102E0000000613696E74657273656374696F6E5F33 +:102E100075706461746500F70A69736469736A6F39 +:102E2000696E7400B908697373756273657400FC28 +:102E30000A6973737570657273657400270373652F +:102E40007400CE1473796D6D65747269635F646923 +:102E500066666572656E636500601B73796D6D658E +:102E6000747269635F646966666572656E63655FE7 +:102E700075706461746500F605756E696F6E00EDBE +:102E80000966726F7A656E7365740035046D6174DE +:102E90006800C00165001C02706900210473717232 +:102EA0007400C8036578700021036C6F67007A03B3 +:102EB000636F7300B10373696E00FE0374616E008B +:102EC0001B0461636F730050046173696E001F041B +:102ED0006174616E00CD056174616E320006046339 +:102EE00065696C003308636F70797369676E00936E +:102EF000046661627300E504666D6F64007D0566BB +:102F00006C6F6F7200A608697366696E69746500FC +:102F10003E056973696E66009E0569736E616E0099 +:102F20005B057472756E630025046D6F6466001C2A +:102F30000566726578700040056C64657870000203 +:102F4000076465677265657300870772616469610C +:102F50006E7300D1086D656D5F696E666F00B009B4 +:102F6000717374725F696E666F0097097374616341 +:102F70006B5F75736500AD09686561705F6C6F6349 +:102F80006B00560B686561705F756E6C6F636B00EC +:102F900073206D6178696D756D20726563757273EC +:102FA000696F6E2064657074682065786365656418 +:102FB000656400BD083C6D6F64756C653E008008FB +:102FC0003C6C616D6264613E00D40A3C6C69737450 +:102FD000636F6D703E00CC0A3C64696374636F6D0F +:102FE000703E0054093C736574636F6D703E00342D +:102FF000093C67656E657870723E0052083C7374D8 +:1030000072696E673E00E3073C737464696E3E004C +:10301000C70461726776006109627974656F7264D2 +:10302000657200E903626967008504657869740068 +:1030300089066C6974746C65003A08706C6174661A +:103040006F726D002105737464696E0008067374F5 +:10305000646F757400A30673746465727200BF07B1 +:1030600076657273696F6E006E0C76657273696F48 +:103070006E5F696E666F00A2046E616D6500170E6B +:10308000696D706C656D656E746174696F6E001C3E +:103090000F7072696E745F657863657074696F6EC6 +:1030A0000012067374727563740047077573747247 +:1030B00075637400BC047061636B001F0970616309 +:1030C0006B5F696E746F000706756E7061636B00ED +:1030D0000E0B756E7061636B5F66726F6D004D08ED +:1030E00063616C6373697A650061026763009B07C3 +:1030F000636F6C6C65637400910764697361626CE3 +:1031000065000406656E61626C65009A0969736505 +:103110006E61626C656400CB086D656D5F6672659B +:10312000650052096D656D5F616C6C6F630094049E +:1031300068656C70007305696E70757400E00B63F0 +:103140006F6C6C656374696F6E7300C0086D696342 +:10315000726F626974001005726573657400EA0528 +:10316000736C65657000C80C72756E6E696E675F12 +:1031700074696D6500D00570616E696300E90B7458 +:10318000656D706572617475726500A30474686919 +:1031900073006307617574686F727300F10B616E81 +:1031A0007469677261766974790055046C6F76652D +:1031B000002C0862616461626F6F6D00CD124D6911 +:1031C00063726F4269744469676974616C50696EB7 +:1031D0000007184D6963726F426974416E616C6FCC +:1031E000674469676974616C50696E0052104D697B +:1031F00063726F426974546F75636850696E0092B0 +:103200000C726561645F6469676974616C00FD0DCF +:1032100077726974655F6469676974616C00620BD9 +:10322000726561645F616E616C6F67002D0C77720F +:103230006974655F616E616C6F6700081173657416 +:103240005F616E616C6F675F706572696F6400EEDD +:103250001E7365745F616E616C6F675F7065726924 +:103260006F645F6D6963726F7365636F6E64730023 +:103270007A1E6765745F616E616C6F675F706572FF +:10328000696F645F6D6963726F7365636F6E64739A +:1032900000040A69735F746F756368656400E60A09 +:1032A0004D6963726F426974494F00020470696E20 +:1032B0003000030470696E3100010470696E3200E1 +:1032C000010470696E3300060470696E34000704EF +:1032D00070696E3500040470696E3600050470690B +:1032E0006E37000A0470696E38000B0470696E391D +:1032F00000530570696E313000520570696E3131CE +:1033000000510570696E313200500570696E3133BD +:1033100000570570696E313400560570696E31359D +:1033200000550570696E3136005A0570696E313985 +:1033300000300570696E323000870D4D6963726F21 +:10334000426974496D616765006205496D61676531 +:10335000004205696D6167650023057769647468DB +:1033600000FA0668656967687400B706696E766575 +:10337000727400B0097365745F706978656C00A43D +:10338000096765745F706978656C00A10A73686984 +:1033900066745F6C65667400BA0B73686966745F07 +:1033A000726967687400DF0873686966745F7570B6 +:1033B00000480A73686966745F646F776E00E2099B +:1033C0006D6F6E6F7370616365000F054845415204 +:1033D0005400CF0B48454152545F534D414C4C0073 +:1033E00015054841505059009303534144009B0533 +:1033F000534D494C4500A608434F4E46555345444E +:10340000002605414E475259000B0641534C454595 +:103410005000880953555250524953454400C6053F +:1034200053494C4C59003008464142554C4F555376 +:103430000005034D4548000A035945530004024E58 +:103440004F006E07434C4F434B313200DC06434C78 +:103450004F434B3100DF06434C4F434B3200DE06F7 +:10346000434C4F434B3300D906434C4F434B34003E +:10347000D806434C4F434B3500DB06434C4F434B80 +:103480003600DA06434C4F434B3700D506434C4FCA +:10349000434B3800D406434C4F434B39006C074331 +:1034A0004C4F434B3130006D07434C4F434B313150 +:1034B00000ED074152524F575F4E00C8084152522B +:1034C0004F575F4E4500E6074152524F575F450048 +:1034D000B5084152524F575F534500F007415252D1 +:1034E0004F575F5300A7084152524F575F53570041 +:1034F000F4074152524F575F5700DA084152524F7A +:10350000575F4E5700EB08545249414E474C450017 +:103510008F0D545249414E474C455F4C454654002F +:10352000510A4348455353424F41524400A1074476 +:1035300049414D4F4E4400610D4449414D4F4E4469 +:103540005F534D414C4C0084065351554152450048 +:10355000840C5351554152455F534D414C4C00EB47 +:1035600006524142424954005E03434F5700AB0E9E +:103570004D555349435F43524F5443484554005FB0 +:103580000C4D555349435F515541564552006C0D02 +:103590004D555349435F51554156455253003309E8 +:1035A0005049544348464F524B00E204584D415352 +:1035B0000055065041434D414E00B4065441524718 +:1035C000455400450654534849525400270B524F66 +:1035D0004C4C4552534B415445003C044455434BDD +:1035E00000A105484F55534500C808544F52544F49 +:1035F000495345005609425554544552464C5900CA +:10360000E90B535449434B46494755524500C205BF +:1036100047484F535400980553574F5244007D0775 +:1036200047495241464645004805534B554C4C00CE +:10363000C908554D4252454C4C41009705534E41E7 +:103640004B4500F10A414C4C5F4152524F575300D9 +:10365000C00A414C4C5F434C4F434B53005A0F4DF3 +:103660006963726F426974446973706C6179009127 +:103670000E7365745F6272696768746E6573730058 +:103680009E107365745F646973706C61795F6D6FB0 +:103690006465001F07646973706C61790086047348 +:1036A000686F770028067363726F6C6C0050056456 +:1036B000656C617900B806737472696465008E0484 +:1036C000776169740039046C6F6F70000B0463726A +:1036D0006F700098047465787400F60B536C69631E +:1036E0006564496D61676500BD0F5363726F6C6CF3 +:1036F000696E67537472696E670064026F6E008A48 +:10370000036F666600610569735F6F6E00C10646F0 +:10371000616361646500160E4D6963726F4269747E +:10372000427574746F6E00ED08627574746F6E5F2D +:103730006100EE08627574746F6E5F6200E60A697C +:10374000735F7072657373656400F90B7761735F03 +:103750007072657373656400FD0B6765745F7072EA +:103760006573736573005B154D6963726F426974AD +:10377000416363656C65726F6D65746572001E0DE3 +:10378000616363656C65726F6D65746572003405A5 +:103790006765745F780035056765745F7900360585 +:1037A0006765745F7A00F40A6765745F76616C75AB +:1037B000657300D40F63757272656E745F676573AD +:1037C0007475726500070A69735F67657374757253 +:1037D0006500D80B7761735F6765737475726500F8 +:1037E000180C6765745F676573747572657300A004 +:1037F000027570003704646F776E00DE046C6566D6 +:103800007400E50572696768740021076661636585 +:103810002075700036096661636520646F776E00FD +:10382000B6086672656566616C6C003102336700CC +:1038300094023667005A0238670031057368616B7D +:103840006500100F4D6963726F426974436F6D704C +:10385000617373005507636F6D70617373002D079B +:1038600068656164696E6700230D69735F63616CED +:103870006962726174656400020963616C696272F5 +:10388000617465004911636C6561725F63616C69A5 +:1038900062726174696F6E00F4126765745F6669C5 +:1038A000656C645F737472656E67746800B80B4D05 +:1038B0006963726F426974493243005D0369326320 +:1038C00000B6046164647200CB016E00740362751B +:1038D0006600F2067265706561740004056D7573AB +:1038E000696300A1096672657175656E6379007B15 +:1038F000086475726174696F6E0083057069746322 +:103900006800F20370696E002104706C6179009B9D +:10391000097365745F74656D706F008F09676574F6 +:103920005F74656D706F00DA0362706D004305743B +:1039300069636B73009F054241444459009D0742EF +:10394000415F44494E4700FC0842495254484441B3 +:103950005900C805424C5545530059054348415349 +:103960004500FC0944414441444144554D00480B45 +:10397000454E5445525441494E4552004207465522 +:103980004E4552414C00D30446554E4B00AA094ABD +:10399000554D505F444F574E00FD074A554D505FFF +:1039A0005550003D044E59414E006B034F444500B5 +:1039B000970A504F5745525F444F574E00010850E9 +:1039C0004F5745525F5550003A075052454C5544A9 +:1039D0004500EB0950554E43484C494E4500B10651 +:1039E000505954484F4E00C70852494E47544F4E05 +:1039F0004500640957415741574157414100170756 +:103A000057454444494E4700C401610067026123A1 +:103A1000002C0461233A31002E0461233A330076EE +:103A2000026132007002613400BB0461343A31003B +:103A3000B90461343A33000F03613A31000C036179 +:103A40003A32000A03613A34000B03613A3500DE72 +:103A50000462323A3100940262330093026234000D +:103A6000D80462343A3100DB0462343A3200920204 +:103A7000623500D90462353A31000C03623A3100F4 +:103A80000F03623A3200C6016300A502632300708F +:103A90000363233500BB056323353A3100B8056362 +:103AA00023353A32006E0463233A310067046323FE +:103AB0003A3800FC0463323A3200B5026333007CCA +:103AC0000463333A33007B0463333A3400B2026355 +:103AD0003400F90463343A3100FB0463343A3300B0 +:103AE000FC0463343A3400B3026335007804633570 +:103AF0003A31007B0463353A32007A0463353A3355 +:103B0000007D0463353A34000D03633A31000E033F +:103B1000633A32000F03633A33000803633A340018 +:103B20000403633A3800C1016400C202642300FF49 +:103B3000056423353A32000A0464233A32000B0448 +:103B400064233A3300D202643300D5026434001E89 +:103B50000464343A3100D4026435001F0464353AF9 +:103B600031001C0464353A32000A03643A3100091A +:103B700003643A32000803643A33000F03643A34B2 +:103B8000000E03643A35000D03643A360003036403 +:103B90003A3800BA0465333A3300F4026534003F22 +:103BA0000465343A3100F5026535003F0465363A64 +:103BB00033000B03653A31000803653A320009030C +:103BC000653A33000E03653A34000F03653A350059 +:103BD0000C03653A36000203653A3800E00465627A +:103BE0003A3800C3016600010266230035036623EC +:103BF0003500FD056623353A32004B0466233A3121 +:103C000000480466233A3200420466233A38001121 +:103C1000026632000803663A31000B03663A32004E +:103C20000A03663A33000D03663A34000103663A2C +:103C30003800C20167002102672300EA0467233AC3 +:103C40003100E80467233A3300FA0467333A31005D +:103C500036026734007D0467343A31007E046734ED +:103C60003A32003702673500FC0467353A31000903 +:103C700003673A31000A03673A32000B03673A33AD +:103C8000000103673A3800D7017200CB0472343A5E +:103C900032001C03723A31001F03723A32001E03D5 +:103CA000723A3300320C4D6963726F426974554148 +:103CB000525400770475617274001F04696E697450 +:103CC00000F5086261756472617465004904626997 +:103CD00074730042067061726974790041047069FE +:103CE0006E73008902747800CF02727800760772D2 +:103CF000656164616C6C00F908726561646C696E81 +:103D000065004B0872656164696E746F006A034FE9 +:103D1000444400DD044556454E004A0B4D6963722C +:103D20006F42697453504900CF03737069002604D1 +:103D30006D6F646500720473636C6B001D046D6FBE +:103D40007369009D046D69736F00890E77726974E1 +:103D5000655F72656164696E746F0069086E656F96 +:103D6000706978656C0069084E656F506978656C9C +:103D700000BE0672616E646F6D00660B67657472DB +:103D8000616E64626974730092047365656400A374 +:103D90000972616E6472616E676500AF0772616E71 +:103DA00064696E74002E0663686F696365000107BD +:103DB000756E69666F726D005305617564696F0099 +:103DC000AE0A417564696F4672616D6500270A72BB +:103DD000657475726E5F70696E00B806736F757288 +:103DE0006365005608636F707966726F6D007902C3 +:103DF0006F7300B705756E616D65009B077379730E +:103E00006E616D650062086E6F64656E616D650060 +:103E1000EC0772656C65617365001A074279746519 +:103E200073494F001E0654657874494F00F70877B0 +:103E300072697461626C650098076C697374646977 +:103E4000720060076D616368696E650020047369C4 +:103E50007A6500040A69735F706C6179696E670046 +:103E60006D0673706565636800AE037361790094D5 +:103E70000970726F6E6F756E636500B60473696E5C +:103E8000670031067468726F6174006E056D6F753E +:103E90007468006205737065656400D405646562CA +:103EA00075670043097472616E736C61746500D448 +:103EB00005726164696F004F06636F6E6669670023 +:103EC000BF0A73656E645F627974657300880D72F2 +:103ED0006563656976655F6279746573004E077224 +:103EE0006563656976650059066C656E6774680080 +:103EF000940571756575650026076368616E6E656A +:103F00006C00DA05706F77657200A80964617461EE +:103F10005F72617465007307616464726573730036 +:103F2000BA0567726F7570007B0C524154455F3261 +:103F300035304B42495400DB0A524154455F314D04 +:103F400042495400580A524154455F324D42495447 +:103F500000332E342E300066756E6374696F6E20E8 +:103F6000646F6573206E6F742074616B65206B6580 +:103F700079776F726420617267756D656E74730016 +:103F800066756E6374696F6E2074616B657320254E +:103F90006420706F736974696F6E616C2061726701 +:103FA000756D656E74732062757420256420776565 +:103FB000726520676976656E0066756E6374696FF9 +:103FC0006E206D697373696E672025642072657158 +:103FD000756972656420706F736974696F6E616C66 +:103FE00020617267756D656E74730066756E6374BB +:103FF000696F6E20657870656374656420617420F4 +:104000006D6F737420256420617267756D656E74C1 +:10401000732C20676F742025640027257127206189 +:104020007267756D656E742072657175697265640D +:1040300000657874726120706F736974696F6E6166 +:104040006C20617267756D656E7473206769766543 +:104050006E006578747261206B6579776F72642089 +:10406000617267756D656E747320676976656E0041 +:10407000627974656172726179286200617272613D +:10408000792827256327002C205B002C2000626103 +:10409000642074797065636F6465006F6E6C79205D +:1040A000736C6963657320776974682073746570D5 +:1040B0003D312028616B61204E6F6E652920617251 +:1040C0006520737570706F7274656400706F702016 +:1040D00066726F6D20656D707479206C6973740001 +:1040E0000300000000000000007061727365722020 +:1040F000636F756C64206E6F7420616C6C6F6361AC +:10410000746520656E6F756768206D656D6F727977 +:1041100000756E657870656374656420696E6465AA +:104120006E7400756E696E64656E7420646F65737D +:10413000206E6F74206D6174636820616E79206FEA +:104140007574657220696E64656E746174696F6EF2 +:10415000206C6576656C0063616E6E6F74206D69AE +:104160007820627974657320616E64206E6F6E6270 +:1041700079746573206C69746572616C7300696E23 +:1041800076616C69642073796E74617800252E2ADB +:1041900073005C2563005C5C005C6E005C72005C1C +:1041A00074005C7825303278005C752530347800F6 +:1041B0005C552530387800737472696E6720696EBB +:1041C0006469636573206D75737420626520696E20 +:1041D0007465676572732C206E6F7420257300738D +:1041E0007472696E6720696E646578206F757420DB +:1041F0006F662072616E6765003C25713E005472E7 +:104200006163656261636B20286D6F7374207265F2 +:1042100063656E742063616C6C206C617374293A01 +:104220000A00202046696C6520222571222C206C12 +:10423000696E65202564002C20696E2025710A00B6 +:1042400063616E277420636F6E76657274202573C8 +:1042500020746F20696E740063616E277420636F31 +:104260006E7665727420257320746F20666C6F61A2 +:1042700074006F626A656374202725732720697351 +:10428000206E6F742061207475706C65206F7220D1 +:104290006C69737400726571756573746564206C04 +:1042A000656E67746820256420627574206F626A89 +:1042B00065637420686173206C656E67746820257F +:1042C0006400257120696E6469636573206D757380 +:1042D0007420626520696E7465676572732C206E48 +:1042E0006F7420257300257120696E646578206FD6 +:1042F0007574206F662072616E6765006F626A6513 +:104300006374206F662074797065202725732720D9 +:10431000686173206E6F206C656E282900272573F5 +:1043200027206F626A65637420646F6573206E6F07 +:104330007420737570706F7274206974656D206479 +:10434000656C6574696F6E0027257327206F626A3C +:10435000656374206973206E6F7420737562736374 +:104360007269707461626C650027257327206F6223 +:104370006A65637420646F6573206E6F7420737553 +:1043800070706F7274206974656D206173736967F2 +:104390006E6D656E74006F626A6563742077697410 +:1043A00068206275666665722070726F746F636FE5 +:1043B0006C20726571756972656400756E657870E0 +:1043C0006563746564206B6579776F7264206172D0 +:1043D00067756D656E7420272571270066756E639D +:1043E00074696F6E20676F74206D756C7469706C82 +:1043F000652076616C75657320666F7220617267E7 +:10440000756D656E742027257127006C69737420A3 +:1044100072657175697265640063616E27742073DB +:104420006574206174747269627574650004656FE7 +:1044300072086C736C0C6C7372106173721461642B +:1044400063187362631C726F7220747374246E65D8 +:104450006728636D702C636D6E306F7272346D758A +:104460006C386269633C6D766E006571016E650241 +:104470006373036363046D6905706C067673077676 +:1044800063086869096C730A67650B6C740C677460 +:104490000D6C65272573272065787065637473201C +:1044A0006174206D6F737420722564002725732753 +:1044B0002065787065637473206120726567697325 +:1044C000746572002725732720657870656374739F +:1044D000207B72302C2072312C202E2E2E7D002736 +:1044E000257327206578706563747320616E206979 +:1044F0006E7465676572002725732720696E746581 +:10450000676572203078257820646F6573206E6F40 +:10451000742066697420696E206D61736B20307839 +:1045200025780027257327206578706563747320CC +:1045300061206C6162656C006C6162656C2027258E +:104540007127206E6F7420646566696E65640075FE +:104550006E737570706F72746564205468756D62E7 +:1045600020696E737472756374696F6E202725738A +:1045700027207769746820256420617267756D65EE +:104580006E747300272573272065787065637473D4 +:1045900020616E2061646472657373206F6620749D +:1045A000686520666F726D205B612C20625D006221 +:1045B00072616E6368206E6F7420696E2072616E26 +:1045C00067650063616E206F6E6C79206861766547 +:1045D00020757020746F203420706172616D657475 +:1045E00065727320746F205468756D6220617373F7 +:1045F000656D626C7900706172616D65746572736E +:10460000206D7573742062652072656769737465C7 +:10461000727320696E2073657175656E63652072B3 +:104620003020746F2072330000723000017231004C +:1046300002723200037233000472340005723500D6 +:1046400006723600077237000872380009723900A6 +:104650000A7231300B7231310C7231320D723133DA +:104660000E7231340F7231350A736C000B667000B4 +:104670000D7370000E6C72000F706300696C6C65D6 +:1046800067616C206D6F64650066696C65206E6F94 +:104690007420666F756E6400202E3F2C2D494945AD +:1046A0004141414155414945554F524C5759575247 +:1046B0004C57594D4E4E4451535346542F2F5A5A2E +:1046C0005644432A4A2A2A2A45414F414F55422AF5 +:1046D0002A442A2A472A2A472A2A502A2A542A2A96 +:1046E0004B2A2A4B2A2A5555552A2A2A2A2A59481A +:1046F000484541484F4858585258485858585848C3 +:104700002A2A2A2A2A2A58582A2A482A4848582A25 +:10471000482A48482A2A2A2A2A5959595757572A8B +:104720002A2A2A2A2A2A2A2A582A2A2A2A2A2A2ABB +:104730002A2A2A2A582A2A4C4D4E0000000000A49A +:10474000A4A4A4A4A48484A4A48484848484848449 +:1047500044444444444C4C4C484C4040404040400D +:104760004444444448404C440000B4B4B494949449 +:104770004E4E4E4E4E4E4E4E4E4E4E4E4B4B4B4B65 +:104780004B4B4B4B4B4B4B4B80C1C1001212120891 +:104790000B090B0E0F0B100C06060E0C0E0C0B0863 +:1047A000080B0A09080808080803050202020202A9 +:1047B00002060608060602090402010E0F0F0F0E7C +:1047C0000E080202070201070202070202080202A3 +:1047D000060202070204070104050580C1C1C1C128 +:1047E00000000000000000000000000000000000C9 +:1047F000000010101010080C080440242020240091 +:1048000000242020242020002000000000000000C0 +:10481000000000000404040000000000000000008C +:104820000404040000000000004F4B0050686F6E4D +:10483000656D657320746F6F206C6F6E6700496CD7 +:104840006C6567616C2070697463680050686F6E96 +:10485000656D65206E6F7420756E64657273746F1C +:104860006F6400496E7075742070686F6E656D6559 +:104870007300494E5445524E414C204552524F52BE +:104880003A20496C6C6567616C2070686F6E656D6D +:104890006520696E64657800496E736572742042A4 +:1048A0007265616474680D0050726F63657373653F +:1048B000642070686F6E656D6573000012121208D7 +:1048C000080808080B060C0A05050B0A0A0A09085D +:1048D0000709070608060707070205020202020287 +:1048E000020606070606020803011E0D0C0C0C0E3C +:1048F0000906010205010106010206010208020281 +:10490000040202060104060104C7FF2A31323334CF +:1049100035363738696E7428292061726720322055 +:104920006D757374206265203E3D203220616E6497 +:10493000203C3D20333600696E76616C69642073DB +:10494000796E74617820666F7220696E7465676530 +:104950007220776974682062617365202564006342 +:104960006F6D706C65782076616C756573206E6F05 +:104970007420737570706F7274656400696E76610F +:104980006C69642073796E74617820666F72206E32 +:10499000756D62657200285B005D29002571280035 +:1049A0007B003C76616C75653E00706F7069746564 +:1049B0006D28293A2064696374696F6E6172792089 +:1049C000697320656D7074790064696374696F6ED2 +:1049D00061727920757064617465207365717565A5 +:1049E0006E636520686173207468652077726F6EEE +:1049F00067206C656E67746800646963745F6974CE +:104A0000656D7300646963745F6B657973006469D5 +:104A100063745F76616C75657300492F4F206F700A +:104A200065726174696F6E206F6E20636C6F736561 +:104A3000642066696C65004E6F206D6F726520732F +:104A4000746F726167652073706163650064697675 +:104A50006973696F6E206279207A65726F00636195 +:104A60006E277420636F6E7665727420696E66209F +:104A7000746F20696E740063616E277420636F6EBB +:104A800076657274204E614E20746F20696E7400DA +:104A90006F766572666C6F7720636F6E7665727481 +:104AA000696E67206C6F6E6720696E7420746F206A +:104AB0006D616368696E6520776F7264006E65670B +:104AC000617469766520736869667420636F756EBA +:104AD00074006D6963726F3A6269742077697468F3 +:104AE000206E524635313832320076312E372D392C +:104AF0002D6762653032306562206F6E2032303152 +:104B0000362D30342D313800312E30003D3D3D3DC5 +:104B10003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DC5 +:104B20003D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3DB5 +:104B30003D3D3D3D3D3D3D0D0025733A0D0A0D0ABD +:104B400000206964782020202070686F6E656D6594 +:104B500020206C656E6774682020737472657373AF +:104B60000D00202533692020202020202563256387 +:104B700020202020202025336920202020202020D4 +:104B800025690D0A00202533692020202020203FA0 +:104B90003F20202020202025336920202020202095 +:104BA0002025690D0A0046696E616C20646174619C +:104BB00020666F7220737065656368206F7574700E +:104BC00075742E202569206672616D65733A0D0A31 +:104BD0000D0A0020666C61677320616D706C312076 +:104BE000667265713120616D706C3220667265711C +:104BF0003220616D706C332066726571332070698C +:104C00007463680D002D2D2D2D2D2D2D2D2D2D2D69 +:104C10002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DC4 +:104C20002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DB4 +:104C30002D2D2D2D2D0D002535692025356920259B +:104C400035692025356920253569202535692025D8 +:104C50003569202535690D0A003C67656E6572610E +:104C6000746F72206F626A65637420272571272034 +:104C700061742025703E0063616E27742073656E39 +:104C800064206E6F6E2D4E6F6E652076616C75655B +:104C900020746F2061206A7573742D73746172744F +:104CA00065642067656E657261746F720067656E1A +:104CB000657261746F722069676E6F7265642047F8 +:104CC000656E657261746F724578697400000000EA +:104CD00000000000000003030303030000000000C5 +:104CE00000000000000000000000000000030101BF +:104CF00001010101010101010101010101454545D8 +:104D00004545454545454501010101010101595907 +:104D10005959595919191919191919191919191903 +:104D200019191919191919190101010101016969E3 +:104D300069696969292929292929292929292929E3 +:104D40002929292929292929010101010000000116 +:104D50000102020202030303030303030304040426 +:104D600004040404040404040404040404056E6F2D +:104D7000206D6F64756C65206E616D6564202725FC +:104D800073270063616E6E6F7420706572666F7258 +:104D90006D2072656C617469766520696D706F72E3 +:104DA00074006E6F206D6F64756C65206E616D654B +:104DB000642027257127005F5F696E69745F5F2E2D +:104DC00070790057656C636F6D6520746F204D6955 +:104DD00063726F507974686F6E206F6E20746865AF +:104DE000206D6963726F3A626974210A0A5472799C +:104DF00020746865736520636F6D6D616E64733ACE +:104E00000A2020646973706C61792E7363726F6C11 +:104E10006C282748656C6C6F27290A202072756EF4 +:104E20006E696E675F74696D6528290A2020736C4E +:104E30006565702831303030290A2020627574741D +:104E40006F6E5F612E69735F70726573736564283E +:104E5000290A5768617420646F207468657365203F +:104E6000636F6D6D616E647320646F3F2043616E8C +:104E700020796F7520696D70726F76652074686532 +:104E80006D3F2048494E543A20757365207468651B +:104E900020757020616E6420646F776E0A61727293 +:104EA0006F77206B65797320746F20676574207944 +:104EB0006F757220636F6D6D616E642068697374C5 +:104EC0006F72792E20507265737320746865205458 +:104ED0004142206B657920746F206175746F2D637A +:104EE0006F6D706C6574650A756E66696E6973685E +:104EF000656420776F7264732028736F202764695C +:104F000027206265636F6D65732027646973706C19 +:104F100061792720616674657220796F75207072DF +:104F200065737320544142292E2054686573650AC5 +:104F3000747269636B7320736176652061206C6F96 +:104F400074206F6620747970696E6720616E6420CA +:104F50006C6F6F6B20636F6F6C210A0A4578706C01 +:104F60006F72653A0A54797065202768656C7028FD +:104F7000736F6D657468696E67292720746F20668A +:104F8000696E64206F75742061626F757420697436 +:104F90002E2054797065202764697228736F6D65BF +:104FA0007468696E67292720746F207365652077A0 +:104FB0006861740A69742063616E20646F2E2054E6 +:104FC000797065202764697228292720746F2073FF +:104FD00065652077686174207374756666206973EF +:104FE00020617661696C61626C652E20466F72206B +:104FF000676F6F646E6573732073616B652C0A64F1 +:105000006F6E277420747970652027696D706F72D8 +:10501000742074686973272E0A0A436F6E74726F66 +:105020006C20636F6D6D616E64733A0A2020435487 +:10503000524C2D4320202020202020202D2D207375 +:10504000746F7020612072756E6E696E6720707269 +:105050006F6772616D0A20204354524C2D4420200A +:105060002020202020202D2D206F6E206120626CBA +:10507000616E6B206C696E652C20646F20612073FB +:105080006F6674207265736574206F66207468653E +:10509000206D6963726F3A6269740A20204354522A +:1050A0004C2D4520202020202020202D2D20656EF5 +:1050B000746572207061737465206D6F64652C2057 +:1050C0007475726E696E67206F6666206175746FA5 +:1050D0002D696E64656E740A0A417661696C61625D +:1050E0006C65206D6F64756C65733A20616E7469D0 +:1050F000677261766974792C2061727261792C20F3 +:10510000636F6C6C656374696F6E732C2067632CBE +:10511000206C6F76652C206D6174682C0A6D696354 +:10512000726F707974686F6E2C206D757369632C63 +:10513000206E656F706978656C2C206F732C2072FF +:105140006164696F2C2072616E646F6D2C207370C6 +:10515000656563682C207374727563742C20737991 +:10516000732C20746869730A0A466F72206D6F721F +:105170006520696E666F726D6174696F6E20616221 +:105180006F757420507974686F6E2C20766973691E +:10519000743A20687474703A2F2F707974686F6E47 +:1051A0002E6F72672F0A546F2066696E64206F75C8 +:1051B000742061626F7574204D6963726F507974E9 +:1051C000686F6E2C2076697369743A206874747005 +:1051D0003A2F2F6D6963726F707974686F6E2E6FDE +:1051E00072672F0A507974686F6E2F6D6963726FE2 +:1051F0003A62697420646F63756D656E7461746979 +:105200006F6E20697320686572653A2068747470E7 +:10521000733A2F2F6D6963726F6269742D6D6963C4 +:10522000726F707974686F6E2E72656164746865F0 +:10523000646F63732E696F2F0A004D6963726F424A +:105240006974416363656C65726F6D657465722026 +:10525000747970650A006F626A6563742000206962 +:1052600073206F6620747970652025710A00202DE7 +:105270002D200055736566756C2073747566662005 +:10528000746F20636F6E74726F6C20746865206D2C +:105290006963726F3A6269742068617264776172DF +:1052A000652E0A00507574206D6963726F3A6269E9 +:1052B0007420696E2070616E69632829206D6F64A7 +:1052C0006520616E6420646973706C617920616E21 +:1052D00020756E686170707920666163652E0A5072 +:1052E0007265737320726573657420627574746F70 +:1052F0006E20746F20657869742070616E69632810 +:1053000029206D6F64652E0A00507574206D6963E5 +:10531000726F3A62697420746F20736C65657028CF +:1053200074696D652920666F7220736F6D65206DDD +:10533000696C6C697365636F6E64732028312073C8 +:1053400065636F6E64203D2031303030206D7329ED +:10535000206F662074696D652E0A736C6565702810 +:105360003230303029206769766573206D69637249 +:105370006F3A62697420612032207365636F6E64D6 +:10538000206E61702E0A0052657475726E207275FF +:105390006E6E696E675F74696D65282920696E207D +:1053A0006D696C6C697365636F6E64732073696E8D +:1053B0006365206D6963726F3A6269742773206C4C +:1053C0006173742072657365742E0A00526574757A +:1053D000726E206D6963726F3A626974277320740C +:1053E000656D706572617475726520696E206465A3 +:1053F00067726565732043656C636975732E0A0077 +:10540000446574656374206D6963726F3A62697490 +:105410002773206D6F76656D656E7420696E20331D +:10542000442E0A4974206D6561737572657320742A +:10543000696C7420285820616E6420592920616E9F +:10544000642075702D646F776E20285A29206D6F47 +:1054500074696F6E2E0A0052657475726E206D69E4 +:1054600063726F3A62697427732074696C742028C0 +:105470005820616363656C65726174696F6E292081 +:10548000696E206D696C6C692D6727732E0A005256 +:10549000657475726E206D6963726F3A6269742704 +:1054A000732074696C7420285920616363656C658E +:1054B000726174696F6E2920696E206D696C6C6908 +:1054C0002D6727732E0A0052657475726E206D6900 +:1054D00063726F3A62697427732075702D646F77F9 +:1054E0006E206D6F74696F6E20285A20616363654A +:1054F0006C65726174696F6E2920696E206D696CCC +:105500006C692D6727732E0A5A20697320612070F9 +:105510006F736974697665206E756D626572207748 +:1055200068656E206D6F76696E672075702E204DF0 +:105530006F76696E6720646F776E2C205A206973CE +:105540002061206E65676174697665206E756D6295 +:1055500065722E0A006D6963726F3A62697427730F +:105560002027412720627574746F6E2E205768655E +:105570006E20627574746F6E20697320707265732B +:1055800073656420646F776E2C2069735F70726539 +:1055900073736564282920697320547275652E0A17 +:1055A000006D6963726F3A6269742773202742271E +:1055B00020627574746F6E2E205768656E20627558 +:1055C00074746F6E206973207072657373656420E4 +:1055D000646F776E2C2069735F7072657373656496 +:1055E000282920697320547275652E0A00496620A7 +:1055F00074686520627574746F6E206973207072B0 +:10560000657373656420646F776E2C2069735F70B7 +:1056100072657373656428292069732054727565F7 +:105620002C20656C73652046616C73652E0A0055ED +:105630007365207761735F70726573736564282981 +:1056400020746F206C6561726E20696620746865D5 +:1056500020627574746F6E20776173207072657349 +:105660007365642073696E636520746865206C617E +:1056700073742074696D650A7761735F7072657306 +:105680007365642829207761732063616C6C65649D +:105690002E2052657475726E732054727565206F7A +:1056A000722046616C73652E0A005573652067652C +:1056B000745F70726573736573282920746F206737 +:1056C0006574207468652072756E6E696E672074EB +:1056D0006F74616C206F6620627574746F6E2070D9 +:1056E0007265737365732C20616E6420616C736FD7 +:1056F0000A7265736574207468697320636F756ED0 +:1057000074657220746F207A65726F2E0A00476983 +:10571000766573206120636F6D70617373206865B7 +:105720006164696E67206265747765656E20302DEF +:1057300033363020776974682030206173206E6FB3 +:105740007274682E0A00557365206D6963726F3A32 +:10575000626974277320636F6D7061737320746F57 +:10576000206465746563742074686520646972657B +:105770006374696F6E206974206973206865616461 +:10578000696E6720696E2E0A54686520636F6D70BC +:105790006173732063616E20646574656374206D4A +:1057A00061676E65746963206669656C64732E0A4F +:1057B000497420757365732074686520456172743F +:1057C000682773206D61676E65746963206669651B +:1057D0006C6420746F2064657465637420646972FE +:1057E000656374696F6E2E0A004966206D69637285 +:1057F0006F3A626974277320636F6D7061737320F1 +:1058000069735F63616C69627261746564282920E1 +:10581000616E642061646A757374656420666F727A +:105820002061636375726163792C2072657475728F +:105830006E20547275652E0A496620636F6D706123 +:105840007373206861736E2774206265656E2061D2 +:10585000646A757374656420666F72206163637532 +:10586000726163792C2072657475726E2046616C6A +:1058700073652E0A004966206D6963726F3A62692A +:105880007420697320636F6E66757365642C206382 +:10589000616C69627261746528292074686520638F +:1058A0006F6D7061737320746F2061646A757374B7 +:1058B0002074686520697473206163637572616325 +:1058C000792E0A49742077696C6C2061736B20799A +:1058D0006F7520746F20726F7461746520746865D1 +:1058E0002064657669636520746F20647261772037 +:1058F0006120636972636C65206F6E207468652037 +:10590000646973706C61792E0A0052657365742046 +:105910006D6963726F3A626974277320636F6D708B +:10592000617373207573696E6720636C6561725F64 +:1059300063616C6962726174696F6E282920636F9C +:105940006D6D616E642E0A52756E2063616C6962C2 +:1059500072617465282920746F20696D70726F768A +:10596000652061636375726163792E0A0052657404 +:1059700075726E206D61676E657469632066696516 +:105980006C6420646574656374656420616C6F6E1B +:1059900067206D6963726F3A6269742773205820BB +:1059A000617869732E0A557375616C6C792C20745B +:1059B000686520636F6D70617373207265747572B2 +:1059C0006E73207468652065617274682773206D3A +:1059D00061676E65746963206669656C6420696ED1 +:1059E000206D6963726F2D5465736C6120756E69EB +:1059F00074732E0A556E6C6573732E2E2E61207390 +:105A000074726F6E67206D61676E657420697320B4 +:105A10006E6561726279210A0052657475726E203A +:105A20006D61676E65746963206669656C64206486 +:105A30006574656374656420616C6F6E67206D6961 +:105A400063726F3A626974277320592061786973B1 +:105A50002E0A557375616C6C792C2074686520630F +:105A60006F6D706173732072657475726E732074DC +:105A700068652065617274682773206D61676E6563 +:105A8000746963206669656C6420696E206D696362 +:105A9000726F2D5465736C6120756E6974732E0A74 +:105AA000556E6C6573732E2E2E61207374726F6E3B +:105AB00067206D61676E6574206973206E65617221 +:105AC0006279210A0052657475726E206D61676E8D +:105AD00065746963206669656C64206465746563D8 +:105AE00074656420616C6F6E67206D6963726F3AD4 +:105AF0006269742773205A20617869732E0A55737E +:105B000075616C6C792C2074686520636F6D7061B1 +:105B100073732072657475726E7320746865206586 +:105B2000617274682773206D61676E6574696320A4 +:105B30006669656C6420696E206D6963726F2D54AF +:105B400065736C6120756E6974732E0A556E6C6591 +:105B500073732E2E2E61207374726F6E67206D61C9 +:105B6000676E6574206973206E6561726279210ABF +:105B70000052657475726E20737472656E67746816 +:105B8000206F66206D61676E657469632066696564 +:105B90006C642061726F756E64206D6963726F3A18 +:105BA0006269742E0A006D6963726F3A62697427C4 +:105BB0007320357835204C454420646973706C61DE +:105BC000792E0A005573652073686F77287829202D +:105BD000746F207072696E742074686520737472BB +:105BE000696E67206F7220696D6167657320277821 +:105BF0002720746F2074686520646973706C617904 +:105C00002E205472792073686F77282748692127DE +:105C1000292E0A5573652073686F7728732C2069C5 +:105C20002920746F2073686F7720737472696E67B0 +:105C3000202773272C206F6E652063686172616373 +:105C400074657220617420612074696D65207769C4 +:105C5000746820612064656C6179206F660A276929 +:105C600027206D696C6C697365636F6E64732E0AAF +:105C700000557365207363726F6C6C2873292074F0 +:105C80006F207363726F6C6C20746865207374721C +:105C9000696E6720277327206163726F73732074A6 +:105CA000686520646973706C61792E0A557365208C +:105CB0007363726F6C6C28732C20692920746F20B9 +:105CC0007363726F6C6C20737472696E67202773D4 +:105CD00027207769746820612064656C6179206F82 +:105CE0006620276927206D696C6C697365636F6E28 +:105CF00064732061667465720A6561636820636815 +:105D0000617261637465722E0A0055736520636C5D +:105D1000656172282920746F20636C656172206D43 +:105D20006963726F3A626974277320646973706C77 +:105D300061792E0A00557365206765745F70697814 +:105D4000656C28782C20792920746F207265747511 +:105D5000726E2074686520646973706C6179277352 +:105D6000206272696768746E657373206174204C79 +:105D7000454420706978656C2028782C79292E0A92 +:105D80004272696768746E6573732063616E206226 +:105D9000652066726F6D203020284C454420697361 +:105DA000206F66662920746F203920286D6178691C +:105DB0006D756D204C4544206272696768746E652C +:105DC0007373292E0A00557365207365745F7069BB +:105DD00078656C28782C20792C20622920746F201B +:105DE0007365742074686520646973706C617920D0 +:105DF0006174204C454420706978656C2028782CAB +:105E0000792920746F206272696768746E65737394 +:105E1000202762270A77686963682063616E2062C1 +:105E20006520736574206265747765656E20302027 +:105E3000286F66662920746F2039202866756C6C7F +:105E4000206272696768746E657373292E0A005543 +:105E50007365206F6E282920746F207475726E2010 +:105E60006F6E2074686520646973706C61792E0AA6 +:105E700000557365206F6666282920746F2074753D +:105E8000726E206F66662074686520646973706C3A +:105E900061792E0A005573652069735F6F6E28293A +:105EA00020746F2071756572792069662074686549 +:105EB000206D6963726F3A62697427732064697335 +:105EC000706C6179206973206F6E2028547275653B +:105ED00029206F72206F6666202846616C736529E1 +:105EE0002E0A006D6963726F3A62697427732070BD +:105EF000696E2030206F6E2074686520676F6C6457 +:105F0000206564676520636F6E6E6563746F722EC3 +:105F10000A006D6963726F3A626974277320706951 +:105F20006E2031206F6E2074686520676F6C64206E +:105F30006564676520636F6E6E6563746F722E0AA9 +:105F4000006D6963726F3A62697427732070696EBD +:105F50002032206F6E2074686520676F6C64206546 +:105F600064676520636F6E6E6563746F722E0A00DE +:105F70006D6963726F3A62697427732070696E206D +:105F800033206F6E2074686520676F6C64206564D1 +:105F9000676520636F6E6E6563746F722E0A006DA5 +:105FA0006963726F3A62697427732070696E203476 +:105FB000206F6E2074686520676F6C64206564676D +:105FC0006520636F6E6E6563746F722E0A006D6973 +:105FD00063726F3A62697427732070696E2035208E +:105FE0006F6E2074686520676F6C642065646765F8 +:105FF00020636F6E6E6563746F722E0A006D696345 +:10600000726F3A62697427732070696E2036206F50 +:106010006E2074686520676F6C6420656467652016 +:10602000636F6E6E6563746F722E0A006D696372C2 +:106030006F3A62697427732070696E2037206F6E23 +:106040002074686520676F6C6420656467652063F1 +:106050006F6E6E6563746F722E0A006D6963726F86 +:106060003A62697427732070696E2038206F6E2041 +:1060700074686520676F6C64206564676520636F72 +:106080006E6E6563746F722E0A006D6963726F3A8B +:1060900062697427732070696E2039206F6E2074D6 +:1060A000686520676F6C64206564676520636F6E48 +:1060B0006E6563746F722E0A006D6963726F3A6267 +:1060C000697427732070696E203130206F6E2074E0 +:1060D000686520676F6C64206564676520636F6E18 +:1060E0006E6563746F722E0A006D6963726F3A6237 +:1060F000697427732070696E203131206F6E2074AF +:10610000686520676F6C64206564676520636F6EE7 +:106110006E6563746F722E0A006D6963726F3A6206 +:10612000697427732070696E203132206F6E20747D +:10613000686520676F6C64206564676520636F6EB7 +:106140006E6563746F722E0A006D6963726F3A62D6 +:10615000697427732070696E203133206F6E20744C +:10616000686520676F6C64206564676520636F6E87 +:106170006E6563746F722E0A006D6963726F3A62A6 +:10618000697427732070696E203134206F6E20741B +:10619000686520676F6C64206564676520636F6E57 +:1061A0006E6563746F722E0A006D6963726F3A6276 +:1061B000697427732070696E203135206F6E2074EA +:1061C000686520676F6C64206564676520636F6E27 +:1061D0006E6563746F722E0A006D6963726F3A6246 +:1061E000697427732070696E203136206F6E2074B9 +:1061F000686520676F6C64206564676520636F6EF7 +:106200006E6563746F722E0A006D6963726F3A6215 +:10621000697427732070696E203139206F6E207485 +:10622000686520676F6C64206564676520636F6EC6 +:106230006E6563746F722E0A006D6963726F3A62E5 +:10624000697427732070696E203230206F6E20745D +:10625000686520676F6C64206564676520636F6E96 +:106260006E6563746F722E0A006D6963726F3A62B5 +:1062700069742C2077726974655F646967697461F9 +:106280006C2863686F6963652920746F2074686582 +:106290002070696E2E20596F7520686176652074B4 +:1062A000776F202763686F696365272076616C7557 +:1062B00065732C0A3020286C6F29206F72203120E2 +:1062C000286869292E0A006D6963726F3A626974E1 +:1062D0002C20726561645F6469676974616C282948 +:1062E0002076616C75652066726F6D20746865201C +:1062F00070696E2061732065697468657220302052 +:10630000286C6F29206F72203120286869292E0A95 +:10631000006D6963726F3A6269742C2077726974D8 +:10632000655F616E616C6F672876616C75652920A9 +:10633000746F207468652070696E2E20596F752007 +:1063400063616E2075736520616E792076616C756E +:1063500065206265747765656E0A3020616E642021 +:10636000313032332E0A006D6963726F3A6269749C +:106370002C20726561645F616E616C6F67282920F3 +:1063800076616C75652066726F6D2074686520702B +:10639000696E2E20576F772C20616E616C6F6720BD +:1063A000686173206C6F7473206F662076616C7502 +:1063B00065730A2830202D203635353335292E20B7 +:1063C0004469676974616C20686173206F6E6C79D1 +:1063D000203020616E6420312E0A004966207069E9 +:1063E0006E2069735F746F75636865642829206F18 +:1063F0006E206D6963726F3A6269742C20726574E5 +:1064000075726E20547275652E204966206E6F7409 +:1064100068696E6720697320746F756368696E6759 +:10642000207468652070696E2C0A72657475726ECE +:106430002046616C73652E0A00436F6D6D756E6941 +:10644000636174652077697468206F6E65206F7270 +:10645000206D6F7265206E616D656420646576697C +:1064600063657320636F6E6E656374656420746F1B +:10647000206D6963726F3A6269742E2045616368AA +:10648000206E616D65640A64657669636520686184 +:106490007320616E202761646472657373272C20FA +:1064A000636F6D6D756E6963617465732075736973 +:1064B0006E67204932432C20616E6420636F6E6EDC +:1064C0006563747320746F2074686520492F4F20B2 +:1064D00070696E732E0A00557365207265616428B9 +:1064E000616464726573732C206E2920746F20724E +:1064F00065616420276E2720627974657320667257 +:106500006F6D2074686520646576696365207769BE +:106510007468207468697320616464726573732E93 +:106520000A00557365207772697465286164647226 +:106530006573732C206275666665722920746F20FE +:10654000777269746520746F20746865202762759E +:106550006666657227206F662074686520646576BC +:1065600069636520617420746869732027616464BD +:1065700072657373272E0A0043726561746520612A +:106580006E6420757365206275696C742D696E2068 +:10659000494D4147455320746F2073686F77206FD2 +:1065A0006E2074686520646973706C61792E205563 +:1065B00073653A0A496D616765280A2020273039DA +:1065C0003039303A270A20202739393939393A27E2 +:1065D0000A20202739393939393A270A202027302B +:1065E000393939303A270A20202730303930303ACB +:1065F00027290A2E2E2E746F206D616B6520612075 +:106600006E65772035783520686561727420696D14 +:106610006167652E204E756D6265727320676F200D +:1066200066726F6D203020286F66662920746F2097 +:10663000392028627269676874657374292E204E48 +:106640006F74650A74686520636F6C6F6E20273AFB +:106650002720746F207365742074686520656E64EC +:10666000206F66206120726F772E0A005265747564 +:10667000726E20746865207769647468206F662084 +:1066800074686520696D61676520696E207069783E +:10669000656C732E0A0052657475726E207468659D +:1066A00020686569676874206F6620746865206972 +:1066B0006D61676520696E20706978656C732E0A5C +:1066C00000557365206765745F706978656C28781C +:1066D0002C20792920746F2072657475726E207475 +:1066E000686520696D6167652773206272696768F4 +:1066F000746E657373206174204C45442070697812 +:10670000656C2028782C79292E0A42726967687492 +:106710006E6573732063616E2062652066726F6DB3 +:10672000203020284C4544206973206F666629205C +:10673000746F203920286D6178696D756D204C4526 +:1067400044206272696768746E657373292E0A004B +:10675000557365207365745F706978656C28782C53 +:1067600020792C20622920746F207365742074684E +:1067700065204C454420706978656C2028782C7918 +:106780002920696E2074686520696D6167652074D1 +:106790006F206272696768746E6573730A27622777 +:1067A0002077686963682063616E20626520736585 +:1067B00074206265747765656E203020286F666688 +:1067C0002920746F2039202866756C6C20627269EC +:1067D0006768746E657373292E0A0055736520739C +:1067E000686966745F6C65667428692920746F2017 +:1067F0006D616B65206120636F7079206F66207416 +:10680000686520696D61676520627574206D6F76BB +:1068100065642027692720706978656C7320746F20 +:1068200020746865206C6566742E0A0055736520B7 +:1068300073686966745F726967687428692920746F +:106840006F206D616B65206120636F7079206F66CA +:106850002074686520696D61676520627574206DBC +:106860006F7665642027692720706978656C7320CE +:10687000746F0A7468652072696768742E0A00551F +:1068800073652073686966745F7570286929207460 +:106890006F206D616B65206120636F7079206F667A +:1068A0002074686520696D61676520627574206D6C +:1068B0006F7665642027692720706978656C73207E +:1068C00075702E0A005573652073686966745F647D +:1068D0006F776E28692920746F206D616B65206168 +:1068E00020636F7079206F662074686520696D6120 +:1068F000676520627574206D6F766564202769274F +:1069000020706978656C7320646F776E2E0A00556D +:10691000736520636F7079282920746F206D616B17 +:10692000652061206E657720657861637420636FF0 +:106930007079206F662074686520696D6167652EC7 +:106940000A005573652063726F702878312C2079A6 +:10695000312C2078322C2079322920746F206D61FF +:106960006B652061206375742D6F757420636F7083 +:1069700079206F662074686520696D61676520778E +:106980006865726520636F6F7264696E6174650A11 +:106990002878312C79312920697320746865207436 +:1069A0006F70206C65667420636F726E6572206F05 +:1069B0006620746865206375742D6F75742061722C +:1069C000656120616E6420636F6F7264696E6174CB +:1069D00065202878322C7932292069732074686503 +:1069E0000A626F74746F6D20726967687420636FD8 +:1069F000726E65722E0A0055736520696E76657237 +:106A000074282920746F206D616B652061206E658C +:106A100067617469766520636F7079206F66207492 +:106A2000686520696D6167652E205768657265200D +:106A30006120706978656C20776173206272696784 +:106A40006874206F720A6F6E20696E20746865200A +:106A50006F726967696E616C2C206974206973209C +:106A600064696D206F72206F666620696E2074689D +:106A700065206E6567617469766520636F70792E35 +:106A80000A00436F6D6D756E696361746520776987 +:106A9000746820612073657269616C206465766931 +:106AA000636520636F6E6E656374656420746F2028 +:106AB0006D6963726F3A626974277320492F4F20A2 +:106AC00070696E732E0A0055736520696E697428AB +:106AD0002920746F2073657420757020636F6D6D4D +:106AE000756E69636174696F6E2E205573652070D1 +:106AF000696E732030202854582920616E6420313B +:106B000020285258292077697468206120626175B5 +:106B1000640A72617465206F6620393630302E0A3F +:106B20004F76657272696465207468652064656675 +:106B300061756C747320666F722027626175647270 +:106B4000617465272C202770617269747927206130 +:106B50006E64202770696E73272E0A0049662074C0 +:106B6000686572652061726520696E636F6D696E1C +:106B7000672063686172616374657273207761690D +:106B800074696E6720746F20626520726561642C81 +:106B900020616E7928292077696C6C207265747584 +:106BA000726E20547275652E0A4F7468657277692B +:106BB00073652C2072657475726E732046616C73F8 +:106BC000652E0A005573652072656164282920745A +:106BD0006F207265616420636861726163746572BD +:106BE000732E0A5573652072656164286E292074BE +:106BF0006F20726561642C206174206D6F73742C3A +:106C000020276E27206279746573206F6620646187 +:106C100074612E0A005573652072656164616C6C45 +:106C2000282920746F2072656164206173206D755E +:106C30006368206461746120617320706F7373698D +:106C4000626C652E0A0055736520726561646C691B +:106C50006E65282920746F20726561642061206C44 +:106C6000696E65207468617420656E64732077694D +:106C700074682061206E65776C696E652063686159 +:106C80007261637465722E0A0055736520726561C6 +:106C900064696E746F286275662920746F2072654E +:106CA000616420627974657320696E746F20746802 +:106CB00065206275666665722027627566272E0AF2 +:106CC0005573652072656164696E746F28627566BC +:106CD000662C206E2920746F20726561642C2061FF +:106CE00074206D6F73742C20276E27206E756D6273 +:106CF0006572206F6620627974657320696E746FA7 +:106D00002027627566272E0A005573652077726901 +:106D10007465286275662920746F207772697465BE +:106D20002074686520627974657320696E206275CD +:106D30006666657220276275662720746F20746806 +:106D40006520636F6E6E6563746564206465766943 +:106D500063652E0A00436F6D6D756E6963617465BE +:106D6000207573696E6720612073657269616C209C +:106D70007065726970686572616C20696E746572A5 +:106D800066616365202853504929206465766963EC +:106D90006520636F6E6E656374656420746F0A6D41 +:106DA0006963726F3A626974277320492F4F2070AC +:106DB000696E732E0A0055736520696E69742829FF +:106DC00020746F2073657420757020636F6D6D750E +:106DD0006E69636174696F6E2E204F766572726999 +:106DE0006465207468652064656661756C747320E1 +:106DF000666F722062617564726174652C206D6FBC +:106E000064652C0A53434C4B2C204D4F5349206151 +:106E10006E64204D49534F2E20546865206465668A +:106E200061756C7420636F6E6E656374696F6E73E9 +:106E3000206172652070696E313320666F72205355 +:106E4000434C4B2C2070696E313520666F720A4DB1 +:106E50004F534920616E642070696E313420666F33 +:106E600072204D49534F2E0A005573652077726981 +:106E70007465286275662920746F2077726974655D +:106E800020627974657320696E206275666665722A +:106E900020276275662720746F2074686520636FF1 +:106EA0006E6E6563746564206465766963652E0A39 +:106EB000005573652072656164286E2920746F2007 +:106EC0007265616420276E27206279746573206F74 +:106ED0006620646174612E0A0055736520777269BB +:106EE00074655F72656164696E746F286F75742C68 +:106EF00020696E2920746F20777269746520746828 +:106F00006520276F75742720627566666572207428 +:106F10006F2074686520636F6E6E656374656420AE +:106F20006465766963650A616E64207265616420D8 +:106F3000616E7920726573706F6E736520696E740F +:106F40006F207468652027696E2720627566666504 +:106F5000722E20546865206C656E677468206F66B9 +:106F60002074686520627566666572732073686F49 +:106F7000756C640A6265207468652073616D652EA6 +:106F80002054686520627566666572732063616E61 +:106F9000206265207468652073616D65206F626A88 +:106FA0006563742E0A00506C756720696E2061203D +:106FB000737065616B657220776974682063726FA6 +:106FC000636F64696C6520636C69707320616E64C3 +:106FD000206D616B65206D6963726F3A6269742020 +:106FE000676F20626C65657020616E6420626C6FF3 +:106FF0006F702E0A00557365207365745F74656D3C +:10700000706F286E756D6265722C2062706D29201C +:10701000746F206D616B6520612062656174206C06 +:10702000617374206120276E756D62657227206F11 +:1070300066207469636B73206C6F6E6720616E6489 +:107040000A706C61796564206174202762706D2715 +:1070500020626561747320706572206D696E75744D +:10706000652E0A005573652070697463682866721E +:1070700065712C206C656E6774682920746F206DB3 +:10708000616B65206D6963726F3A62697420706C20 +:1070900061792061206E6F746520617420276672AB +:1070A000657127206672657175656E637920666FFC +:1070B000720A276C656E67746827206D696C6C694D +:1070C0007365636F6E64732E20452E672E20706982 +:1070D000746368283434302C2031303030292077E4 +:1070E000696C6C20706C617920636F6E636572747B +:1070F0002027412720666F722031207365636F6EF1 +:10710000642E0A0055736520706C6179286D757363 +:1071100069632920746F206D616B65206D696372EE +:107120006F3A62697420706C617920276D7573699C +:107130006327206C697374206F66206E6F746573AB +:107140002E20547279206F7574207468650A6275F8 +:10715000696C7420696E206D7573696320746F208B +:1071600073656520686F7720697420776F726B7321 +:107170002E20452E672E206D757369632E706C610D +:1071800079286D757369632E50554E43484C494EAE +:1071900045292E0A00557365206765745F74656D17 +:1071A000706F282920746F2072657475726E207458 +:1071B0006865206E756D626572206F662074696304 +:1071C0006B7320696E2061206265617420616E645A +:1071D000206E756D626572206F66206265617473E2 +:1071E0000A706572206D696E7574652E0A0055739C +:1071F0006520746F2073746F70282920746865206F +:107200006D75736963207468617420697320706C94 +:107210006179696E672E0A004966207468696E6735 +:107220007320676F2077726F6E672C2072657365AD +:1072300074282920746865206D7573696320746FE4 +:10724000206974732064656661756C74207365745D +:1072500074696E67732E0A005365653A206874740A +:10726000703A2F2F786B63642E636F6D2F33353335 +:107270002F0A00546865205A656E206F6620507989 +:1072800074686F6E20646566696E657320776861E7 +:107290007420697420697320746F206265205079AE +:1072A00074686F6E69632E20497420776F756C6403 +:1072B0006E277420666974206F6E20746869730A83 +:1072C00064657669636520736F207765277665202E +:1072D0007772697474656E2061205A656E206F66DE +:1072E000204D6963726F507974686F6E20696E7398 +:1072F000746561642E0A0055736520617574686F4A +:107300007273282920746F2072657665616C207411 +:107310006865206E616D6573206F662074686520F6 +:1073200070656F706C652077686F2063726561743B +:107330006564207468697320736F66747761726521 +:107340002E0A00416C6C20796F75206E6565642E85 +:1073500020557365206C6F76652E62616461626F83 +:107360006F6D282920746F207265706561742074B8 +:107370006865206566666563742E0A0048656172FB +:10738000206D7920736F756C20737065616B3A0A9C +:10739000546865207665727920696E7374616E74C5 +:1073A000207468617420492073617720796F752C8F +:1073B000206469640A4D7920686561727420666C86 +:1073C0007920746F20796F757220736572766963A6 +:1073D000652E0A004552524F523A20737461636B16 +:1073E0002073697A65206E6F74206261636B20740C +:1073F0006F207A65726F3B20676F742025640A00E6 +:1074000047433A20746F74616C3A2025752C2075BF +:107410007365643A2025752C20667265653A2025CF +:10742000750A00204E6F2E206F6620312D626C6F22 +:10743000636B733A2025752C20322D626C6F636B61 +:10744000733A2025752C206D617820626C6B207357 +:107450007A3A2025750A004743206D656D6F727971 +:10746000206C61796F75743B2066726F6D2025709A +:107470003A000A20202020202020282575206C6931 +:107480006E657320616C6C206672656529000A2543 +:107490003035783A2000726177205245504C3B20BD +:1074A0004354524C2D4220746F20657869740D0A44 +:1074B00000044D656D6F72794572726F720A040037 +:1074C0004D6963726F507974686F6E2076312E3714 +:1074D0002D392D6762653032306562206F6E203243 +:1074E0003031362D30342D31383B206D6963726F69 +:1074F0003A6269742077697468206E524635313873 +:1075000032320D0A0054797065202268656C70284B +:10751000292220666F72206D6F726520696E666F1A +:10752000726D6174696F6E2E0D0A003E3E3E200042 +:107530000D0A7061737465206D6F64653B20437440 +:10754000726C2D4320746F2063616E63656C2C2018 +:107550004374726C2D4420746F2066696E69736881 +:107560000D0A3D3D3D20002E2E2E2000636F756CD0 +:1075700064206E6F74206F70656E2066696C652084 +:107580002725732720666F722072656164696E67B4 +:107590000A0038846B19C66318867398C6B11CCA72 +:1075A000318CC73188C23098463118C6350CCA3183 +:1075B0000CC62110246912C23114C471084A224930 +:1075C000AB6AA8AC495132D55288936C94221554B9 +:1075D000D22596D450A5462108856B18C46310CED9 +:1075E0006B188C71198C63350CC63399CC6CB54E05 +:1075F000A29946212882952EE3309CC5309CA2B1E9 +:107600009C67318866592C5318846750CAE30AACCA +:10761000AB30AC62308C63109462B18C82289633AC +:1076200098D6B54C6229A54AB59CC63114D6389C6B +:107630004BB4866518AE671CA6631996231984138C +:1076400008A652ACCA22896EAB198C6234C4621986 +:10765000866318C42358D6A35042544AAD4A251114 +:107660006B64894A63398A23312AEAA2A944C51284 +:10767000CD42348C62188C63114866319D44331DB1 +:1076800046319CC6B10CCD3288C47318867308D6B7 +:1076900063580781E0F03C0787903C7C0FC7C0C06F +:1076A000F07C1E078080001C7870F1C71FC00CFEA4 +:1076B0001C1F1F0E0A7AC071F2838F030F0F0C007C +:1076C00079F861E0430F83E718F9C113DAE9638FB2 +:1076D0000F838387C31F3C70F0E1E1E387B8710E2D +:1076E00020E38D48781C938730E1C1C1E478218381 +:1076F00083C3870639E5C387070E1C1C70F4719C91 +:10770000603632C31E3CF38F0E3C70E3C78F0F0F01 +:107710000E3C78F0E38706F0E307C199870F1878ED +:107720007070FCF310B18C8C317C70E1863C646C21 +:10773000B0E1E30F238F0F1E3E383C387B8F070EDE +:107740003CF4171E3C78F29E7249E32536385839CE +:10775000E2DE3C7878E1C761E1E1B0F0F0C3C70E4A +:1077600038C0F0CE73731834B0E1C78E1C3CF838C3 +:10777000F0E1C18B868F1C7870F078ACB18F393115 +:10778000DB3861C30E0E387873171E391E3864E17A +:10779000F1C14E0F40A202C58F81A1FC120864E026 +:1077A0003C22E045078E0C3290F01F2049E0F80C97 +:1077B00060F0171A41AAA4D08D12821E1E03F83E53 +:1077C000030C73807044260324E13E044E041CC164 +:1077D00009CC9E902107904364C00FC6909CC15B6A +:1077E00003E21D81E05E1D0384B82C0F80B183E0AD +:1077F00030411E43898350FC242E1383F17C4C2C92 +:10780000C90D83B0B582E4E8069C07A0991D073E28 +:10781000828F70307440CA10E4E80F92143F06F86B +:10782000848843810A343941C6E31C4703B0B81346 +:107830000AC264F818F960B3C0652060A68CC381E1 +:107840002030261E1C38D301B02640F40BC3421F43 +:107850008532266040C9CB01EC112840FA0434E09F +:10786000704C8C1D07690316C80423E8C69A0B1ACE +:1078700003E0760605CF1EBC5831716600F83F0460 +:10788000FC0C74278A8071C23A2606C01F050F9827 +:1078900040AE017FC007FF000EFE0003DF8003EF54 +:1078A000801BF1C200E7E018FCE021FC803CFC40BA +:1078B0000E7E003F3E000FFE001FFF003EF007FC63 +:1078C000007E103FFF003F380E7C01870CFCC70094 +:1078D0003E040F3E1F0F0F1F0F028387CF03870F3A +:1078E0003FC0079E603FC003FE003FE077E1C0FE5F +:1078F000E0C3E001DFF80307007E70007C3818FE6B +:107900000C1E781C7C3E0E1F1E1E3E007F8307DB74 +:10791000878307C7071071FF003FE201E0C1C3E1A1 +:10792000007FC005F020F8F070FE7879F8023F0C77 +:107930008F030F9FE0C1C78703C3C3B0E1E1C1E379 +:10794000E071F000FC707C0C3E380E1C70C3C70365 +:1079500081C1C7E7000FC7871909EFC433E0C1FC35 +:10796000F870F078F8F061C7001FF8017CF8F07843 +:10797000703C7CCE0E2183CF08078F08C1878F8093 +:10798000C7E30007F8E0EF0039F7800EF8E1E3F80D +:10799000219FC0FF03F807C01FF8C404FCC4C1BC8A +:1079A00087F00FC07F05E025ECC03E8447F08E03D2 +:1079B000F803FBC019F8079C0C17F807E01FA1FC9F +:1079C0000FFC01F03F00FE03F01F00FD00FF880DDB +:1079D000F901FF007007C03E42F30DC47F80FC0731 +:1079E000F05EC03F00783F81FF01F801C3E80CE47E +:1079F000648FE40FF007F0C21F007FC06F807E032A +:107A0000F807F03FC0780F8207FE227770027603F6 +:107A1000FE00FE67007CC7F18EC63BE03F84F31991 +:107A2000D80399FC09B80FF8009D2461F90D00FDF9 +:107A300003F01F903F01F81FD00FF83701F807F04F +:107A40000FC03F00FE03F80FC03F00FA03F00F80A5 +:107A5000FF01B807F001FC01BC80131E007FE1406C +:107A60007FA07FB0003FC01FC0380FF01F80FF0114 +:107A7000FC03F17E01FE01F0FF007FC01D07F00F47 +:107A8000C07E06E007E00FF806C1FE01FC03E00F30 +:107A900000FC00131313130A0E12181A16141014F4 +:107AA0000E120E1212100C0E0A120E0A080606060C +:107AB0000611060606060E10090A080A060606053D +:107AC0000600121A141A120C060606060606060608 +:107AD00006060606060606060606060A0A0606063E +:107AE0002C13000000000000000000000000000057 +:107AF000000000000101020203030404050506065C +:107B00000707000102030405060708090A0B0C0D0C +:107B10000E0F000103040607090A0C0D0F101213C3 +:107B2000151600020406080A0C0E10121416181A74 +:107B30001C1E000205070A0C0F111416191B1E202B +:107B40002325000306090C0F1215181B1E212427DC +:107B50002A2D0003070A0E1115181C1F23262A2D93 +:107B6000313400FCF8F4F0ECE8E4E0DCD8D4D0CC1C +:107B7000C8C400FCF9F5F2EEEBE7E4E0DDD9D6D2BB +:107B8000CFCB00FDFAF7F4F1EEEBE8E5E2DFDCD96C +:107B9000D6D300FDFBF8F6F3F1EEECE9E7E4E2DF23 +:107BA000DDDA00FEFCFAF8F6F4F2F0EEECEAE8E6D4 +:107BB000E4E200FEFDFBFAF8F7F5F4F2F1EFEEEC8B +:107BC000EBE900FFFEFDFCFBFAF9F8F7F6F5F4F33C +:107BD000F2F100FFFFFEFEFDFDFCFCFBFBFAFAF9F3 +:107BE000F9F8005B5B5B5B6E5D5B58595758525907 +:107BF0005D3E52583E6E505D5A3C6E5A6E517965EC +:107C0000795B636A51795D525D674C5D6565796545 +:107C100079005A5858585852515151797979706EA3 +:107C20006E5E5E5E5151517979796565705E5E5E1A +:107C30000801000000000008070808010100010019 +:107C40000705010006010007000501000800000308 +:107C50000000000000000000000100000000000122 +:107C60000E010901000100000000000000000000FA +:107C700000000000000000000000000700000500F8 +:107C8000131000000000005449433F282C1F252DED +:107C90004931241E33251D4518321E18532E3656E1 +:107CA00000000000000000000000000000000000D4 +:107CB000000048271F2B1E2200001F1F1F1F02024B +:107CC000020202020202020505020A020805050B71 +:107CD0000A090808A00808171F121212121E1E1403 +:107CE00014141417171A1A1D1D0202020202021A96 +:107CF0001D1B1A1D1B1A1D1B1A1D1B171D17171DD7 +:107D000017171D17171D1717170002020202040488 + +:107D10000404040404040404040404030204040228 +:107D2000020202020101010101010101010101023E +:107D30000202010001000100050505050504040219 +:107D40000001020001020001020001020002020023 +:107D500001030002030002A0A05265616420657265 +:107D6000726F72005772697465206572726F72006B +:107D70004F75742D6F662D6275666665722072652B +:107D800061640000000000000A0B0D0E0D0C0C0BCE +:107D9000090B0B0C0C0C08080C080A08080A03094C +:107DA00006000000000000000003050304000000BE +:107DB000050A020E0D0C0D0C080001000001000068 +:107DC0000100000100000000000000000A00000A9D +:107DD0000000000000E0E6ECF3F900060C060001EC +:107DE00002020203030404050608090B0D0F00003C +:107DF0000000000000000000000000000000000083 +:107E0000000000000000000000000000000000F181 +:107E1000E2D3BB7C95010203030072000200000064 +:107E20000000000000000000000000000000000052 +:107E300000001B000019000000000000000000907E +:107E40009090909090909090909090909090909032 +:107E50009090909090909090909090909090909022 +:107E60009090909090909090909090909090909012 +:107E70009090909090909090909090909090909002 +:107E800090909090909090909090909090909090F2 +:107E900090909090909090909090909090909090E2 +:107EA00090909090909090909090909090909090D2 +:107EB00090909090909090909090909090909070E2 +:107EC00070707070707070707070707070707070B2 +:107ED00070707070707070707070707070707070A2 +:107EE0007070707070707070707070707070707092 +:107EF0007070707070707070707070707070707082 +:107F00007070707070707070707070707070707071 +:107F10007070707070707070707070707070707061 +:107F20007070707070707070707070707070707051 +:107F300070707070707070707070707070707000B1 +:107F4000000000000D0D0E0F0F0F0F0F0C0D0C0F8A +:107F50000F0D0D0D0E0D0C0D0D0D0C09090000007F +:107F600000000000000B0B0B0B0000010B00020EC9 +:107F70000F0F0F0F0D0204000204000104000104A2 +:107F800000000000000000000C000000000F0F00C7 +:107F900002020202040404040404040404040404A9 +:107FA00004030304040303030303010203020103A4 +:107FB000030303010103030302020302030000059C +:107FC0000505050404020002020003020004020089 +:107FD00003020002020002030003030003B0A0003A +:107FE0000000000001010101010101010101010185 +:107FF0000101010101010101010101010100000074 +:10800000000000000000000000000000000000016F +:10801000010101010000000000000000000000005C +:108020000000000000000000000000000000000050 +:1080300000000000434343435448423E282C1E2482 +:108040002C4830241E32241C4418321E18522E365E +:10805000563643494F1A4249253342282F4F4F4243 +:108060004F6E0048261E2A1E221A1A1A4242426EDB +:108070006E6E5454541A1A1A4242426D566D54543C +:10808000547F7F181A17171700000000000A0E13FC +:10809000181B171510140E120E1212100D0F0B12C2 +:1080A0000E0B09060606000000000000000000009C +:1080B0000000000000000000131B151B120D000043 +:1080C0000000101010101010202020202020303030 +:1080D00030303030304040404040404050505050B0 +:1080E00050505050606060606060606060606060D0 +:1080F0007070707070707070707070707070707080 +:10810000707070707070707070707070707070607F +:1081100060606060606060606060605050505050AF +:10812000505050404040404040403030303030307F +:1081300030202020202020101010101010000000EF +:108140000000F0F0F0F0F0F0E0E0E0E0E0E0D0D0AF +:10815000D0D0D0D0D0C0C0C0C0C0C0C0B0B0B0B00F +:10816000B0B0B0B0A0A0A0A0A0A0A0A0A0A0A0A0CF +:1081700090909090909090909090909090909090FF +:10818000909090909090909090909090909090A0DF +:10819000A0A0A0A0A0A0A0A0A0A0A0B0B0B0B0B08F +:1081A000B0B0B0C0C0C0C0C0C0C0D0D0D0D0D0D09F +:1081B000D0E0E0E0E0E0E0F0F0F0F0F0F000006EA1 +:1081C000616D652027257127206973206E6F7420EB +:1081D000646566696E656400756E737570706F7244 +:1081E000746564207479706520666F722025713A19 +:1081F00020272573270027257327206F626A656370 +:1082000074206973206E6F742063616C6C61626CA2 +:108210006500617267756D656E74206861732077A3 +:10822000726F6E6720747970650074797065206F65 +:10823000626A656374202725712720686173206E48 +:108240006F206174747269627574652027257127C7 +:108250000027257327206F626A6563742068617345 +:10826000206E6F20617474726962757465202725B1 +:1082700071270027257327206F626A656374206960 +:1082800073206E6F74206974657261626C6500277B +:10829000257327206F626A656374206973206E6F8F +:1082A0007420616E206974657261746F7200756EFE +:1082B000737570706F727465642074797065732063 +:1082C000666F722025713A20272573272C202725D9 +:1082D0007327006E656564206D6F72652074686138 +:1082E0006E2025642076616C75657320746F20752F +:1082F0006E7061636B00746F6F206D616E792076B4 +:10830000616C75657320746F20756E7061636B208E +:108310002865787065637465642025642900657834 +:1083200063657074696F6E73206D75737420646516 +:10833000726976652066726F6D204261736545785B +:1083400063657074696F6E0063616E6E6F7420692F +:108350006D706F7274206E616D65202571006D65A2 +:108360006D6F727920616C6C6F636174696F6E20E0 +:108370006661696C65642C20686561702069732092 +:108380006C6F636B6564006D656D6F727920616CF5 +:108390006C6F636174696F6E206661696C65642CD3 +:1083A00020616C6C6F636174696E67202575206253 +:1083B00079746573003C6D6F64756C652027257159 +:1083C000273E006C696E6520257520002571200010 +:1083D0004D656D6F72794572726F723A206C657877 +:1083E000657220636F756C64206E6F7420616C6CB5 +:1083F0006F63617465206D656D6F7279006D616981 +:108400006E2E707900736F6674207265626F6F7480 +:108410000D0A0066726F7A656E0073657428290014 +:1084200066726F7A656E73657428002773657427AA +:10843000206F626A65637420726571756972656424 +:10844000002766726F7A656E7365742720686173A2 +:10845000206E6F2073756368206174747269627531 +:10846000746500706F702066726F6D20616E20659C +:108470006D707479207365740001000000000000C5 +:1084800000000000000000000000000000000000EC +:1084900000000000000000000000000000000000DC +:1084A00000000000000000000000000000000000CC +:1084B00000000000000000000000000100000000BB +:1084C000000204000004000004040800040000008E +:1084D000000000000000000000000001000800048F +:1084E0000002040000040000000008010101010175 +:1084F000010101010101010101010101010101016C +:10850000010101010101010101010101010101015B +:10851000010101010101010101010101010101014B +:10852000010101010101010101010101010101013B +:108530000101010204010104010104040801040114 +:108540000101010101010101010101010101010814 +:1085500001040102040101040101010108010000FC +:1085600000000002040000040000040408000400ED +:1085700000000000000000000000000000010008F2 +:10858000000400020400000400000000082C007237 +:10859000616E67652825642C202564002C202564E5 +:1085A00029006D61746820646F6D61696E20657269 +:1085B000726F720042434445464748494B4C3D3632 +:1085C0003E3758383F3957315032592F4E304F5A75 +:1085D0003A543B553351345235533C564D40412863 +:1085E000295B5D7B7D2C3A3B407E3C653D633C6571 +:1085F0003D3E653D633E653D2A653D632A653D2BF5 +:10860000653D2D653D653E26653D7C653D2F653D9F +:10861000632F653D25653D5E653D3D653D21453DDD +:1086200000756E69636F6465206E616D65206573AA +:10863000636170657300616E6400617300617373E0 +:1086400065727400627265616B00636F6E74696E4F +:1086500075650064656C00656C696600656C7365C2 +:10866000006578636570740066696E616C6C790092 +:10867000666F72006C616D626461006E6F7400728F +:10868000657475726E00747279007768696C650044 +:108690007969656C64005F5F64656275675F5F0040 +:1086A0007465787420746F6F206C6F6E672E006332 +:1086B0006F756C64206E6F742070617273652069D1 +:1086C0006E7075742E00476C6974636865733A2028 +:1086D00025640D0A0066756E6374696F6E206D699E +:1086E0007373696E67207265717569726564207055 +:1086F0006F736974696F6E616C20617267756D6507 +:108700006E74202325640066756E6374696F6E2035 +:108710006D697373696E67207265717569726564DE +:10872000206B6579776F726420617267756D656E15 +:108730007420272571270066756E6374696F6E203B +:108740006D697373696E67206B6579776F72642DDD +:108750006F6E6C7920617267756D656E7400736CF5 +:1087600069636528006F626A656374206E6F7420A8 +:10877000696E2073657175656E6365003C636C613D +:10878000737320272571273E003C2573206F626A92 +:108790006563742061742025703E003C73757065BC +:1087A000723A20005F5F696E69745F5F28292073E9 +:1087B000686F756C642072657475726E204E6F6E92 +:1087C000652C206E6F7420272573270063616E6E01 +:1087D0006F74206372656174652027257127206995 +:1087E0006E7374616E6365730074797065202725FC +:1087F0007127206973206E6F7420616E206163633E +:1088000065707461626C6520626173652074797053 +:1088100065006D756C7469706C6520626173657359 +:10882000206861766520696E7374616E6365206C83 +:1088300061792D6F757420636F6E666C6963740067 +:10884000747970652074616B65732031206F7220BC +:108850003320617267756D656E747300697373752B +:1088600062636C6173732829206172672032206D06 +:10887000757374206265206120636C617373206F6F +:10888000722061207475706C65206F6620636C6166 +:1088900073736573006973737562636C61737328B6 +:1088A00029206172672031206D7573742062652004 +:1088B0006120636C6173730063616E277420636F62 +:1088C0006E766572742027257327206F626A656350 +:1088D0007420746F2073747220696D706C696369A1 +:1088E000746C7900737562737472696E67206E6F51 +:1088F0007420666F756E64006A6F696E20657870AB +:10890000656374732061206C697374206F662073D3 +:1089100074722F6279746573206F626A6563747311 +:1089200020636F6E73697374656E74207769746801 +:108930002073656C66206F626A656374007374618E +:1089400072742F656E6420696E6469636573006577 +:108950006D70747920736570617261746F720077E5 +:10896000726F6E67206E756D626572206F66206132 +:108970007267756D656E74730073696E676C6520E0 +:10898000277D2720656E636F756E74657265642040 +:10899000696E20666F726D617420737472696E67A0 +:1089A0000062616420636F6E76657273696F6E201A +:1089B00073706563696669657200756E6D61746375 +:1089C00068656420277B2720696E20666F726D6161 +:1089D0007400657870656374656420273A272061A8 +:1089E0006674657220666F726D6174207370656362 +:1089F00069666965720063616E27742073776974B4 +:108A000063682066726F6D206175746F6D61746943 +:108A100063206669656C64206E756D626572696E4F +:108A20006720746F206D616E75616C206669656C7E +:108A3000642073706563696669636174696F6E0051 +:108A40007475706C6520696E646578206F7574202C +:108A50006F662072616E6765006174747269627519 +:108A6000746573206E6F7420737570706F727465A7 +:108A700064207965740063616E277420737769746C +:108A800063682066726F6D206D616E75616C206623 +:108A900069656C6420737065636966696361746994 +:108AA0006F6E20746F206175746F6D6174696320DF +:108AB0006669656C64206E756D626572696E6700CB +:108AC0003C3E3D5E006263646545664667476E6F87 +:108AD0007378582500696E76616C696420666F72E0 +:108AE0006D6174207370656369666965720073698E +:108AF000676E206E6F7420616C6C6F77656420699F +:108B00006E20737472696E6720666F726D61742077 +:108B1000737065636966696572007369676E206E5C +:108B20006F7420616C6C6F7765642077697468205E +:108B3000696E746567657220666F726D617420730B +:108B400070656369666965722027632700756E6BBF +:108B50006E6F776E20666F726D617420636F6465EF +:108B6000202725632720666F72206F626A65637411 +:108B7000206F662074797065202725732700756E35 +:108B80006B6E6F776E20666F726D617420636F64B9 +:108B900065202725632720666F72206F626A6563F0 +:108BA00074206F6620747970652027666C6F61741D +:108BB0002700273D2720616C69676E6D656E742004 +:108BC0006E6F7420616C6C6F77656420696E2073C2 +:108BD0007472696E6720666F726D61742073706560 +:108BE00063696669657200756E6B6E6F776E20667D +:108BF0006F726D617420636F646520272563272081 +:108C0000666F72206F626A656374206F6620747984 +:108C1000706520277374722700696E636F6D706CC6 +:108C200065746520666F726D617400696E636F6D47 +:108C3000706C65746520666F726D6174206B657908 +:108C4000006E6F7420656E6F75676820617267755E +:108C50006D656E747320666F7220666F726D6174DD +:108C600020737472696E67002525632072657175C3 +:108C70006972657320696E74206F72206368617217 +:108C800000696E74656765722072657175697265D9 +:108C90006400756E737570706F7274656420666FB2 +:108CA000726D6174206368617261637465722027FC +:108CB0002563272028307825782920617420696E63 +:108CC000646578202564006E6F7420616C6C20618F +:108CD0007267756D656E747320636F6E76657274FE +:108CE000656420647572696E6720737472696E675B +:108CF00020666F726D617474696E67007273706C58 +:108D00006974284E6F6E652C6E290020090A0D0BC0 +:108D10000C0073747265616D206F706572617469A7 +:108D20006F6E206E6F7420737570706F72746564EF +:108D3000004F7574206F66206D656D6F7279006FDE +:108D40007574206F66206D656D6F7279000000018B +:108D500001020202020303030303030303040404E6 +:108D600004040404040404040404040404057D7ECF +:108D70007E7F8081828282848484848485878788C0 +:108D800088898A8B8B8C8C8C45727220333636386E +:108D90003300457272203336383934000000000049 +:108DA00000000000000000000000000000000000C3 +:108DB00000000000000000000000000000020202AD +:108DC0000202028200000202020202020303030303 +:108DD00003030303030302020202020202C0A8B05B +:108DE000ACC0A0B8A0C0BCA0ACA8ACC0A0A0ACB4A3 +:108DF000A4C0A8A8B0C0BC000000020020209B2096 +:108E0000C0B920CDA34C8A8E0095F7A239C5067E45 +:108E1000C726374E91F155A1FE24452DA736532E76 +:108E200047DA284129BD2821293DAE282229203DA5 +:108E30002D4148354E4B574F5754AD2822293D4BB5 +:108E4000574F573454AD2823293D204E4148344DC7 +:108E50004245D22824293D20444141344C45D22862 +:108E600025293D20504552534548344ED4282629C3 +:108E70003D2041454EC4282729BD282A293D2041AF +:108E8000453453544552494853CB282B293D205053 +:108E90004C414834D3282C293DAC20282D29203D95 +:108EA000AD282D29BD282E293D20504F594ED428BC +:108EB0002F293D20534C41453453C82830293D20AB +:108EC0005A495934524FD72028315354293D4645E9 +:108ED000523453D4202831305448293D5445483425 +:108EE0004E54C82831293D2057414834CE202832DD +:108EF0004E44293D534548344B554EC42832293DF4 +:108F000020545557B42028335244293D54484552E3 +:108F100034C42833293D205448524959B4283429AF +:108F20003D20464F4834D22028355448293D4649F3 +:108F300048344654C82835293D2046415934D62066 +:108F400028363429203D534948344B53544959203D +:108F5000464F48D22836293D20534948344BD32820 +:108F600037293D20534548345655CE20283854489B +:108F7000293D45593454C82838293D20455934D411 +:108F80002839293D204E415934CE283A293DAE2872 +:108F90003B293DAE283C293D204C454834532044D4 +:108FA000484145CE283D293D204959344B57554C21 +:108FB000DA283E293D204752455934544552204431 +:108FC000484145CE283F293DBF2840293D20414505 +:108FD00036D4285E293D204B414534524958D45D52 +:108FE000C15DC12028412E293D454834592EA02875 +:108FF0004129203D41C8202841524529203D414179 +:10900000D220284152294F3D4158D228415229238C +:109010003D454834D2205E28415329233D455934EB +:10902000D328412957413D41D8284157293D414F37 +:10903000B5203A28414E59293D4548344E49D92852 +:1090400041295E2B233D4559B5233A28414C4C59C3 +:10905000293D554C49D92028414C29233D55CC2840 +:10906000414741494E293D415847454834CE233A6E +:1090700028414729453D4948CA2841295E253D45A3 +:10908000D92841295E2B3A233D41C5203A28412960 +:109090005E2B203D4559B42028415252293D41586C +:1090A000D228415252293D414534D2205E284152B6 +:1090B00029203D414135D2284152293D414135D2F7 +:1090C00028414952293D454834D2284149293D4546 +:1090D00059B4284159293D4559B5284155293D41A3 +:1090E0004FB4233A28414C29203D55CC233A2841FE +:1090F0004C5329203D554CDA28414C4B293D414FDA +:1091000034CB28414C295E3D414FCC203A28414286 +:109110004C45293D4559344255CC2841424C4529BE +:109120003D41584255CC284129564F3D4559B42818 +:10913000414E47292B3D4559344ECA28415441528E +:1091400049293D4148544141345249D92841295483 +:109150004F4D3D41C52841295454493D41C5202822 +:10916000415429203D4145D420284129543D41C83E +:109170002841293D41C55DC220284229203D424960 +:1091800059B420284245295E233D4249C82842451A +:10919000494E47293D4249593449484ED820284232 +:1091A0004F544829203D424F573454C82028425537 +:1091B0005329233D42494834DA28425245414B293C +:1091C0003D4252455935CB284255494C293D4249EB +:1091D0004834CC2842293DC25DC320284329203D84 +:1091E000534959B420284348295E3DCB5E45284366 +:1091F00048293DCB284348412952233D4B4548B59A +:10920000284348293D43C8205328434929233D5337 +:109210004159B428434929413D53C8284349294F5E +:109220003D53C828434929454E3D53C82843495416 +:1092300059293D5349485449D92843292B3DD3281E +:10924000434B293DCB28434F4D4D4F444F52452969 +:109250003D4B4141344D4148444F48D228434F4D46 +:10926000293D4B4148CD2843554954293D4B494858 +:10927000D42843524541293D4B52495945D92843A9 +:10928000293DCB5DC420284429203D444959B420C0 +:109290002844522E29203D444141344B5445D22389 +:1092A0003A2844454429203D444948C42E45284491 +:1092B00029203DC4233A5E45284429203DD4202856 +:1092C0004445295E233D4449C82028444F29203D78 +:1092D0004455D72028444F4553293D444148DA2876 +:1092E000444F4E4529203D44414835CE28444F49FE +:1092F0004E47293D4455573449484ED82028444FBD +:1093000057293D4441D72328445529413D4A55D743 +:1093100023284455295E233D4A41D82844293DC489 +:109320005DC520284529203D49594959B4233A288B +:10933000452920BD273A5E28452920BD203A2845E9 +:1093400029203D49D92328454429203DC4233A28D2 +:1093500045294420BD2845562945523D454834D627 +:109360002845295E253D4959B42845524929233DC0 +:109370004959345249D928455249293D4548345222 +:1093800049C8233A28455229233D45D228455252FF +:109390004F52293D454834524F48D22845524153F7 +:1093A00045293D494852455935D328455229233D41 +:1093B0004548D2284552293D45D220284556454E9C +:1093C000293D4959564548CE233A28452957BD409D +:1093D000284557293D55D7284557293D5955D72860 +:1093E00045294F3D49D9233A2628455329203D494F +:1093F00048DA233A2845295320BD233A28454C59B9 +:1094000029203D4C49D9233A28454D454E54293D04 +:109410004D45484ED4284546554C293D465548CCE7 +:10942000284545293D4959B4284541524E293D45D5 +:109430005235CE2028454152295E3D4552B528453A +:109440004144293D4548C4233A28454129203D4906 +:109450005941D82845412953553D4548B5284541EE +:10946000293D4959B52845494748293D4559B4281A +:109470004549293D4959B42028455945293D415977 +:10948000B4284559293D49D9284555293D595557AD +:10949000B528455155414C293D4959344B5755CC78 +:1094A0002845293D45C85DC620284629203D454818 +:1094B00034C62846554C293D465548CC2846524985 +:1094C000454E44293D46524548354EC428464154F0 +:1094D000484552293D46414134444845D228462911 +:1094E00046BD2846293DC65DC720284729203D4A5C +:1094F0004959B428474956293D47494835D6202877 +:109500004729495E3DC728474529543D474548B549 +:1095100053552847474553293D474A454834D328A2 +:109520004747293DC72042232847293DC7284729C7 +:109530002B3DCA284752454154293D47524559348D +:10954000D428474F4E29453D47414F35CE23284724 +:109550004829BD2028474E293DCE2847293DC75DD3 +:10956000C820284829203D45593443C8202848416F +:1095700056293D2F48414536D62028484552452991 +:109580003D2F484959D22028484F5552293D41572F +:109590003545D228484F57293D2F4841D7284829DB +:1095A000233D2FC8284829BD5DC92028494E293DA3 +:1095B0004948CE20284929203D4159B4284929202D +:1095C0003D41D928494E29443D415935CE53454D59 +:1095D0002849293D49D920414E542849293D41D99E +:1095E00028494552293D495945D2233A52284945EF +:1095F0004429203D4959C42849454429203D415921 +:1096000035C42849454E293D49594548CE28494544 +:1096100029543D41593445C8284927293D4159B568 +:10962000203A2849295E253D4159B5203A28494527 +:1096300029203D4159B4284929253D49D928494582 +:10964000293D4959B4202849444541293D415944BF +:1096500049593541C82849295E2B3A233D49C82834 +:10966000495229233D4159D228495A29253D41597A +:10967000DA28495329253D4159DA495E2849295EAE +:10968000233D49C82B5E2849295E2B3D41D9233A09 +:109690005E2849295E2B3D49C82849295E2B3D415A +:1096A000D9284952293D45D228494748293D4159A1 +:1096B000B428494C44293D4159354CC420284947D8 +:1096C0004E293D494847CE2849474E29203D41591A +:1096D00034CE2849474E295E3D415934CE2849476A +:1096E0004E29253D415934CE284943524F293D4109 +:1096F00059344B524FC82849515545293D49593491 +:10970000CB2849293D49C85DCA20284A29203D4A1D +:109710004559B4284A293DCA5DCB20284B29203D14 +:109720004B4559B420284B294EBD284B293DCB5DD4 +:10973000CC20284C29203D454834CC284C4F294387 +:10974000233D4C4FD74C284C29BD233A5E284C2949 +:10975000253D55CC284C454144293D4C4959C42010 +:10976000284C41554748293D4C414534C6284C2991 +:109770003DCC5DCD20284D29203D454834CD2028C5 +:109780004D522E29203D4D494834535445D220286E +:109790004D532E293D4D494835DA20284D52532E40 +:1097A00029203D4D494834534958DA284D4F562910 +:1097B0003D4D555734D6284D414348494E293D4DDE +:1097C00041485348495935CE4D284D29BD284D298A +:1097D0003DCD5DCE20284E29203D454834CE45283C +:1097E0004E47292B3D4ECA284E4729523D4E58C759 +:1097F000284E4729233D4E58C7284E474C29253D22 +:109800004E584755CC284E47293D4ED8284E4B2917 +:109810003D4E58CB20284E4F5729203D4E4157B43E +:109820004E284E29BD284E4F4E29453D4E414834C5 +:10983000CE284E293DCE5DCF20284F29203D4F48D0 +:1098400034D7284F4629203D4148D620284F482963 +:10985000203D4F57B5284F524F554748293D455257 +:10986000344FD7233A284F5229203D45D2233A2856 +:109870004F525329203D4552DA284F52293D414F3E +:10988000D220284F4E45293D574148CE23284F4EE0 +:109890004529203D574148CE284F57293D4FD720D5 +:1098A000284F564552293D4F57355645D2505228DC +:1098B0004F29563D5557B4284F56293D414834D677 +:1098C000284F295E253D4F57B5284F295E454E3D0F +:1098D0004FD7284F295E49233D4F57B5284F4C2974 +:1098E000443D4F5734CC284F55474854293D414FAC +:1098F00035D4284F554748293D414835C620284F83 +:1099000055293D41D748284F552953233D4157B448 +:10991000284F5553293D4158D3284F5552293D4F83 +:1099200048D2284F554C44293D554835C4284F55F9 +:10993000295E4C3D4148B5284F5550293D55573576 +:10994000D0284F55293D41D7284F59293D4FD92877 +:109950004F494E47293D4F573449484ED8284F4923 +:10996000293D4F59B5284F4F52293D4F4835D228F0 +:109970004F4F4B293D554835CB46284F4F44293D45 +:10998000555735C44C284F4F44293D414835C44DA7 +:10999000284F4F44293D555735C4284F4F44293D42 +:1099A000554835C446284F4F54293D554835D4288D +:1099B0004F4F293D5557B5284F27293D4FC8284FB0 +:1099C00029453D4FD7284F29203D4FD7284F4129C2 +:1099D0003D4F57B420284F4E4C59293D4F57344ED8 +:1099E0004C49D920284F4E4345293D574148344ED4 +:1099F000D3284F4E2754293D4F57344ED443284F38 +:109A0000294E3D41C1284F294E473D41CF203A5E66 +:109A1000284F294E3D41C849284F4E293D55CE2358 +:109A20003A284F4E293D55CE235E284F4E293D55AD +:109A3000CE284F2953543D4FD7284F46295E3D41EC +:109A40004F34C6284F54484552293D414835444873 +:109A500045D252284F29423D5241C15E52284F29DA +:109A60003A233D4F57B5284F535329203D414F3599 +:109A7000D3233A5E284F4D293D4148CD284F293DFB +:109A800041C15DD020285029203D504959B428506B +:109A900048293DC62850454F504C293D504959351D +:109AA0005055CC28504F57293D504157B428505558 +:109AB0005429203D505548D428502950BD285029BC +:109AC00053BD2850294EBD2850524F462E293D5097 +:109AD000524F48464548345345D22850293DD05D21 +:109AE000D120285129203D4B595557B42851554173 +:109AF00052293D4B574F4835D2285155293D4BD718 +:109B00002851293DCB5DD220285229203D414135A5 +:109B1000D220285245295E233D5249D92852295244 +:109B2000BD2852293DD25DD320285329203D4548E8 +:109B300034D3285348293D53C8232853494F4E292D +:109B40003D5A4855CE28534F4D45293D534148CDA8 +:109B5000232853555229233D5A4845D2285355525C +:109B600029233D534845D22328535529233D5A489C +:109B700055D7232853535529233D534855D72328D8 +:109B8000534544293D5AC423285329233DDA2853F9 +:109B9000414944293D534548C45E2853494F4E2905 +:109BA0003D534855CE28532953BD2E285329203DD7 +:109BB000DA233A2E45285329203DDA233A5E23281A +:109BC0005329203DD355285329203DD3203A23281B +:109BD0005329203DDA2323285329203DDA20285316 +:109BE0004348293D53CB285329432BBD2328534DAC +:109BF000293D5A55CD2328534E29273D5A55CD2866 +:109C000053544C45293D5355CC2853293DD35DD45D +:109C100020285429203D544959B420285448452926 +:109C200020233D444849D9202854484529203D4413 +:109C30004841D828544F29203D5455D8202854480D +:109C40004154293D44484145D4202854484953298A +:109C5000203D44484948D3202854484559293D448B +:109C60004845D920285448455245293D444845484F +:109C7000D22854484552293D444845D228544845A5 +:109C80004952293D44484548D220285448414E294C +:109C9000203D44484145CE20285448454D29203D8B +:109CA00044484145CE28544845534529203D444821 +:109CB0004959DA20285448454E293D44484548CE64 +:109CC000285448524F554748293D5448525557B497 +:109CD0002854484F5345293D44484F48DA285448B2 +:109CE0004F55474829203D44484FD728544F4441B9 +:109CF00059293D5455584445D928544F4D4F295260 +:109D0000524F573D54554D4141B528544F29544168 +:109D10004C3D544F57B5202854485553293D44488D +:109D2000414834D3285448293D54C8233A2854453F +:109D300044293D544958C45328544929234E3D438E +:109D4000C8285449294F3D53C828544929413D53F7 +:109D5000C8285449454E293D534855CE285455529C +:109D600029233D434845D228545529413D43485570 +:109D7000D7202854574F293D5455D72628542945D4 +:109D80004E20BD2854293DD45DD520285529203D9D +:109D9000595557B42028554E29493D595557CE207D +:109DA00028554E293D4148CE202855504F4E293D3B +:109DB000415850414FCE4028555229233D554834F3 +:109DC000D228555229233D59554834D22855522975 +:109DD0003D45D22855295E203D41C82855295E5E63 +:109DE0003D4148B5285559293D4159B52047285589 +:109DF0002923BD4728552925BD47285529233DD767 +:109E0000234E2855293D5955D7402855293D55D72A +:109E10002855293D5955D75DD620285629203D562D +:109E20004959B42856494557293D56595557B528DB +:109E300056293DD65DD720285729203D4441483436 +:109E400042554C5955D7202857455245293D57452D +:109E5000D22857412953483D5741C12857412953DA +:109E6000543D5745D928574129533D5741C8285794 +:109E70004129543D5741C1285748455245293D572E +:109E8000484548D22857484154293D57484148D46D +:109E90002857484F4C293D2F484F57CC2857484FFB +:109EA000293D2F4855D7285748293D57C82857419D +:109EB0005229233D574548D228574152293D574101 +:109EC0004FD228574F52295E3D5745D22857522925 +:109ED0003DD228574F4D29413D575548CD28574F22 +:109EE0004D29453D574948CD2857454129523D57B1 +:109EF00045C82857414E54293D574141354ED4411C +:109F00004E5328574552293D45D22857293DD75D04 +:109F1000D820285829203D4548344BD2202858299C +:109F20003DDA2858293D4BD35DD920285929203DB9 +:109F3000574159B428594F554E47293D5941484E2C +:109F4000D82028594F5552293D594F48D2202859D9 +:109F50004F55293D5955D72028594553293D594535 +:109F600048D3202859293DD9462859293D41D9505F +:109F70005328594348293D4159CB233A5E28592952 +:109F80003D49D9233A5E285929493D49D9203A28E3 +:109F90005929203D41D9203A285929233D41D9202A +:109FA0003A2859295E2B3A233D49C8203A28592995 +:109FB0005E233D41D92859293D49C85DDA20285AF8 +:109FC00029203D5A4959B4285A293DDAEA74727554 +:109FD000650066616C736500286E756C6C290030D5 +:109FE00030303030303030303030303030303000A1 +:109FF0002020202020202020202020202020202061 +:10A00000001213141615170F0D0E1110696E6C69DE +:10A010006E6520617373656D626C6572206D75731A +:10A020007420626520612066756E6374696F6E00CE +:10A03000756E6B6E6F776E207479706500726574E3 +:10A0400075726E20616E6E6F746174696F6E206DD3 +:10A0500075737420626520616E206964656E746931 +:10A060006669657200657870656374696E67206102 +:10A070006E20617373656D626C657220696E7374B6 +:10A0800072756374696F6E00276C6162656C27205E +:10A090007265717569726573203120617267756DC3 +:10A0A000656E74006C6162656C20726564656669DA +:10A0B0006E65640027616C69676E27207265717533 +:10A0C00069726573203120617267756D656E740009 +:10A0D00027646174612720726571756972657320E8 +:10A0E0006174206C65617374203220617267756DD4 +:10A0F000656E7473002764617461272072657175E1 +:10A100006972657320696E74656765722061726734 +:10A11000756D656E7473002A78206D757374206296 +:10A12000652061737369676E6D656E74207461720A +:10A1300067657400696E7465726E616C20636F6D23 +:10A1400070696C6572206572726F72006D756C74E7 +:10A1500069706C65202A7820696E20617373696765 +:10A160006E6D656E740063616E2774206173736930 +:10A17000676E20746F206C69746572616C00636136 +:10A180006E27742061737369676E20746F20657821 +:10A190007072657373696F6E00696C6C6567616C72 +:10A1A0002065787072657373696F6E20666F7220B8 +:10A1B0006175676D656E7465642061737369676E40 +:10A1C0006D656E7400737570657228292063616C0B +:10A1D0006C2063616E6E6F742066696E64207365B7 +:10A1E0006C660063616E27742068617665206D750A +:10A1F0006C7469706C65202A780063616E27742026 +:10A2000068617665206D756C7469706C65202A2AAA +:10A2100078004C4853206F66206B6579776F7264C5 +:10A2200020617267206D75737420626520616E20F5 +:10A230006964006E6F6E2D6B6579776F7264206153 +:10A240007267206166746572206B6579776F7264DE +:10A250002061726700696E76616C6964206D696364 +:10A26000726F707974686F6E206465636F72617469 +:10A270006F72006E6F6E2D64656661756C7420611F +:10A280007267756D656E7420666F6C6C6F77732086 +:10A2900064656661756C7420617267756D656E7456 +:10A2A0000064656661756C742027657863657074F9 +:10A2B0003A27206D757374206265206C6173740099 +:10A2C00063616E2774206465636C617265206E6FD4 +:10A2D0006E6C6F63616C20696E206F75746572209F +:10A2E000636F6465006964656E7469666965722090 +:10A2F0007265646566696E6564206173206E6F6E59 +:10A300006C6F63616C006E6F2062696E64696E676A +:10A3100020666F72206E6F6E6C6F63616C20666F6B +:10A32000756E64006964656E746966696572207231 +:10A3300065646566696E656420617320676C6F6231 +:10A34000616C0027636F6E74696E756527206F7589 +:10A350007473696465206C6F6F7000276272656149 +:10A360006B27206F757473696465206C6F6F700064 +:10A3700063616E27742064656C6574652065787010 +:10A3800072657373696F6E006E616D6520726575BD +:10A3900073656420666F7220617267756D656E7497 +:10A3A000002772657475726E27206F757473696407 +:10A3B000652066756E6374696F6E00277969656CD8 +:10A3C0006427206F7574736964652066756E6374A5 +:10A3D000696F6E00657870656374696E67206B6580 +:10A3E000793A76616C756520666F72206469637472 +:10A3F000696F6E61727900657870656374696E6704 +:10A40000206A75737420612076616C756520666FB3 +:10A4100072207365740062756666657220746F6F72 +:10A4200020736D616C6C006368722829206172670B +:10A43000206E6F7420696E2072616E6765283078B7 +:10A44000313130303030290061726720697320610A +:10A450006E20656D7074792073657175656E6365C6 +:10A46000006F7264282920657870656374656420C4 +:10A4700061206368617261637465722C2062757417 +:10A4800020737472696E67206F66206C656E6774E6 +:10A490006820256420666F756E64006D7573742086 +:10A4A000757365206B6579776F726420617267756B +:10A4B0006D656E7420666F72206B65792066756EAF +:10A4C0006374696F6E000A2573006C6F63616C20A2 +:10A4D0007661726961626C65207265666572656E2F +:10A4E000636564206265666F726520617373696776 +:10A4F0006E6D656E74006279746520636F646520AB +:10A500006E6F7420696D706C656D656E7465640046 +:10A510004E6F206163746976652065786365707439 +:10A52000696F6E20746F2072657261697365007364 +:10A530007461636B3A202575206F7574206F6620F7 +:10A5400025640A007173747220706F6F6C3A206E0C +:10A550005F706F6F6C3D25752C206E5F7173747228 +:10A560003D25752C206E5F7374725F646174615F4A +:10A5700062797465733D25752C206E5F746F74610C +:10A580006C5F62797465733D25750A0025713D0025 +:10A59000696E76616C6964206765737475726500B5 +:10A5A0002B2D786B63642E636F6D2F333533B32D92 +:10A5B0002B0A7CC0207C0A7CB4205C302F89207C54 +:10A5C0000A7CB2202F83205C89207C0A7C88205959 +:10A5D0006F7527726520666C79696E672192204DD0 +:10A5E0006963726F507974686F6E2120202F7C88A8 +:10A5F000207C0A7C8C20486F773FA6205C205C87FB +:10A60000207C0A7C8C202FB3207C0A7C8A2030B5E9 +:10A61000207C0A7C89202F7C5CB4207C0A7C8A20E8 +:10A620007CB5207C0A7C852D845F2F5F5C9E5F96C5 +:10A630002D7C0A7CC0207C0A2BC02D2B0A00766161 +:10A640006C7565206D7573742062652030206F72A3 +:10A6500020310076616C7565206D757374206265BC +:10A66000206265747765656E203020616E642031EC +:10A6700030323300696E76616C696420706572698E +:10A680006F6400657870656374696E67206120701F +:10A69000696E004D75737420626520616E2041758E +:10A6A00064696F42756666657200696E64657820DC +:10A6B0006F7574206F6620626F756E6473004361FE +:10A6C0006E6E6F742064656C65746520656C656D75 +:10A6D000656E7473206F6620417564696F467261A0 +:10A6E0006D650076616C7565206F7574206F6620EE +:10A6F00072616E676500416C6C6F636174696F6E47 +:10A7000020696E20696E746572727570742068615C +:10A710006E646C6572006E6F7420616E20417564AA +:10A72000696F4672616D650043616E6E6F74207370 +:10A7300065742072657475726E5F70696E207769DA +:10A7400074686F75742070696E00696E6465782036 +:10A7500063616E6E6F74206265206E6567617469F7 +:10A76000766500696E64657820746F6F206C617225 +:10A770006765005468697320696D6167652063616E +:10A780006E6E6F74206265206D6F646966696564C2 +:10A790002E2054727920636F7079696E6720697416 +:10A7A0002066697273742E006272696768746E65E0 +:10A7B0007373206F7574206F6620626F756E64739B +:10A7C0002E00496D61676528000A2020202000279F +:10A7D0000A202020202700303132333435363738F4 +:10A7E0003900556E657870656374656420636861CF +:10A7F00072616374657220696E20496D61676520BE +:10A80000646566696E6974696F6E2E00696D616753 +:10A8100065206461746120697320696E636F727270 +:10A820006563742073697A6500496D6167652829DD +:10A830002074616B6573203020746F203320617247 +:10A8400067756D656E747300496D6167652873295E +:10A850002074616B6573206120737472696E672E5A +:10A86000004272696768746E657373206D756C74ED +:10A8700069706C696572206D757374206E6F7420D9 +:10A880006265206E656761746976652E00496D6149 +:10A89000676573206D757374206265207468652028 +:10A8A00073616D652073697A652E004932432072A9 +:10A8B000656164206661696C6564207769746820ED +:10A8C0006572726F7220636F64652025640049327F +:10A8D00043207772697465206661696C65642077CE +:10A8E000697468206572726F7220636F64652025D9 +:10A8F00064004D6963726F507974686F6E206F6E7B +:10A9000020746865206D6963726F3A6269742069AA +:10A91000732062726F7567687420746F20796F7529 +:10A920002062793A0A44616D69656E20502E204795 +:10A93000656F7267652C204D61726B205368616E84 +:10A940006E6F6E2C205261646F6D697220446F705F +:10A95000696572616C736B692C204D6174746865F4 +:10A960007720456C73652C0A4361726F6C205769C0 +:10A970006C6C696E672C20546F6D2056696E657221 +:10A980002C20416C616E204A61636B736F6E2C20CA +:10A990004E69636B20436F67686C616E2C204A6F51 +:10A9A0007365706820486169672C0A416C6578207E +:10A9B0004368616E2C20416E64726561204772614C +:10A9C0006E64692C205061756C204567616E2C2087 +:10A9D00050696F7472204B617370727A796B2C209E +:10A9E000416E64726577204D756C686F6C6C616E3A +:10A9F000642C0A4D61747420576865656C65722C0F +:10AA0000204A6F6520476C616E63792C2041626239 +:10AA100069652042726F6F6B7320616E64204E69AE +:10AA200063686F6C617320482E20546F6C6C657284 +:10AA30007665792E0A00546865205A656E206F6627 +:10AA4000204D6963726F507974686F6E2C20627943 +:10AA5000204E6963686F6C617320482E20546F6CC0 +:10AA60006C65727665790A0A436F64652C0A4861E1 +:10AA7000636B2069742C0A4C657373206973206DB5 +:10AA80006F72652C0A4B6565702069742073696D5F +:10AA9000706C652C0A536D616C6C20697320626563 +:10AAA0006175746966756C2C0A0A42652062726170 +:10AAB00076652120427265616B207468696E6773E8 +:10AAC00021204C6561726E20616E6420686176653C +:10AAD0002066756E210A4578707265737320796FF0 +:10AAE000757273656C662077697468204D6963724E +:10AAF0006F507974686F6E2E0A0A48617070792001 +:10AB00006861636B696E6721203A2D290A00696EBE +:10AB100076616C696420636F6C6F757200696E7624 +:10AB2000616C6964206E756D626572206F6620705D +:10AB30006978656C73000808080808080808002090 +:10AB4000202020202020200001000100E2ECF0F471 +:10AB5000F8FC0004726164696F206973206E6F7481 +:10AB600020656E61626C656400617267756D656E0B +:10AB70007473206D757374206265206B6579776FCF +:10AB8000726420617267756D656E747300756E6BAB +:10AB90006E6F776E20617267756D656E7420272504 +:10ABA00071270076616C7565206F7574206F662063 +:10ABB00072616E676520666F7220617267756D6580 +:10ABC0006E74202725712700726563656976656458 +:10ABD000207061636B6574206973206E6F742061EF +:10ABE00020737472696E67006E6F7420616E2069E5 +:10ABF0006D6167652E00696E646578206F757420DD +:10AC00006F6620626F756E64732E0000000402028E +:10AC10000402000002040404000202000404030110 +:10AC20000000010303030001010203030402010108 +:10AC300003010403010003000004010102000003FA +:10AC4000023A257000772B002F737464696E002F11 +:10AC5000737464657272002F7374646F7574004F3F +:10AC60006E6C792038626974732053504920737573 +:10AC700070706F727465640053504920666F726D16 +:10AC80006174206572726F72004E6F206176616927 +:10AC90006C61626C6520535049004E6F2061766193 +:10ACA000696C61626C65204932430000000000005D +:10ACB00008080800080A4A4000000A5FEA5FEA0E36 +:10ACC000D92ED36E19324489330C924C924D080818 +:10ACD00000000004880808040804848488000A44EA +:10ACE0008A4000048EC480000000048800000EC06A +:10ACF00000000000080001224488100C9252524CBF +:10AD0000048C84848E1C824C901E1EC244924C067D +:10AD1000CA525FE21FF01EC13E02448ED12E1FE2D6 +:10AD20004488100ED12ED12E0ED12EC488000800DA +:10AD3000080000048004880244880482000EC00ECB +:10AD4000C008048244880ED126C0040ED135B36CED +:10AD50000C925ED2521C925C925C0ED010100E1CB3 +:10AD60009252525C1ED01C901E1ED01C90100ED011 +:10AD700013712E12525ED2521C8808081C1FE24228 +:10AD8000524C1254981492101010101E113B75B1B1 +:10AD900031113935B3710C9252524C1C925C9010A7 +:10ADA0000C92524C861C925C92510ED00C825C1F0D +:10ADB000E4848484125252524C1131312A441131AC +:10ADC00035BB7112524C9252112A4484841EC4889D +:10ADD000101E0EC808080E10080482410EC242421E +:10ADE0004E048A400000000000001F08048000009C +:10ADF000000ED2524F10101C925C000ED0100E02AA +:10AE0000424ED24E0C925C900E06C81C88080ED2A0 +:10AE10004EC24C10101C9252080008080802400252 +:10AE2000424C10149814920808080806001B75B1CB +:10AE300031001C925252000C92524C001C925C90B9 +:10AE4000000ED24EC2000ED010100006C8049808A2 +:10AE5000080EC807001252524F0011312A44001147 +:10AE60003135BB00124C8C9200112A4498001EC44C +:10AE7000881E06C48C8486080808080818080C88F0 +:10AE80001800000C83607A76677074756F6965616D +:10AE90007A76677074756F6965617A766770740128 +:10AEA000000002000003000004010004020004038B +:10AEB000000304000204000104000003000002007B +:10AEC000000100302C3235352C302C3235352C3009 +:10AED0000A302C3235352C302C3235352C300A30B6 +:10AEE0002C302C302C302C300A3235352C302C3094 +:10AEF0002C302C3235350A302C3235352C32353564 +:10AF00002C3235352C300A00445241572041204321 +:10AF10004952434C4500312E342E31390002000491 +:10AF200001080200000402020402000002040404FA +:10AF300000020200040403010000010303030001F6 +:10AF400001020303040201010301040301000300E1 +:10AF50000004010102000003021B1B000E1100008F +:10AF600000006261642068616E646C6520746F200B +:10AF7000756E6465726C79696E67207472616E7348 +:10AF8000706F72740050776D4F75742070696E2009 +:10AF90006D617070696E67206661696C65642E20F2 +:10AFA000416C6C20617661696C61626C6520505700 +:10AFB0004D206368616E6E656C73206172652069F7 +:10AFC0006E207573652E00636F756C64206E6F74F0 +:10AFD0002070696E6F75740070696E6D6170206DA0 +:10AFE00069732D6D617463680070696E6D617020A6 +:10AFF0006E6F7420666F756E6420666F7220706568 +:10B00000726970686572616C0070696E6D61702044 +:10B010006E6F7420666F756E6420666F7220667541 +:10B020006E6374696F6E00232D302B2000686C4CAA +:10B030000065666745464700303132333435363770 +:10B040003839414243444546003031323334353695 +:10B0500037383961626364656600412D46612D664B +:10B06000383930313233343536375D002B2D0030EE +:10B070003000785800002020202020202020202888 +:10B0800028282828202020202020202020202020A0 +:10B0900020202020202088101010101010101010D8 +:10B0A0001010101010100404040404040404040418 +:10B0B0001010101010101041414141414101010197 +:10B0C0000101010101010101010101010101010170 +:10B0D000011010101010104242424242420202027D +:10B0E0000202020202020202020202020202020240 +:10B0F00002101010102000000000000000000000EE +:10B10000000000000000000000000000000000003F +:10B11000000000000000000000000000000000002F +:10B12000000000000000000000000000000000001F +:10B13000000000000000000000000000000000000F +:10B1400000000000000000000000000000000000FF +:10B1500000000000000000000000000000000000EF +:10B1600000000000000000000000000000000000DF +:10B1700000000000000000001000000000000000BF +:10B18000017A5200027C0E011B0C0D001000000021 +:10B19000180000009402FFFF1400000000000000EF +:10B1A00000000000D04FFC7F010000000000000004 +:10B1B000294803000000000008000020E20400000D +:10B1C000175402001754020017540200AC01030088 +:10B1D000BC020300442A002000000000BC0203005F +:10B1E0006C2A002000000000BC10030000000000DA +:10B1F0000000000000000000E803000064150300E8 +:10B20000000000000000000000000000000000003E +:10B21000000000000000000000000100000000002D +:10B22000000000000000000000000000000000001E +:10B2300000000000D82F0020ABAC0300000000008D +:10B24000041F0300241F0300441F0300000000002C +:10B25000000000000000000000000000A9AC030096 +:10B2600000000000000000000000000000000000DE +:10B2700000000000000000000000000000000000CE +:10B2800000000000000000000000000000000000BE +:10B2900000000000000000000000000090000020FE +:10B2A00075B0030078000400040488130100010055 +:10B2B0000100010101030204010000003901000046 +:10B2C00021620100E1780100198001000190010074 +:04B2D0000D0100006C +:020000040003F7 +mycodegoeshere +:04000005000153EDB6 +:00000001FF diff --git a/lib/skulpt/microbit/mb.css b/lib/skulpt/microbit/mb.css new file mode 100644 index 00000000..4572c565 --- /dev/null +++ b/lib/skulpt/microbit/mb.css @@ -0,0 +1,165 @@ +#mb_tabs { + font-size:10pt; +} +#mb_pin_num { + font-size: 0.8em; +} + +#microbit { + width: 300px; + height: 236px; + background-image: url('mb.png'); + position: relative; + transition: all 0.5s; +} + +.mb_btn { + width: 22px; + height: 22px; + border-radius: 11px; + background-color: #333; + transition: all 0.25s; + position: absolute; + opacity: 0.9; +} + +.mb_led { + width: 6px; + height: 6px; + transition: all 0.1s; + position: absolute; +} + + +.mb_info { + font-size: 8pt; +} + +.mb_help_link { + font-size: small; + background-color: #FFF; + border-radius: 10px; + padding: 10px; + color: #000; + transition: all 0.5s; + margin: 5px; + border-style: solid; + border-width: 1px; + border-color: #000; + display:inline-block; +} + +.mb_help_link:hover { + background-color: #F00; +} +.mb_led_brightness_0 { background-color: #000; } +.mb_led_brightness_1 { background-color: #300; } +.mb_led_brightness_2 { background-color: #500; } +.mb_led_brightness_3 { background-color: #700; } +.mb_led_brightness_4 { background-color: #900; } +.mb_led_brightness_5 { background-color: #a00; } +.mb_led_brightness_6 { background-color: #b00; } +.mb_led_brightness_7 { background-color: #c00; } +.mb_led_brightness_8 { background-color: #d00; } +.mb_led_brightness_9 { background-color: #f00; } +.mb_led_row_0 { top: 73px; } +.mb_led_row_1 { top: 96px; } +.mb_led_row_2 { top: 119px; } +.mb_led_row_3 { top: 141px; } +.mb_led_row_4 { top: 164px; } + +.mb_led_col_0 { left: 104px; } +.mb_led_col_1 { left: 126px; } +.mb_led_col_2 { left: 149px; } +.mb_led_col_3 { left: 171px; } +.mb_led_col_4 { left: 195px; } + +#mb_btn_A { + left: 24px; + top: 101px; +} + +#mb_btn_B { + left: 256px; + top: 101px; +} + +.mb_btn:hover { + background-color: #F00; +} + +.mb_slider { + width: 100px; + display: inline-block; + margin: 0px 10px 0px 10px; +} +#mb_com_heading { + width: 100px; + height: 100px; + line-height: 100px; + text-align: center; + vertical-align: center; + background-image: url('compassbk.jpg'); + position: relative; +} +#mb_com_value_heading { + font-size: 2em; +} +#mb_compass_pointer { + position: absolute; + left: 0px; + top: 0px; + width: 100px; + height: 100px; + /*transition: all 0.5s;*/ + background-image: url('compassarrow.png'); +} +.mb_slider_com { + width: 100px; + display: inline-block; + margin: 0px 10px 0px 10px; +} +#mb_gesture_list { + border-style: solid; + border-width: 1px; + border-color: #000; + min-height: 1em; +} +.mb_current_gesture { + color: #F00; + margin; 1em; +} +.mb_active_gesture_down { + transform: rotate(180deg); +} +.mb_active_gesture_left, .mb_active_gesture_right { + -webkit-transform: rotateY(80deg);transform: rotateY(80deg); +} +.mb_active_gesture_facedown { + -webkit-transform: rotateY(180deg);transform: rotateY(180deg); +} +.mb_active_gesture_freefall { + transform: scale(0.2,0.2); +} +@keyframes shake { + 0% {transform: scale(1,1);} + 50% {transform: scale(0.8,0.8);} + 100% {transform: scale(1,1);} +} +.mb_active_gesture_shake { + animation-name: shake; + animation-duration: 0.3s; + animation-iteration-count: infinite; +} +.mb_active_gesture_3g { + animation-name: shake; + animation-duration: 0.5s; +} +.mb_active_gesture_6g { + animation-name: shake; + animation-duration: 0.3s; +} +.mb_active_gesture_8g { + animation-name: shake; + animation-duration: 0.1s; +} \ No newline at end of file diff --git a/lib/skulpt/microbit/mb.png b/lib/skulpt/microbit/mb.png new file mode 100644 index 00000000..4ee8e7c2 Binary files /dev/null and b/lib/skulpt/microbit/mb.png differ diff --git a/lib/skulpt/music/__init__.js b/lib/skulpt/music/__init__.js new file mode 100644 index 00000000..b85eef52 --- /dev/null +++ b/lib/skulpt/music/__init__.js @@ -0,0 +1,314 @@ +var $builtinmodule = function(name) { + var mod = {}; + mod._data = {}; + mod._data.ticks = 4; + mod._data.bpm = 120; + mod._data.duration = 4; + mod._data.octave = 4; + + var set_tempo = function(ticks, bpm) { + if(ticks === undefined) + ticks = new Sk.builtin.nmber(4); + if(bpm === undefined) + bpm = new Sk.builtin.nmber(120); + + mod._data.ticks = ticks.v; + mod._data.bpm = bpm.v; + } + + set_tempo.co_varnames = ['ticks', 'bpm']; + set_tempo.$defaults = [Sk.builtin.nmber(4), Sk.builtin.nmber(120)]; + set_tempo.co_numargs = 2; + mod.set_tempo = new Sk.builtin.func(set_tempo); + + mod.get_tempo = new Sk.builtin.func(function() { + return new Sk.builtin.tuple(Sk.ffi.remapToPy([mod._data.ticks, mod._data.bpm])); + }); + + var play = function(music, pin, wait, loop){ + if(mod._data.stop) { + delete mod._data.stop; + } + if(wait === undefined) + wait = new Sk.builtin.bool(true); + if(loop === undefined) + loop = new Sk.builtin.bool(false); + + var notes = Sk.ffi.remapToJs(music); + + return PythonIDE.runAsync(function(resolve, reject) { + var i = 0; + var timeout = 60000 / mod._data.bpm / mod._data.ticks; + + function playNextNote() { + if(mod._data.stop) { + delete mod._data.stop; + return; + } + if(!mod._data.audioCtx) { + mod._data.audioCtx = new (window.AudioContext || window.webkitAudioContext)(); + } + if(mod._data.osc) { + mod._data.osc.stop(); + delete mod._data.osc; + } + + if(i >= notes.length){ + if(loop.v) { + i = 0; + } else { + if(wait.v) + resolve(); + return; + } + } + var n = notes[i].toLowerCase(); + var d = n.match(/([rcdefgab][b#]?)([0-9]?)(:([0-9]*))?/); + n = {short: n, + note: d[1], + octave: Number.parseInt(d[2]), + ticks: d[4]? Number.parseInt(d[4]) : 1 + } + + switch(n.note) { + case 'c': + n.f = 16.352; + break; + case 'c#': + case 'db': + n.f = 17.324; + break; + case 'd': + n.f = 18.354; + break; + case 'd#': + case 'eb': + n.f = 19.445; + break; + case 'e': + n.f = 20.602; + break; + case 'f': + n.f = 21.827; + break; + case 'f#': + case 'gb': + n.f = 23.125; + break; + case 'g': + n.f = 24.500; + break; + case 'g#': + case 'ab': + n.f = 25.957; + break; + case 'a': + n.f = 27.500; + break; + case 'a#': + case 'bb': + n.f = 29.135; + break; + case 'b': + n.f = 30.868; + break; + case 'r': + n.f = 0; + break; + } + if(!n.octave) { + n.octave = mod._data.octave; + } else { + mod._data.octave = n.octave; + } + for(var o = 0; o < n.octave; o++) { + n.f = n.f * 2; + } + n.f = Math.round(n.f); + + if(n.f > 0) { + var osc = mod._data.audioCtx.createOscillator(); + mod._data.osc = osc; + osc.type = 'sine'; + osc.frequency.value = n.f; + osc.connect(mod._data.audioCtx.destination); + osc.start(); + } + i++; + + if(i <= notes.length) { + setTimeout(playNextNote, timeout * n.ticks); + } + } + playNextNote(); + if(!wait.v) { + resolve(); + } + + }); + + } + play.co_varnames = ['music', 'pin', 'wait', 'loop']; + play.$defaults = [undefined, undefined, Sk.builtin.bool(true), Sk.builtin.bool(false)]; + play.co_numargs = 4; + mod.play = new Sk.builtin.func(play); + + var pitch = function(frequency, len, pin, wait){ + if(mod._data.stop) { + delete mod._data.stop; + } + if(len === undefined) + len = new Sk.builtin.nmber(-1); + if(wait === undefined) + wait = new Sk.builtin.bool(true); + + return PythonIDE.runAsync(function(resolve, reject) { + if(!mod._data.audioCtx) { + mod._data.audioCtx = new (window.AudioContext || window.webkitAudioContext)(); + } + if(mod._data.osc) { + mod._data.osc.stop(); + delete mod._data.osc; + } + var osc = mod._data.audioCtx.createOscillator(); + mod._data.osc = osc; + osc.type = 'sine'; + osc.frequency.value = frequency.v; + osc.connect(mod._data.audioCtx.destination); + osc.start(); + if(len.v > 0) { + setTimeout(function() { + osc.stop(); + if(wait.v) { + osc.stop(); + resolve(); + } + }, len.v); + } + if(!wait.v) { + resolve(); + } + }); + + } + pitch.co_varnames = ['frequency', 'len', 'pin', 'wait']; + pitch.$defaults = [undefined, Sk.builtin.nmber(-1), undefined, Sk.builtin.bool(false)]; + pitch.co_numargs = 4; + mod.pitch = new Sk.builtin.func(pitch); + + var stop = function(pin) { + if(mod._data.audioCtx && mod._data.osc) { + mod._data.osc.stop(); + delete mod._data.osc; + mod._data.stop = true; + } + } + stop.co_varnames = ['pin']; + stop.$defaults = [undefined]; + stop.co_numargs = 1; + mod.stop = new Sk.builtin.func(stop); + + + mod.reset = new Sk.builtin.func(function() { + mod._data.ticks = 4; + mod._data.bpm = 120; + mod._data.duration = 4; + mod._data.octave = 4; + }); + + mod.DADADADUM = Sk.ffi.remapToPy(["r4:2", "g", "g", "g", "eb:8", "r:2", "f", "f", "f", "d:8"]); + + mod.ENTERTAINER = Sk.ffi.remapToPy(["d4:1", "d#", "e", "c5:2", "e4:1", "c5:2", "e4:1", "c5:3", "c:1", "d", "d#", "e", "c", "d", "e:2", "b4:1", "d5:2", "c:4"]); + + mod.PRELUDE = Sk.ffi.remapToPy(["c4:1", "e", "g", "c5", "e", "g4", "c5", "e", "c4", "e", + "g", "c5", "e", "g4", "c5", "e", "c4", "d", "g", "d5", "f", + "g4", "d5", "f", "c4", "d", "g", "d5", "f", "g4", "d5", "f", + "b3", "d4", "g", "d5", "f", "g4", "d5", "f", "b3", "d4", "g", + "d5", "f", "g4", "d5", "f", "c4", "e", "g", "c5", "e", "g4", + "c5", "e", "c4", "e", "g", "c5", "e", "g4", "c5", "e"]); + + mod.ODE = Sk.ffi.remapToPy(["e4", "e", "f", "g", "g", "f", "e", "d", "c", "c", "d", "e", + "e:6", "d:2", "d:8", "e:4", "e", "f", "g", + "g", "f", "e", "d", "c", "c", "d", "e", "d:6", + "c:2", "c:8"]); + + mod.NYAN = Sk.ffi.remapToPy(["f#5:2", "g#", "c#:1", "d#:2", + "b4:1", "d5:1", "c#", "b4:2", "b", + "c#5", "d", "d:1", "c#", "b4:1", + "c#5:1", "d#", "f#", "g#", "d#", + "f#", "c#", "d", "b4", "c#5", "b4", + "d#5:2", "f#", "g#:1", "d#", + "f#", "c#", "d#", "b4", "d5", "d#", "d", + "c#", "b4", "c#5", "d:2", "b4:1", "c#5", + "d#", "f#", "c#", "d", "c#", "b4", + "c#5:2", "b4", "c#5", "b4", "f#:1", + "g#", "b:2", "f#:1", "g#", "b", + "c#5", "d#", "b4", "e5", "d#", "e", "f#", + "b4:2", "b", "f#:1", "g#", "b", "f#", + "e5", "d#", "c#", "b4", "f#", "d#", "e", + "f#", "b:2", "f#:1", "g#", "b:2", + "f#:1", "g#", "b", "b", "c#5", "d#", + "b4", "f#", "g#", "f#", "b:2", "b:1", + "a#", "b", "f#", "g#", "b", "e5", "d#", "e", + "f#", "b4:2", "c#5"]); + + mod.RINGTONE = Sk.ffi.remapToPy(["c4:1", "d", "e:2", "g", "d:1", "e", "f:2", + "a", "e:1", "f", "g:2", "b", "c5:4"]); + + mod.FUNK = Sk.ffi.remapToPy(["c2:2", "c", "d#", "c:1", "f:2", "c:1", + "f:2", "f#", "g", "c", "c", "g", "c:1", + "f#:2", "c:1", "f#:2", "f", "d#"]); + + mod.BLUES = Sk.ffi.remapToPy(["c2:2", "e", "g", "a", "a#", "a", "g", "e", + "c2:2", "e", "g", "a", "a#", "a", "g", "e", "f", "a", + "c3", "d", "d#", "d", "c", "a2", "c2:2", "e", "g", + "a", "a#", "a", "g", "e", "g", "b", "d3", "f", "f2", "a", + "c3", "d#", "c2:2", "e", "g", "e", "g", "f", "e", + "d"]); + + mod.BIRTHDAY = Sk.ffi.remapToPy(["c4:3", "c:1", "d:4", "c:4", "f:4", + "e:8", "c:3", "c:1", "d:4", "c:4", + "g:4", "f:8", "c:3", "c:1", "c5:4", "a4:4", + "f:4", "e:4", "d:8", "a#:3", "a#:1", "a:4", + "f:4", "g:4", "f:8"]); + + mod.WEDDING = Sk.ffi.remapToPy(["c4:4", "f:3", "f:1", "f:8", "c:4", + "g:3", "e:1", "f:8", "c:4", "f:3", + "a:1", "c5:4", "a4:3", "f:1", "f:4", + "e:3", "f:1", "g:8"]); + + mod.FUNERAL = Sk.ffi.remapToPy(["c3:4", "c:3", "c:1", "c:4", + "d#:3", "d:1", "d:3", "c:1", + "c:3", "b2:1", "c3:4"]); + + mod.PUNCHLINE = Sk.ffi.remapToPy(["c4:3", "g3:1", "f#", "g", "g#:3", "g", + "r", "b", "c4"]); + + mod.PYTHON = Sk.ffi.remapToPy(["d5:1", "b4", "r", "b", "b", "a#", "b", "g5", "r", + "d", "d", "r", "b4", "c5", "r", "c", "c", "r", "d", + "e:5", "c:1", "a4", "r", "a", "a", "g#", "a", + "f#5", "r", "e", "e", "r", "c", "b4", "r", "b", "b", "r", + "c5", "d:5", "d:1", "b4", "r", "b", "b", "a#", + "b", "b5", "r", "g", "g", "r", "d", "c#", "r", "a", "a", + "r", "a", "a:5", "g:1", "f#:2", "a:1", + "a", "g#", "a", "e:2", "a:1", "a", "g#", + "a", "d", "r", "c#", "d", "r", "c#", "d:2", + "r:3"]); + + mod.BADDY = Sk.ffi.remapToPy(["c3:3", "r", "d:2", "d#", "r", "c", "r", "f#:8"]); + + mod.CHASE = Sk.ffi.remapToPy(["a4:1", "b", "c5", "b4", "a:2", "r", "a:1", "b", "c5", "b4", "a:2", "r", "a:2", "e5", "d#", "e", "f", "e", "d#", "e", "b4:1", "c5", "d", "c", "b4:2", "r", "b:1", "c5", "d", "c", "b4:2", "r", "b:2", "e5", "d#", "e", "f", "e", "d#", "e"]); + + mod.BA_DING = Sk.ffi.remapToPy(["b5:1", "e6:3"]); + + mod.WAWAWAWAA = Sk.ffi.remapToPy(["e3:3", "r:1", "d#:3", "r:1", "d:4", "r:1", "c#:8"]); + + mod.JUMP_UP = Sk.ffi.remapToPy(["c5:1", "d", "e", "f", "g"]); + + mod.JUMP_DOWN = Sk.ffi.remapToPy(["g5:1", "f", "e", "d", "c"]); + + mod.POWER_UP = Sk.ffi.remapToPy(["g4:1", "c5", "e", "g:2", "e:1", "g:3"]); + + mod.POWER_DOWN = Sk.ffi.remapToPy(["g5:1", "d#", "c", "g4:2", "b:1", "c5:3"]); + return mod; +}; \ No newline at end of file diff --git a/lib/skulpt/os/__init__.js b/lib/skulpt/os/__init__.js new file mode 100644 index 00000000..4128d9cc --- /dev/null +++ b/lib/skulpt/os/__init__.js @@ -0,0 +1,34 @@ +var $builtinmodule = function (name) { + var mod = { + + }; + + mod.listdir = new Sk.builtin.func(function() { + var files = []; + for(var key in PythonIDE.files) { + files.push(key); + } + return Sk.ffi.remapToPy(files); + }); + + mod.remove = new Sk.builtin.func(function(filename) { + if(PythonIDE.files[filename.v] === undefined) { + throw new Sk.builtin.Exception("OS Error"); + } + delete PythonIDE.files[filename.v]; + PythonIDE.updateFileTabs(); + }); + + mod.size = new Sk.builtin.func(function() { + if(PythonIDE.files[filename.v] === undefined) { + throw new Sk.builtin.Exception("OS Error"); + } + return Sk.builtin.nmber(PythonIDE.files[filename.v].length); + }); + + mod.uname = new Sk.builtin.func(function() { + throw new Sk.builtin.Exception("Not implemented yet"); + }); + return mod; + +}; diff --git a/lib/skulpt/py3d/__init__.js b/lib/skulpt/py3d/__init__.js new file mode 100644 index 00000000..632433f6 --- /dev/null +++ b/lib/skulpt/py3d/__init__.js @@ -0,0 +1,46 @@ +var $builtinmodule = function(name) { + var mod = {}; + + var scene, camera, renderer; + var geometry, material, mesh; + + init(); + animate(); + + function init() { + var c = document.getElementById('consoleOut'); + var width = $('#consoleOut').width() - 50; + scene = new THREE.Scene(); + + camera = new THREE.PerspectiveCamera( 75, 16/9, 1, 10000 ); + camera.position.z = 1000; + + geometry = new THREE.BoxGeometry( 200, 200, 200 ); + material = new THREE.MeshBasicMaterial( { color: 0xff0000, wireframe: true } ); + + mesh = new THREE.Mesh( geometry, material ); + scene.add( mesh ); + + renderer = new THREE.WebGLRenderer(); + renderer.setSize( width, width * 9 / 16 ); + + + var c = document.getElementById('consoleOut'); + c.appendChild( renderer.domElement ); + + + } + + function animate() { + + requestAnimationFrame( animate ); + + mesh.rotation.x += 0.01; + mesh.rotation.y += 0.02; + + renderer.render( scene, camera ); + + } + + return mod; +}; \ No newline at end of file diff --git a/lib/skulpt/py3d/three.js b/lib/skulpt/py3d/three.js new file mode 100644 index 00000000..c6990162 --- /dev/null +++ b/lib/skulpt/py3d/three.js @@ -0,0 +1,994 @@ +// threejs.org/license +'use strict';var THREE={REVISION:"78"};"function"===typeof define&&define.amd?define("three",THREE):"undefined"!==typeof exports&&"undefined"!==typeof module&&(module.exports=THREE);void 0===Number.EPSILON&&(Number.EPSILON=Math.pow(2,-52));void 0===Math.sign&&(Math.sign=function(a){return 0>a?-1:0>16&255)/255;this.g=(a>>8&255)/255;this.b=(a&255)/255;return this},setRGB:function(a,b,c){this.r=a;this.g=b;this.b=c;return this},setHSL:function(){function a(a,c,d){0>d&&(d+=1);1d?c:d<2/3?a+6*(c-a)*(2/3-d):a}return function(b,c,d){b=THREE.Math.euclideanModulo(b,1);c=THREE.Math.clamp(c,0,1);d=THREE.Math.clamp(d,0,1);0===c?this.r=this.g=this.b=d:(c=.5>=d?d*(1+c):d+c-d*c,d=2*d-c,this.r=a(d,c,b+1/3),this.g=a(d,c,b),this.b=a(d,c,b-1/3));return this}}(),setStyle:function(a){function b(b){void 0!==b&&1>parseFloat(b)&&console.warn("THREE.Color: Alpha component of "+a+" will be ignored.")}var c;if(c=/^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec(a)){var d=c[2];switch(c[1]){case "rgb":case "rgba":if(c= +/^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(d))return this.r=Math.min(255,parseInt(c[1],10))/255,this.g=Math.min(255,parseInt(c[2],10))/255,this.b=Math.min(255,parseInt(c[3],10))/255,b(c[5]),this;if(c=/^(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(d))return this.r=Math.min(100,parseInt(c[1],10))/100,this.g=Math.min(100,parseInt(c[2],10))/100,this.b=Math.min(100,parseInt(c[3],10))/100,b(c[5]),this;break;case "hsl":case "hsla":if(c=/^([0-9]*\.?[0-9]+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(d)){var d= +parseFloat(c[1])/360,e=parseInt(c[2],10)/100,f=parseInt(c[3],10)/100;b(c[5]);return this.setHSL(d,e,f)}}}else if(c=/^\#([A-Fa-f0-9]+)$/.exec(a)){c=c[1];d=c.length;if(3===d)return this.r=parseInt(c.charAt(0)+c.charAt(0),16)/255,this.g=parseInt(c.charAt(1)+c.charAt(1),16)/255,this.b=parseInt(c.charAt(2)+c.charAt(2),16)/255,this;if(6===d)return this.r=parseInt(c.charAt(0)+c.charAt(1),16)/255,this.g=parseInt(c.charAt(2)+c.charAt(3),16)/255,this.b=parseInt(c.charAt(4)+c.charAt(5),16)/255,this}a&&0=h?k/(e+f):k/(2-e-f);switch(e){case b:g=(c-d)/k+(cf&&c>b?(c=2*Math.sqrt(1+c-f-b),this._w=(k-g)/c,this._x=.25*c,this._y=(a+e)/c,this._z=(d+h)/c):f>b?(c=2*Math.sqrt(1+f-c-b),this._w=(d-h)/c,this._x=(a+e)/c,this._y= +.25*c,this._z=(g+k)/c):(c=2*Math.sqrt(1+b-c-f),this._w=(e-a)/c,this._x=(d+h)/c,this._y=(g+k)/c,this._z=.25*c);this.onChangeCallback();return this},setFromUnitVectors:function(){var a,b;return function(c,d){void 0===a&&(a=new THREE.Vector3);b=c.dot(d)+1;1E-6>b?(b=0,Math.abs(c.x)>Math.abs(c.z)?a.set(-c.y,c.x,0):a.set(0,-c.z,c.y)):a.crossVectors(c,d);this._x=a.x;this._y=a.y;this._z=a.z;this._w=b;return this.normalize()}}(),inverse:function(){return this.conjugate().normalize()},conjugate:function(){this._x*= +-1;this._y*=-1;this._z*=-1;this.onChangeCallback();return this},dot:function(a){return this._x*a._x+this._y*a._y+this._z*a._z+this._w*a._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var a=this.length();0===a?(this._z=this._y=this._x=0,this._w=1):(a=1/a,this._x*=a,this._y*=a,this._z*=a,this._w*=a);this.onChangeCallback();return this}, +multiply:function(a,b){return void 0!==b?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(a,b)):this.multiplyQuaternions(this,a)},premultiply:function(a){return this.multiplyQuaternions(a,this)},multiplyQuaternions:function(a,b){var c=a._x,d=a._y,e=a._z,f=a._w,g=b._x,h=b._y,k=b._z,l=b._w;this._x=c*l+f*g+d*k-e*h;this._y=d*l+f*h+e*g-c*k;this._z=e*l+f*k+c*h-d*g;this._w=f*l-c*g-d*h-e*k;this.onChangeCallback(); +return this},slerp:function(a,b){if(0===b)return this;if(1===b)return this.copy(a);var c=this._x,d=this._y,e=this._z,f=this._w,g=f*a._w+c*a._x+d*a._y+e*a._z;0>g?(this._w=-a._w,this._x=-a._x,this._y=-a._y,this._z=-a._z,g=-g):this.copy(a);if(1<=g)return this._w=f,this._x=c,this._y=d,this._z=e,this;var h=Math.sqrt(1-g*g);if(.001>Math.abs(h))return this._w=.5*(f+this._w),this._x=.5*(c+this._x),this._y=.5*(d+this._y),this._z=.5*(e+this._z),this;var k=Math.atan2(h,g),g=Math.sin((1-b)*k)/h,h=Math.sin(b* +k)/h;this._w=f*g+this._w*h;this._x=c*g+this._x*h;this._y=d*g+this._y*h;this._z=e*g+this._z*h;this.onChangeCallback();return this},equals:function(a){return a._x===this._x&&a._y===this._y&&a._z===this._z&&a._w===this._w},fromArray:function(a,b){void 0===b&&(b=0);this._x=a[b];this._y=a[b+1];this._z=a[b+2];this._w=a[b+3];this.onChangeCallback();return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this._x;a[b+1]=this._y;a[b+2]=this._z;a[b+3]=this._w;return a},onChange:function(a){this.onChangeCallback= +a;return this},onChangeCallback:function(){}}; +Object.assign(THREE.Quaternion,{slerp:function(a,b,c,d){return c.copy(a).slerp(b,d)},slerpFlat:function(a,b,c,d,e,f,g){var h=c[d+0],k=c[d+1],l=c[d+2];c=c[d+3];d=e[f+0];var n=e[f+1],p=e[f+2];e=e[f+3];if(c!==e||h!==d||k!==n||l!==p){f=1-g;var m=h*d+k*n+l*p+c*e,q=0<=m?1:-1,r=1-m*m;r>Number.EPSILON&&(r=Math.sqrt(r),m=Math.atan2(r,m*q),f=Math.sin(f*m)/r,g=Math.sin(g*m)/r);q*=g;h=h*f+d*q;k=k*f+n*q;l=l*f+p*q;c=c*f+e*q;f===1-g&&(g=1/Math.sqrt(h*h+k*k+l*l+c*c),h*=g,k*=g,l*=g,c*=g)}a[b]=h;a[b+1]=k;a[b+2]=l; +a[b+3]=c}});THREE.Vector2=function(a,b){this.x=a||0;this.y=b||0}; +THREE.Vector2.prototype={constructor:THREE.Vector2,get width(){return this.x},set width(a){this.x=a},get height(){return this.y},set height(a){this.y=a},set:function(a,b){this.x=a;this.y=b;return this},setScalar:function(a){this.y=this.x=a;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;default:throw Error("index is out of range: "+a);}},getComponent:function(a){switch(a){case 0:return this.x; +case 1:return this.y;default:throw Error("index is out of range: "+a);}},clone:function(){return new this.constructor(this.x,this.y)},copy:function(a){this.x=a.x;this.y=a.y;return this},add:function(a,b){if(void 0!==b)return console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b);this.x+=a.x;this.y+=a.y;return this},addScalar:function(a){this.x+=a;this.y+=a;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;return this}, +addScaledVector:function(a,b){this.x+=a.x*b;this.y+=a.y*b;return this},sub:function(a,b){if(void 0!==b)return console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b);this.x-=a.x;this.y-=a.y;return this},subScalar:function(a){this.x-=a;this.y-=a;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;return this},multiply:function(a){this.x*=a.x;this.y*=a.y;return this},multiplyScalar:function(a){isFinite(a)?(this.x*=a, +this.y*=a):this.y=this.x=0;return this},divide:function(a){this.x/=a.x;this.y/=a.y;return this},divideScalar:function(a){return this.multiplyScalar(1/a)},min:function(a){this.x=Math.min(this.x,a.x);this.y=Math.min(this.y,a.y);return this},max:function(a){this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);return this},clamp:function(a,b){this.x=Math.max(a.x,Math.min(b.x,this.x));this.y=Math.max(a.y,Math.min(b.y,this.y));return this},clampScalar:function(){var a,b;return function(c,d){void 0=== +a&&(a=new THREE.Vector2,b=new THREE.Vector2);a.set(c,c);b.set(d,d);return this.clamp(a,b)}}(),clampLength:function(a,b){var c=this.length();return this.multiplyScalar(Math.max(a,Math.min(b,c))/c)},floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x); +this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);return this},negate:function(){this.x=-this.x;this.y=-this.y;return this},dot:function(a){return this.x*a.x+this.y*a.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)},normalize:function(){return this.divideScalar(this.length())},angle:function(){var a=Math.atan2(this.y,this.x);0>a&&(a+=2*Math.PI);return a}, +distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x;a=this.y-a.y;return b*b+a*a},setLength:function(a){return this.multiplyScalar(a/this.length())},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;return this},lerpVectors:function(a,b,c){return this.subVectors(b,a).multiplyScalar(c).add(a)},equals:function(a){return a.x===this.x&&a.y===this.y},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];return this}, +toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;return a},fromAttribute:function(a,b,c){void 0===c&&(c=0);b=b*a.itemSize+c;this.x=a.array[b];this.y=a.array[b+1];return this},rotateAround:function(a,b){var c=Math.cos(b),d=Math.sin(b),e=this.x-a.x,f=this.y-a.y;this.x=e*c-f*d+a.x;this.y=e*d+f*c+a.y;return this}};THREE.Vector3=function(a,b,c){this.x=a||0;this.y=b||0;this.z=c||0}; +THREE.Vector3.prototype={constructor:THREE.Vector3,set:function(a,b,c){this.x=a;this.y=b;this.z=c;return this},setScalar:function(a){this.z=this.y=this.x=a;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setZ:function(a){this.z=a;return this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;case 2:this.z=b;break;default:throw Error("index is out of range: "+a);}},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y; +case 2:return this.z;default:throw Error("index is out of range: "+a);}},clone:function(){return new this.constructor(this.x,this.y,this.z)},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;return this},add:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b);this.x+=a.x;this.y+=a.y;this.z+=a.z;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;return this},addVectors:function(a, +b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;return this},addScaledVector:function(a,b){this.x+=a.x*b;this.y+=a.y*b;this.z+=a.z*b;return this},sub:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b);this.x-=a.x;this.y-=a.y;this.z-=a.z;return this},subScalar:function(a){this.x-=a;this.y-=a;this.z-=a;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;return this}, +multiply:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(a,b);this.x*=a.x;this.y*=a.y;this.z*=a.z;return this},multiplyScalar:function(a){isFinite(a)?(this.x*=a,this.y*=a,this.z*=a):this.z=this.y=this.x=0;return this},multiplyVectors:function(a,b){this.x=a.x*b.x;this.y=a.y*b.y;this.z=a.z*b.z;return this},applyEuler:function(){var a;return function(b){!1===b instanceof THREE.Euler&& +console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.");void 0===a&&(a=new THREE.Quaternion);return this.applyQuaternion(a.setFromEuler(b))}}(),applyAxisAngle:function(){var a;return function(b,c){void 0===a&&(a=new THREE.Quaternion);return this.applyQuaternion(a.setFromAxisAngle(b,c))}}(),applyMatrix3:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;this.x=a[0]*b+a[3]*c+a[6]*d;this.y=a[1]*b+a[4]*c+a[7]*d;this.z=a[2]*b+a[5]*c+a[8]*d;return this}, +applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;this.x=a[0]*b+a[4]*c+a[8]*d+a[12];this.y=a[1]*b+a[5]*c+a[9]*d+a[13];this.z=a[2]*b+a[6]*c+a[10]*d+a[14];return this},applyProjection:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;var e=1/(a[3]*b+a[7]*c+a[11]*d+a[15]);this.x=(a[0]*b+a[4]*c+a[8]*d+a[12])*e;this.y=(a[1]*b+a[5]*c+a[9]*d+a[13])*e;this.z=(a[2]*b+a[6]*c+a[10]*d+a[14])*e;return this},applyQuaternion:function(a){var b=this.x,c=this.y,d=this.z,e=a.x,f=a.y,g=a.z;a= +a.w;var h=a*b+f*d-g*c,k=a*c+g*b-e*d,l=a*d+e*c-f*b,b=-e*b-f*c-g*d;this.x=h*a+b*-e+k*-g-l*-f;this.y=k*a+b*-f+l*-e-h*-g;this.z=l*a+b*-g+h*-f-k*-e;return this},project:function(){var a;return function(b){void 0===a&&(a=new THREE.Matrix4);a.multiplyMatrices(b.projectionMatrix,a.getInverse(b.matrixWorld));return this.applyProjection(a)}}(),unproject:function(){var a;return function(b){void 0===a&&(a=new THREE.Matrix4);a.multiplyMatrices(b.matrixWorld,a.getInverse(b.projectionMatrix));return this.applyProjection(a)}}(), +transformDirection:function(a){var b=this.x,c=this.y,d=this.z;a=a.elements;this.x=a[0]*b+a[4]*c+a[8]*d;this.y=a[1]*b+a[5]*c+a[9]*d;this.z=a[2]*b+a[6]*c+a[10]*d;return this.normalize()},divide:function(a){this.x/=a.x;this.y/=a.y;this.z/=a.z;return this},divideScalar:function(a){return this.multiplyScalar(1/a)},min:function(a){this.x=Math.min(this.x,a.x);this.y=Math.min(this.y,a.y);this.z=Math.min(this.z,a.z);return this},max:function(a){this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);this.z= +Math.max(this.z,a.z);return this},clamp:function(a,b){this.x=Math.max(a.x,Math.min(b.x,this.x));this.y=Math.max(a.y,Math.min(b.y,this.y));this.z=Math.max(a.z,Math.min(b.z,this.z));return this},clampScalar:function(){var a,b;return function(c,d){void 0===a&&(a=new THREE.Vector3,b=new THREE.Vector3);a.set(c,c,c);b.set(d,d,d);return this.clamp(a,b)}}(),clampLength:function(a,b){var c=this.length();return this.multiplyScalar(Math.max(a,Math.min(b,c))/c)},floor:function(){this.x=Math.floor(this.x);this.y= +Math.floor(this.y);this.z=Math.floor(this.z);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);this.z=Math.ceil(this.z);return this},round:function(){this.x=Math.round(this.x);this.y=Math.round(this.y);this.z=Math.round(this.z);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);this.z=0>this.z?Math.ceil(this.z):Math.floor(this.z);return this},negate:function(){this.x=-this.x;this.y= +-this.y;this.z=-this.z;return this},dot:function(a){return this.x*a.x+this.y*a.y+this.z*a.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length())},setLength:function(a){return this.multiplyScalar(a/this.length())},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+= +(a.y-this.y)*b;this.z+=(a.z-this.z)*b;return this},lerpVectors:function(a,b,c){return this.subVectors(b,a).multiplyScalar(c).add(a)},cross:function(a,b){if(void 0!==b)return console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(a,b);var c=this.x,d=this.y,e=this.z;this.x=d*a.z-e*a.y;this.y=e*a.x-c*a.z;this.z=c*a.y-d*a.x;return this},crossVectors:function(a,b){var c=a.x,d=a.y,e=a.z,f=b.x,g=b.y,h=b.z;this.x=d*h-e*g;this.y=e*f-c*h; +this.z=c*g-d*f;return this},projectOnVector:function(a){var b=a.dot(this)/a.lengthSq();return this.copy(a).multiplyScalar(b)},projectOnPlane:function(){var a;return function(b){void 0===a&&(a=new THREE.Vector3);a.copy(this).projectOnVector(b);return this.sub(a)}}(),reflect:function(){var a;return function(b){void 0===a&&(a=new THREE.Vector3);return this.sub(a.copy(b).multiplyScalar(2*this.dot(b)))}}(),angleTo:function(a){a=this.dot(a)/Math.sqrt(this.lengthSq()*a.lengthSq());return Math.acos(THREE.Math.clamp(a, +-1,1))},distanceTo:function(a){return Math.sqrt(this.distanceToSquared(a))},distanceToSquared:function(a){var b=this.x-a.x,c=this.y-a.y;a=this.z-a.z;return b*b+c*c+a*a},setFromSpherical:function(a){var b=Math.sin(a.phi)*a.radius;this.x=b*Math.sin(a.theta);this.y=Math.cos(a.phi)*a.radius;this.z=b*Math.cos(a.theta);return this},setFromMatrixPosition:function(a){return this.setFromMatrixColumn(a,3)},setFromMatrixScale:function(a){var b=this.setFromMatrixColumn(a,0).length(),c=this.setFromMatrixColumn(a, +1).length();a=this.setFromMatrixColumn(a,2).length();this.x=b;this.y=c;this.z=a;return this},setFromMatrixColumn:function(a,b){if("number"===typeof a){console.warn("THREE.Vector3: setFromMatrixColumn now expects ( matrix, index ).");var c=a;a=b;b=c}return this.fromArray(a.elements,4*b)},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];this.z=a[b+2];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0=== +b&&(b=0);a[b]=this.x;a[b+1]=this.y;a[b+2]=this.z;return a},fromAttribute:function(a,b,c){void 0===c&&(c=0);b=b*a.itemSize+c;this.x=a.array[b];this.y=a.array[b+1];this.z=a.array[b+2];return this}};THREE.Vector4=function(a,b,c,d){this.x=a||0;this.y=b||0;this.z=c||0;this.w=void 0!==d?d:1}; +THREE.Vector4.prototype={constructor:THREE.Vector4,set:function(a,b,c,d){this.x=a;this.y=b;this.z=c;this.w=d;return this},setScalar:function(a){this.w=this.z=this.y=this.x=a;return this},setX:function(a){this.x=a;return this},setY:function(a){this.y=a;return this},setZ:function(a){this.z=a;return this},setW:function(a){this.w=a;return this},setComponent:function(a,b){switch(a){case 0:this.x=b;break;case 1:this.y=b;break;case 2:this.z=b;break;case 3:this.w=b;break;default:throw Error("index is out of range: "+ +a);}},getComponent:function(a){switch(a){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw Error("index is out of range: "+a);}},clone:function(){return new this.constructor(this.x,this.y,this.z,this.w)},copy:function(a){this.x=a.x;this.y=a.y;this.z=a.z;this.w=void 0!==a.w?a.w:1;return this},add:function(a,b){if(void 0!==b)return console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(a,b); +this.x+=a.x;this.y+=a.y;this.z+=a.z;this.w+=a.w;return this},addScalar:function(a){this.x+=a;this.y+=a;this.z+=a;this.w+=a;return this},addVectors:function(a,b){this.x=a.x+b.x;this.y=a.y+b.y;this.z=a.z+b.z;this.w=a.w+b.w;return this},addScaledVector:function(a,b){this.x+=a.x*b;this.y+=a.y*b;this.z+=a.z*b;this.w+=a.w*b;return this},sub:function(a,b){if(void 0!==b)return console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(a,b);this.x-= +a.x;this.y-=a.y;this.z-=a.z;this.w-=a.w;return this},subScalar:function(a){this.x-=a;this.y-=a;this.z-=a;this.w-=a;return this},subVectors:function(a,b){this.x=a.x-b.x;this.y=a.y-b.y;this.z=a.z-b.z;this.w=a.w-b.w;return this},multiplyScalar:function(a){isFinite(a)?(this.x*=a,this.y*=a,this.z*=a,this.w*=a):this.w=this.z=this.y=this.x=0;return this},applyMatrix4:function(a){var b=this.x,c=this.y,d=this.z,e=this.w;a=a.elements;this.x=a[0]*b+a[4]*c+a[8]*d+a[12]*e;this.y=a[1]*b+a[5]*c+a[9]*d+a[13]*e;this.z= +a[2]*b+a[6]*c+a[10]*d+a[14]*e;this.w=a[3]*b+a[7]*c+a[11]*d+a[15]*e;return this},divideScalar:function(a){return this.multiplyScalar(1/a)},setAxisAngleFromQuaternion:function(a){this.w=2*Math.acos(a.w);var b=Math.sqrt(1-a.w*a.w);1E-4>b?(this.x=1,this.z=this.y=0):(this.x=a.x/b,this.y=a.y/b,this.z=a.z/b);return this},setAxisAngleFromRotationMatrix:function(a){var b,c,d;a=a.elements;var e=a[0];d=a[4];var f=a[8],g=a[1],h=a[5],k=a[9];c=a[2];b=a[6];var l=a[10];if(.01>Math.abs(d-g)&&.01>Math.abs(f-c)&&.01> +Math.abs(k-b)){if(.1>Math.abs(d+g)&&.1>Math.abs(f+c)&&.1>Math.abs(k+b)&&.1>Math.abs(e+h+l-3))return this.set(1,0,0,0),this;a=Math.PI;e=(e+1)/2;h=(h+1)/2;l=(l+1)/2;d=(d+g)/4;f=(f+c)/4;k=(k+b)/4;e>h&&e>l?.01>e?(b=0,d=c=.707106781):(b=Math.sqrt(e),c=d/b,d=f/b):h>l?.01>h?(b=.707106781,c=0,d=.707106781):(c=Math.sqrt(h),b=d/c,d=k/c):.01>l?(c=b=.707106781,d=0):(d=Math.sqrt(l),b=f/d,c=k/d);this.set(b,c,d,a);return this}a=Math.sqrt((b-k)*(b-k)+(f-c)*(f-c)+(g-d)*(g-d));.001>Math.abs(a)&&(a=1);this.x=(b-k)/ +a;this.y=(f-c)/a;this.z=(g-d)/a;this.w=Math.acos((e+h+l-1)/2);return this},min:function(a){this.x=Math.min(this.x,a.x);this.y=Math.min(this.y,a.y);this.z=Math.min(this.z,a.z);this.w=Math.min(this.w,a.w);return this},max:function(a){this.x=Math.max(this.x,a.x);this.y=Math.max(this.y,a.y);this.z=Math.max(this.z,a.z);this.w=Math.max(this.w,a.w);return this},clamp:function(a,b){this.x=Math.max(a.x,Math.min(b.x,this.x));this.y=Math.max(a.y,Math.min(b.y,this.y));this.z=Math.max(a.z,Math.min(b.z,this.z)); +this.w=Math.max(a.w,Math.min(b.w,this.w));return this},clampScalar:function(){var a,b;return function(c,d){void 0===a&&(a=new THREE.Vector4,b=new THREE.Vector4);a.set(c,c,c,c);b.set(d,d,d,d);return this.clamp(a,b)}}(),floor:function(){this.x=Math.floor(this.x);this.y=Math.floor(this.y);this.z=Math.floor(this.z);this.w=Math.floor(this.w);return this},ceil:function(){this.x=Math.ceil(this.x);this.y=Math.ceil(this.y);this.z=Math.ceil(this.z);this.w=Math.ceil(this.w);return this},round:function(){this.x= +Math.round(this.x);this.y=Math.round(this.y);this.z=Math.round(this.z);this.w=Math.round(this.w);return this},roundToZero:function(){this.x=0>this.x?Math.ceil(this.x):Math.floor(this.x);this.y=0>this.y?Math.ceil(this.y):Math.floor(this.y);this.z=0>this.z?Math.ceil(this.z):Math.floor(this.z);this.w=0>this.w?Math.ceil(this.w):Math.floor(this.w);return this},negate:function(){this.x=-this.x;this.y=-this.y;this.z=-this.z;this.w=-this.w;return this},dot:function(a){return this.x*a.x+this.y*a.y+this.z* +a.z+this.w*a.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length())},setLength:function(a){return this.multiplyScalar(a/this.length())},lerp:function(a,b){this.x+=(a.x-this.x)*b;this.y+=(a.y-this.y)*b;this.z+=(a.z- +this.z)*b;this.w+=(a.w-this.w)*b;return this},lerpVectors:function(a,b,c){return this.subVectors(b,a).multiplyScalar(c).add(a)},equals:function(a){return a.x===this.x&&a.y===this.y&&a.z===this.z&&a.w===this.w},fromArray:function(a,b){void 0===b&&(b=0);this.x=a[b];this.y=a[b+1];this.z=a[b+2];this.w=a[b+3];return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this.x;a[b+1]=this.y;a[b+2]=this.z;a[b+3]=this.w;return a},fromAttribute:function(a,b,c){void 0===c&&(c=0);b=b*a.itemSize+ +c;this.x=a.array[b];this.y=a.array[b+1];this.z=a.array[b+2];this.w=a.array[b+3];return this}};THREE.Euler=function(a,b,c,d){this._x=a||0;this._y=b||0;this._z=c||0;this._order=d||THREE.Euler.DefaultOrder};THREE.Euler.RotationOrders="XYZ YZX ZXY XZY YXZ ZYX".split(" ");THREE.Euler.DefaultOrder="XYZ"; +THREE.Euler.prototype={constructor:THREE.Euler,get x(){return this._x},set x(a){this._x=a;this.onChangeCallback()},get y(){return this._y},set y(a){this._y=a;this.onChangeCallback()},get z(){return this._z},set z(a){this._z=a;this.onChangeCallback()},get order(){return this._order},set order(a){this._order=a;this.onChangeCallback()},set:function(a,b,c,d){this._x=a;this._y=b;this._z=c;this._order=d||this._order;this.onChangeCallback();return this},clone:function(){return new this.constructor(this._x, +this._y,this._z,this._order)},copy:function(a){this._x=a._x;this._y=a._y;this._z=a._z;this._order=a._order;this.onChangeCallback();return this},setFromRotationMatrix:function(a,b,c){var d=THREE.Math.clamp,e=a.elements;a=e[0];var f=e[4],g=e[8],h=e[1],k=e[5],l=e[9],n=e[2],p=e[6],e=e[10];b=b||this._order;"XYZ"===b?(this._y=Math.asin(d(g,-1,1)),.99999>Math.abs(g)?(this._x=Math.atan2(-l,e),this._z=Math.atan2(-f,a)):(this._x=Math.atan2(p,k),this._z=0)):"YXZ"===b?(this._x=Math.asin(-d(l,-1,1)),.99999>Math.abs(l)? +(this._y=Math.atan2(g,e),this._z=Math.atan2(h,k)):(this._y=Math.atan2(-n,a),this._z=0)):"ZXY"===b?(this._x=Math.asin(d(p,-1,1)),.99999>Math.abs(p)?(this._y=Math.atan2(-n,e),this._z=Math.atan2(-f,k)):(this._y=0,this._z=Math.atan2(h,a))):"ZYX"===b?(this._y=Math.asin(-d(n,-1,1)),.99999>Math.abs(n)?(this._x=Math.atan2(p,e),this._z=Math.atan2(h,a)):(this._x=0,this._z=Math.atan2(-f,k))):"YZX"===b?(this._z=Math.asin(d(h,-1,1)),.99999>Math.abs(h)?(this._x=Math.atan2(-l,k),this._y=Math.atan2(-n,a)):(this._x= +0,this._y=Math.atan2(g,e))):"XZY"===b?(this._z=Math.asin(-d(f,-1,1)),.99999>Math.abs(f)?(this._x=Math.atan2(p,k),this._y=Math.atan2(g,a)):(this._x=Math.atan2(-l,e),this._y=0)):console.warn("THREE.Euler: .setFromRotationMatrix() given unsupported order: "+b);this._order=b;if(!1!==c)this.onChangeCallback();return this},setFromQuaternion:function(){var a;return function(b,c,d){void 0===a&&(a=new THREE.Matrix4);a.makeRotationFromQuaternion(b);return this.setFromRotationMatrix(a,c,d)}}(),setFromVector3:function(a, +b){return this.set(a.x,a.y,a.z,b||this._order)},reorder:function(){var a=new THREE.Quaternion;return function(b){a.setFromEuler(this);return this.setFromQuaternion(a,b)}}(),equals:function(a){return a._x===this._x&&a._y===this._y&&a._z===this._z&&a._order===this._order},fromArray:function(a){this._x=a[0];this._y=a[1];this._z=a[2];void 0!==a[3]&&(this._order=a[3]);this.onChangeCallback();return this},toArray:function(a,b){void 0===a&&(a=[]);void 0===b&&(b=0);a[b]=this._x;a[b+1]=this._y;a[b+2]=this._z; +a[b+3]=this._order;return a},toVector3:function(a){return a?a.set(this._x,this._y,this._z):new THREE.Vector3(this._x,this._y,this._z)},onChange:function(a){this.onChangeCallback=a;return this},onChangeCallback:function(){}};THREE.Line3=function(a,b){this.start=void 0!==a?a:new THREE.Vector3;this.end=void 0!==b?b:new THREE.Vector3}; +THREE.Line3.prototype={constructor:THREE.Line3,set:function(a,b){this.start.copy(a);this.end.copy(b);return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.start.copy(a.start);this.end.copy(a.end);return this},center:function(a){return(a||new THREE.Vector3).addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(a){return(a||new THREE.Vector3).subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)}, +at:function(a,b){var c=b||new THREE.Vector3;return this.delta(c).multiplyScalar(a).add(this.start)},closestPointToPointParameter:function(){var a=new THREE.Vector3,b=new THREE.Vector3;return function(c,d){a.subVectors(c,this.start);b.subVectors(this.end,this.start);var e=b.dot(b),e=b.dot(a)/e;d&&(e=THREE.Math.clamp(e,0,1));return e}}(),closestPointToPoint:function(a,b,c){a=this.closestPointToPointParameter(a,b);c=c||new THREE.Vector3;return this.delta(c).multiplyScalar(a).add(this.start)},applyMatrix4:function(a){this.start.applyMatrix4(a); +this.end.applyMatrix4(a);return this},equals:function(a){return a.start.equals(this.start)&&a.end.equals(this.end)}};THREE.Box2=function(a,b){this.min=void 0!==a?a:new THREE.Vector2(Infinity,Infinity);this.max=void 0!==b?b:new THREE.Vector2(-Infinity,-Infinity)}; +THREE.Box2.prototype={constructor:THREE.Box2,set:function(a,b){this.min.copy(a);this.max.copy(b);return this},setFromPoints:function(a){this.makeEmpty();for(var b=0,c=a.length;bthis.max.x||a.ythis.max.y?!1:!0},containsBox:function(a){return this.min.x<=a.min.x&&a.max.x<=this.max.x&&this.min.y<=a.min.y&&a.max.y<=this.max.y?!0:!1},getParameter:function(a,b){return(b||new THREE.Vector2).set((a.x-this.min.x)/(this.max.x-this.min.x),(a.y-this.min.y)/(this.max.y-this.min.y))},intersectsBox:function(a){return a.max.xthis.max.x||a.max.y +this.max.y?!1:!0},clampPoint:function(a,b){return(b||new THREE.Vector2).copy(a).clamp(this.min,this.max)},distanceToPoint:function(){var a=new THREE.Vector2;return function(b){return a.copy(b).clamp(this.min,this.max).sub(b).length()}}(),intersect:function(a){this.min.max(a.min);this.max.min(a.max);return this},union:function(a){this.min.min(a.min);this.max.max(a.max);return this},translate:function(a){this.min.add(a);this.max.add(a);return this},equals:function(a){return a.min.equals(this.min)&& +a.max.equals(this.max)}};THREE.Box3=function(a,b){this.min=void 0!==a?a:new THREE.Vector3(Infinity,Infinity,Infinity);this.max=void 0!==b?b:new THREE.Vector3(-Infinity,-Infinity,-Infinity)}; +THREE.Box3.prototype={constructor:THREE.Box3,set:function(a,b){this.min.copy(a);this.max.copy(b);return this},setFromArray:function(a){for(var b=Infinity,c=Infinity,d=Infinity,e=-Infinity,f=-Infinity,g=-Infinity,h=0,k=a.length;he&&(e=l);n>f&&(f=n);p>g&&(g=p)}this.min.set(b,c,d);this.max.set(e,f,g)},setFromPoints:function(a){this.makeEmpty();for(var b=0,c=a.length;bthis.max.x||a.ythis.max.y||a.z< +this.min.z||a.z>this.max.z?!1:!0},containsBox:function(a){return this.min.x<=a.min.x&&a.max.x<=this.max.x&&this.min.y<=a.min.y&&a.max.y<=this.max.y&&this.min.z<=a.min.z&&a.max.z<=this.max.z?!0:!1},getParameter:function(a,b){return(b||new THREE.Vector3).set((a.x-this.min.x)/(this.max.x-this.min.x),(a.y-this.min.y)/(this.max.y-this.min.y),(a.z-this.min.z)/(this.max.z-this.min.z))},intersectsBox:function(a){return a.max.xthis.max.x||a.max.ythis.max.y||a.max.z< +this.min.z||a.min.z>this.max.z?!1:!0},intersectsSphere:function(){var a;return function(b){void 0===a&&(a=new THREE.Vector3);this.clampPoint(b.center,a);return a.distanceToSquared(b.center)<=b.radius*b.radius}}(),intersectsPlane:function(a){var b,c;0=a.constant},clampPoint:function(a,b){return(b||new THREE.Vector3).copy(a).clamp(this.min,this.max)},distanceToPoint:function(){var a=new THREE.Vector3;return function(b){return a.copy(b).clamp(this.min,this.max).sub(b).length()}}(),getBoundingSphere:function(){var a=new THREE.Vector3;return function(b){b=b||new THREE.Sphere;b.center=this.center();b.radius=.5*this.size(a).length();return b}}(), +intersect:function(a){this.min.max(a.min);this.max.min(a.max);this.isEmpty()&&this.makeEmpty();return this},union:function(a){this.min.min(a.min);this.max.max(a.max);return this},applyMatrix4:function(){var a=[new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3];return function(b){if(this.isEmpty())return this;a[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(b);a[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(b); +a[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(b);a[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(b);a[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(b);a[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(b);a[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(b);a[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(b);this.setFromPoints(a);return this}}(),translate:function(a){this.min.add(a);this.max.add(a);return this},equals:function(a){return a.min.equals(this.min)&& +a.max.equals(this.max)}};THREE.Matrix3=function(){this.elements=new Float32Array([1,0,0,0,1,0,0,0,1]);0this.determinant()&&(g=-g);c.x=f[12];c.y=f[13];c.z=f[14];b.elements.set(this.elements);c=1/g;var f=1/h,l=1/k;b.elements[0]*=c;b.elements[1]*=c; +b.elements[2]*=c;b.elements[4]*=f;b.elements[5]*=f;b.elements[6]*=f;b.elements[8]*=l;b.elements[9]*=l;b.elements[10]*=l;d.setFromRotationMatrix(b);e.x=g;e.y=h;e.z=k;return this}}(),makeFrustum:function(a,b,c,d,e,f){var g=this.elements;g[0]=2*e/(b-a);g[4]=0;g[8]=(b+a)/(b-a);g[12]=0;g[1]=0;g[5]=2*e/(d-c);g[9]=(d+c)/(d-c);g[13]=0;g[2]=0;g[6]=0;g[10]=-(f+e)/(f-e);g[14]=-2*f*e/(f-e);g[3]=0;g[7]=0;g[11]=-1;g[15]=0;return this},makePerspective:function(a,b,c,d){a=c*Math.tan(THREE.Math.DEG2RAD*a*.5);var e= +-a;return this.makeFrustum(e*b,a*b,e,a,c,d)},makeOrthographic:function(a,b,c,d,e,f){var g=this.elements,h=1/(b-a),k=1/(c-d),l=1/(f-e);g[0]=2*h;g[4]=0;g[8]=0;g[12]=-((b+a)*h);g[1]=0;g[5]=2*k;g[9]=0;g[13]=-((c+d)*k);g[2]=0;g[6]=0;g[10]=-2*l;g[14]=-((f+e)*l);g[3]=0;g[7]=0;g[11]=0;g[15]=1;return this},equals:function(a){var b=this.elements;a=a.elements;for(var c=0;16>c;c++)if(b[c]!==a[c])return!1;return!0},fromArray:function(a){this.elements.set(a);return this},toArray:function(a,b){void 0===a&&(a=[]); +void 0===b&&(b=0);var c=this.elements;a[b]=c[0];a[b+1]=c[1];a[b+2]=c[2];a[b+3]=c[3];a[b+4]=c[4];a[b+5]=c[5];a[b+6]=c[6];a[b+7]=c[7];a[b+8]=c[8];a[b+9]=c[9];a[b+10]=c[10];a[b+11]=c[11];a[b+12]=c[12];a[b+13]=c[13];a[b+14]=c[14];a[b+15]=c[15];return a}};THREE.Ray=function(a,b){this.origin=void 0!==a?a:new THREE.Vector3;this.direction=void 0!==b?b:new THREE.Vector3}; +THREE.Ray.prototype={constructor:THREE.Ray,set:function(a,b){this.origin.copy(a);this.direction.copy(b);return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.origin.copy(a.origin);this.direction.copy(a.direction);return this},at:function(a,b){return(b||new THREE.Vector3).copy(this.direction).multiplyScalar(a).add(this.origin)},lookAt:function(a){this.direction.copy(a).sub(this.origin).normalize();return this},recast:function(){var a=new THREE.Vector3;return function(b){this.origin.copy(this.at(b, +a));return this}}(),closestPointToPoint:function(a,b){var c=b||new THREE.Vector3;c.subVectors(a,this.origin);var d=c.dot(this.direction);return 0>d?c.copy(this.origin):c.copy(this.direction).multiplyScalar(d).add(this.origin)},distanceToPoint:function(a){return Math.sqrt(this.distanceSqToPoint(a))},distanceSqToPoint:function(){var a=new THREE.Vector3;return function(b){var c=a.subVectors(b,this.origin).dot(this.direction);if(0>c)return this.origin.distanceToSquared(b);a.copy(this.direction).multiplyScalar(c).add(this.origin); +return a.distanceToSquared(b)}}(),distanceSqToSegment:function(){var a=new THREE.Vector3,b=new THREE.Vector3,c=new THREE.Vector3;return function(d,e,f,g){a.copy(d).add(e).multiplyScalar(.5);b.copy(e).sub(d).normalize();c.copy(this.origin).sub(a);var h=.5*d.distanceTo(e),k=-this.direction.dot(b),l=c.dot(this.direction),n=-c.dot(b),p=c.lengthSq(),m=Math.abs(1-k*k),q;0=-q?e<=q?(h=1/m,d*=h,e*=h,k=d*(d+k*e+2*l)+e*(k*d+e+2*n)+p):(e=h,d=Math.max(0,-(k*e+l)),k=-d*d+e*(e+2* +n)+p):(e=-h,d=Math.max(0,-(k*e+l)),k=-d*d+e*(e+2*n)+p):e<=-q?(d=Math.max(0,-(-k*h+l)),e=0f)return null;f=Math.sqrt(f-e);e=d-f;d+=f;return 0>e&&0>d?null:0>e?this.at(d,c):this.at(e,c)}}(),intersectsSphere:function(a){return this.distanceToPoint(a.center)<=a.radius},distanceToPlane:function(a){var b=a.normal.dot(this.direction);if(0===b)return 0===a.distanceToPoint(this.origin)?0:null;a=-(this.origin.dot(a.normal)+a.constant)/b;return 0<=a?a:null},intersectPlane:function(a,b){var c= +this.distanceToPlane(a);return null===c?null:this.at(c,b)},intersectsPlane:function(a){var b=a.distanceToPoint(this.origin);return 0===b||0>a.normal.dot(this.direction)*b?!0:!1},intersectBox:function(a,b){var c,d,e,f,g;d=1/this.direction.x;f=1/this.direction.y;g=1/this.direction.z;var h=this.origin;0<=d?(c=(a.min.x-h.x)*d,d*=a.max.x-h.x):(c=(a.max.x-h.x)*d,d*=a.min.x-h.x);0<=f?(e=(a.min.y-h.y)*f,f*=a.max.y-h.y):(e=(a.max.y-h.y)*f,f*=a.min.y-h.y);if(c>f||e>d)return null;if(e>c||c!==c)c=e;if(fg||e>d)return null;if(e>c||c!==c)c=e;if(gd?null:this.at(0<=c?c:d,b)},intersectsBox:function(){var a=new THREE.Vector3;return function(b){return null!==this.intersectBox(b,a)}}(),intersectTriangle:function(){var a=new THREE.Vector3,b=new THREE.Vector3,c=new THREE.Vector3,d=new THREE.Vector3;return function(e,f,g,h,k){b.subVectors(f,e);c.subVectors(g,e);d.crossVectors(b,c);f=this.direction.dot(d); +if(0f)h=-1,f=-f;else return null;a.subVectors(this.origin,e);e=h*this.direction.dot(c.crossVectors(a,c));if(0>e)return null;g=h*this.direction.dot(b.cross(a));if(0>g||e+g>f)return null;e=-h*a.dot(d);return 0>e?null:this.at(e/f,k)}}(),applyMatrix4:function(a){this.direction.add(this.origin).applyMatrix4(a);this.origin.applyMatrix4(a);this.direction.sub(this.origin);this.direction.normalize();return this},equals:function(a){return a.origin.equals(this.origin)&&a.direction.equals(this.direction)}}; +THREE.Sphere=function(a,b){this.center=void 0!==a?a:new THREE.Vector3;this.radius=void 0!==b?b:0}; +THREE.Sphere.prototype={constructor:THREE.Sphere,set:function(a,b){this.center.copy(a);this.radius=b;return this},setFromPoints:function(){var a=new THREE.Box3;return function(b,c){var d=this.center;void 0!==c?d.copy(c):a.setFromPoints(b).center(d);for(var e=0,f=0,g=b.length;f=this.radius},containsPoint:function(a){return a.distanceToSquared(this.center)<=this.radius*this.radius},distanceToPoint:function(a){return a.distanceTo(this.center)-this.radius},intersectsSphere:function(a){var b=this.radius+a.radius;return a.center.distanceToSquared(this.center)<=b*b},intersectsBox:function(a){return a.intersectsSphere(this)},intersectsPlane:function(a){return Math.abs(this.center.dot(a.normal)-a.constant)<=this.radius},clampPoint:function(a,b){var c= +this.center.distanceToSquared(a),d=b||new THREE.Vector3;d.copy(a);c>this.radius*this.radius&&(d.sub(this.center).normalize(),d.multiplyScalar(this.radius).add(this.center));return d},getBoundingBox:function(a){a=a||new THREE.Box3;a.set(this.center,this.center);a.expandByScalar(this.radius);return a},applyMatrix4:function(a){this.center.applyMatrix4(a);this.radius*=a.getMaxScaleOnAxis();return this},translate:function(a){this.center.add(a);return this},equals:function(a){return a.center.equals(this.center)&& +a.radius===this.radius}};THREE.Frustum=function(a,b,c,d,e,f){this.planes=[void 0!==a?a:new THREE.Plane,void 0!==b?b:new THREE.Plane,void 0!==c?c:new THREE.Plane,void 0!==d?d:new THREE.Plane,void 0!==e?e:new THREE.Plane,void 0!==f?f:new THREE.Plane]}; +THREE.Frustum.prototype={constructor:THREE.Frustum,set:function(a,b,c,d,e,f){var g=this.planes;g[0].copy(a);g[1].copy(b);g[2].copy(c);g[3].copy(d);g[4].copy(e);g[5].copy(f);return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){for(var b=this.planes,c=0;6>c;c++)b[c].copy(a.planes[c]);return this},setFromMatrix:function(a){var b=this.planes,c=a.elements;a=c[0];var d=c[1],e=c[2],f=c[3],g=c[4],h=c[5],k=c[6],l=c[7],n=c[8],p=c[9],m=c[10],q=c[11],r=c[12],s=c[13],t=c[14], +c=c[15];b[0].setComponents(f-a,l-g,q-n,c-r).normalize();b[1].setComponents(f+a,l+g,q+n,c+r).normalize();b[2].setComponents(f+d,l+h,q+p,c+s).normalize();b[3].setComponents(f-d,l-h,q-p,c-s).normalize();b[4].setComponents(f-e,l-k,q-m,c-t).normalize();b[5].setComponents(f+e,l+k,q+m,c+t).normalize();return this},intersectsObject:function(){var a=new THREE.Sphere;return function(b){var c=b.geometry;null===c.boundingSphere&&c.computeBoundingSphere();a.copy(c.boundingSphere).applyMatrix4(b.matrixWorld);return this.intersectsSphere(a)}}(), +intersectsSprite:function(){var a=new THREE.Sphere;return function(b){a.center.set(0,0,0);a.radius=.7071067811865476;a.applyMatrix4(b.matrixWorld);return this.intersectsSphere(a)}}(),intersectsSphere:function(a){var b=this.planes,c=a.center;a=-a.radius;for(var d=0;6>d;d++)if(b[d].distanceToPoint(c)e;e++){var f=d[e];a.x=0g&&0>f)return!1}return!0}}(),containsPoint:function(a){for(var b=this.planes,c=0;6>c;c++)if(0>b[c].distanceToPoint(a))return!1;return!0}};THREE.Plane=function(a,b){this.normal=void 0!==a?a:new THREE.Vector3(1,0,0);this.constant=void 0!==b?b:0}; +THREE.Plane.prototype={constructor:THREE.Plane,set:function(a,b){this.normal.copy(a);this.constant=b;return this},setComponents:function(a,b,c,d){this.normal.set(a,b,c);this.constant=d;return this},setFromNormalAndCoplanarPoint:function(a,b){this.normal.copy(a);this.constant=-b.dot(this.normal);return this},setFromCoplanarPoints:function(){var a=new THREE.Vector3,b=new THREE.Vector3;return function(c,d,e){d=a.subVectors(e,d).cross(b.subVectors(c,d)).normalize();this.setFromNormalAndCoplanarPoint(d, +c);return this}}(),clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.normal.copy(a.normal);this.constant=a.constant;return this},normalize:function(){var a=1/this.normal.length();this.normal.multiplyScalar(a);this.constant*=a;return this},negate:function(){this.constant*=-1;this.normal.negate();return this},distanceToPoint:function(a){return this.normal.dot(a)+this.constant},distanceToSphere:function(a){return this.distanceToPoint(a.center)-a.radius},projectPoint:function(a, +b){return this.orthoPoint(a,b).sub(a).negate()},orthoPoint:function(a,b){var c=this.distanceToPoint(a);return(b||new THREE.Vector3).copy(this.normal).multiplyScalar(c)},intersectLine:function(){var a=new THREE.Vector3;return function(b,c){var d=c||new THREE.Vector3,e=b.delta(a),f=this.normal.dot(e);if(0===f){if(0===this.distanceToPoint(b.start))return d.copy(b.start)}else return f=-(b.start.dot(this.normal)+this.constant)/f,0>f||1b&&0a&&0e;e++)8===e||13===e||18===e||23===e?b[e]="-":14===e?b[e]="4":(2>=c&&(c=33554432+16777216*Math.random()|0),d=c&15,c>>=4,b[e]=a[19===e?d&3|8:d]);return b.join("")}}(),clamp:function(a,b,c){return Math.max(b,Math.min(c,a))},euclideanModulo:function(a,b){return(a%b+b)%b},mapLinear:function(a,b,c, +d,e){return d+(a-b)*(e-d)/(c-b)},smoothstep:function(a,b,c){if(a<=b)return 0;if(a>=c)return 1;a=(a-b)/(c-b);return a*a*(3-2*a)},smootherstep:function(a,b,c){if(a<=b)return 0;if(a>=c)return 1;a=(a-b)/(c-b);return a*a*a*(a*(6*a-15)+10)},random16:function(){console.warn("THREE.Math.random16() has been deprecated. Use Math.random() instead.");return Math.random()},randInt:function(a,b){return a+Math.floor(Math.random()*(b-a+1))},randFloat:function(a,b){return a+Math.random()*(b-a)},randFloatSpread:function(a){return a* +(.5-Math.random())},degToRad:function(a){return a*THREE.Math.DEG2RAD},radToDeg:function(a){return a*THREE.Math.RAD2DEG},isPowerOfTwo:function(a){return 0===(a&a-1)&&0!==a},nearestPowerOfTwo:function(a){return Math.pow(2,Math.round(Math.log(a)/Math.LN2))},nextPowerOfTwo:function(a){a--;a|=a>>1;a|=a>>2;a|=a>>4;a|=a>>8;a|=a>>16;a++;return a}}; +THREE.Spline=function(a){function b(a,b,c,d,e,f,g){a=.5*(c-a);d=.5*(d-b);return(2*(b-c)+a+d)*g+(-3*(b-c)-2*a-d)*f+a*e+b}this.points=a;var c=[],d={x:0,y:0,z:0},e,f,g,h,k,l,n,p,m;this.initFromArray=function(a){this.points=[];for(var b=0;bthis.points.length-2?this.points.length-1:f+1;c[3]=f>this.points.length-3?this.points.length-1:f+ +2;l=this.points[c[0]];n=this.points[c[1]];p=this.points[c[2]];m=this.points[c[3]];h=g*g;k=g*h;d.x=b(l.x,n.x,p.x,m.x,g,h,k);d.y=b(l.y,n.y,p.y,m.y,g,h,k);d.z=b(l.z,n.z,p.z,m.z,g,h,k);return d};this.getControlPointsArray=function(){var a,b,c=this.points.length,d=[];for(a=0;a=b.x+b.y}}(); +THREE.Triangle.prototype={constructor:THREE.Triangle,set:function(a,b,c){this.a.copy(a);this.b.copy(b);this.c.copy(c);return this},setFromPointsAndIndices:function(a,b,c,d){this.a.copy(a[b]);this.b.copy(a[c]);this.c.copy(a[d]);return this},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.a.copy(a.a);this.b.copy(a.b);this.c.copy(a.c);return this},area:function(){var a=new THREE.Vector3,b=new THREE.Vector3;return function(){a.subVectors(this.c,this.b);b.subVectors(this.a, +this.b);return.5*a.cross(b).length()}}(),midpoint:function(a){return(a||new THREE.Vector3).addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},normal:function(a){return THREE.Triangle.normal(this.a,this.b,this.c,a)},plane:function(a){return(a||new THREE.Plane).setFromCoplanarPoints(this.a,this.b,this.c)},barycoordFromPoint:function(a,b){return THREE.Triangle.barycoordFromPoint(a,this.a,this.b,this.c,b)},containsPoint:function(a){return THREE.Triangle.containsPoint(a,this.a,this.b,this.c)}, +closestPointToPoint:function(){var a,b,c,d;return function(e,f){void 0===a&&(a=new THREE.Plane,b=[new THREE.Line3,new THREE.Line3,new THREE.Line3],c=new THREE.Vector3,d=new THREE.Vector3);var g=f||new THREE.Vector3,h=Infinity;a.setFromCoplanarPoints(this.a,this.b,this.c);a.projectPoint(e,c);if(!0===this.containsPoint(c))g.copy(c);else{b[0].set(this.a,this.b);b[1].set(this.b,this.c);b[2].set(this.c,this.a);for(var k=0;k=e)break a;else{f=b[1];a=e)break b}d= +c;c=0}}for(;c>>1,ad;d++)if(e[d]===e[(d+1)%3]){a.push(f);break}for(f=a.length-1;0<=f;f--)for(e=a[f],this.faces.splice(e, +1),c=0,g=this.faceVertexUvs.length;cb||0===c)return;this._startTime=null;b*=c}b*=this._updateTimeScale(a);c=this._updateTime(b);a=this._updateWeight(a);if(0c.parameterPositions[1]&&(this.stopFading(),0===d&&(this.enabled=!1))}}return this._effectiveWeight=b},_updateTimeScale:function(a){var b=0;if(!this.paused){var b=this.timeScale,c=this._timeScaleInterpolant;if(null!==c){var d=c.evaluate(a)[0],b=b*d;a>c.parameterPositions[1]&&(this.stopWarping(),0===b?this.paused=!0: +this.timeScale=b)}}return this._effectiveTimeScale=b},_updateTime:function(a){var b=this.time+a;if(0===a)return b;var c=this._clip.duration,d=this.loop,e=this._loopCount;if(d===THREE.LoopOnce)a:{if(-1===e&&(this.loopCount=0,this._setEndings(!0,!0,!1)),b>=c)b=c;else if(0>b)b=0;else break a;this.clampWhenFinished?this.paused=!0:this.enabled=!1;this._mixer.dispatchEvent({type:"finished",action:this,direction:0>a?-1:1})}else{d=d===THREE.LoopPingPong;-1===e&&(0<=a?(e=0,this._setEndings(!0,0===this.repetitions, +d)):this._setEndings(0===this.repetitions,!0,d));if(b>=c||0>b){var f=Math.floor(b/c),b=b-c*f,e=e+Math.abs(f),g=this.repetitions-e;0>g?(this.clampWhenFinished?this.paused=!0:this.enabled=!1,b=0a,this._setEndings(a,!a,d)):this._setEndings(!1,!1,d),this._loopCount=e,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:f}))}if(d&&1===(e&1))return this.time=b,c-b}return this.time=b},_setEndings:function(a, +b,c){var d=this._interpolantSettings;c?(d.endingStart=THREE.ZeroSlopeEnding,d.endingEnd=THREE.ZeroSlopeEnding):(d.endingStart=a?this.zeroSlopeAtStart?THREE.ZeroSlopeEnding:THREE.ZeroCurvatureEnding:THREE.WrapAroundEnding,d.endingEnd=b?this.zeroSlopeAtEnd?THREE.ZeroSlopeEnding:THREE.ZeroCurvatureEnding:THREE.WrapAroundEnding)},_scheduleFading:function(a,b,c){var d=this._mixer,e=d.time,f=this._weightInterpolant;null===f&&(this._weightInterpolant=f=d._lendControlInterpolant());d=f.parameterPositions; +f=f.sampleValues;d[0]=e;f[0]=b;d[1]=e+a;f[1]=c;return this}};THREE.AnimationClip=function(a,b,c){this.name=a;this.tracks=c;this.duration=void 0!==b?b:-1;this.uuid=THREE.Math.generateUUID();0>this.duration&&this.resetDuration();this.trim();this.optimize()}; +THREE.AnimationClip.prototype={constructor:THREE.AnimationClip,resetDuration:function(){for(var a=0,b=0,c=this.tracks.length;b!==c;++b)var d=this.tracks[b],a=Math.max(a,d.times[d.times.length-1]);this.duration=a},trim:function(){for(var a=0;a=c){var p=c++,m=b[p];d[m.uuid]= +n;b[n]=m;d[l]=p;b[p]=k;k=0;for(l=f;k!==l;++k){var m=e[k],q=m[n];m[n]=m[p];m[p]=q}}}this.nCachedObjects_=c},uncache:function(a){for(var b=this._objects,c=b.length,d=this.nCachedObjects_,e=this._indicesByUUID,f=this._bindings,g=f.length,h=0,k=arguments.length;h!==k;++h){var l=arguments[h].uuid,n=e[l];if(void 0!==n)if(delete e[l],nb;)--f;++f;if(0!==e||f!==d)e>=f&&(f=Math.max(f,1),e=f-1),d=this.getValueSize(),this.times=THREE.AnimationUtils.arraySlice(c,e,f),this.values=THREE.AnimationUtils.arraySlice(this.values,e*d,f*d);return this},validate:function(){var a=!0,b=this.getValueSize();0!==b-Math.floor(b)&&(console.error("invalid value size in track", +this),a=!1);var c=this.times,b=this.values,d=c.length;0===d&&(console.error("track is empty",this),a=!1);for(var e=null,f=0;f!==d;f++){var g=c[f];if("number"===typeof g&&isNaN(g)){console.error("time is not a valid number",this,f,g);a=!1;break}if(null!==e&&e>g){console.error("out of order keys",this,f,g,e);a=!1;break}e=g}if(void 0!==b&&THREE.AnimationUtils.isTypedArray(b))for(f=0,c=b.length;f!==c;++f)if(d=b[f],isNaN(d)){console.error("value is not a valid number",this,f,d);a=!1;break}return a},optimize:function(){for(var a= +this.times,b=this.values,c=this.getValueSize(),d=1,e=1,f=a.length-1;e<=f;++e){var g=!1,h=a[e];if(h!==a[e+1]&&(1!==e||h!==h[0]))for(var k=e*c,l=k-c,n=k+c,h=0;h!==c;++h){var p=b[k+h];if(p!==b[l+h]||p!==b[n+h]){g=!0;break}}if(g){if(e!==d)for(a[d]=a[e],g=e*c,k=d*c,h=0;h!==c;++h)b[k+h]=b[g+h];++d}}d!==a.length&&(this.times=THREE.AnimationUtils.arraySlice(a,0,d),this.values=THREE.AnimationUtils.arraySlice(b,0,d*c));return this}}; +Object.assign(THREE.KeyframeTrack,{parse:function(a){if(void 0===a.type)throw Error("track type undefined, can not parse");var b=THREE.KeyframeTrack._getTrackTypeForValueTypeName(a.type);if(void 0===a.times){var c=[],d=[];THREE.AnimationUtils.flattenJSON(a.keys,c,d,"value");a.times=c;a.values=d}return void 0!==b.parse?b.parse(a):new b(a.name,a.times,a.values,a.interpolation)},toJSON:function(a){var b=a.constructor;if(void 0!==b.toJSON)b=b.toJSON(a);else{var b={name:a.name,times:THREE.AnimationUtils.convertArray(a.times, +Array),values:THREE.AnimationUtils.convertArray(a.values,Array)},c=a.getInterpolation();c!==a.DefaultInterpolation&&(b.interpolation=c)}b.type=a.ValueTypeName;return b},_getTrackTypeForValueTypeName:function(a){switch(a.toLowerCase()){case "scalar":case "double":case "float":case "number":case "integer":return THREE.NumberKeyframeTrack;case "vector":case "vector2":case "vector3":case "vector4":return THREE.VectorKeyframeTrack;case "color":return THREE.ColorKeyframeTrack;case "quaternion":return THREE.QuaternionKeyframeTrack; +case "bool":case "boolean":return THREE.BooleanKeyframeTrack;case "string":return THREE.StringKeyframeTrack}throw Error("Unsupported typeName: "+a);}});THREE.PropertyBinding=function(a,b,c){this.path=b;this.parsedPath=c||THREE.PropertyBinding.parseTrackName(b);this.node=THREE.PropertyBinding.findNode(a,this.parsedPath.nodeName)||a;this.rootNode=a}; +THREE.PropertyBinding.prototype={constructor:THREE.PropertyBinding,getValue:function(a,b){this.bind();this.getValue(a,b)},setValue:function(a,b){this.bind();this.setValue(a,b)},bind:function(){var a=this.node,b=this.parsedPath,c=b.objectName,d=b.propertyName,e=b.propertyIndex;a||(this.node=a=THREE.PropertyBinding.findNode(this.rootNode,b.nodeName)||this.rootNode);this.getValue=this._getValue_unavailable;this.setValue=this._setValue_unavailable;if(a){if(c){var f=b.objectIndex;switch(c){case "materials":if(!a.material){console.error(" can not bind to material as node does not have a material", +this);return}if(!a.material.materials){console.error(" can not bind to material.materials as node.material does not have a materials array",this);return}a=a.material.materials;break;case "bones":if(!a.skeleton){console.error(" can not bind to bones as node does not have a skeleton",this);return}a=a.skeleton.bones;for(c=0;cd&&this._mixBufferRegion(c,a,3*b,1-d,b);for(var d=b,f=b+b;d!==f;++d)if(c[d]!==c[d+b]){e.setValue(c,a); +break}},saveOriginalState:function(){var a=this.buffer,b=this.valueSize,c=3*b;this.binding.getValue(a,c);for(var d=b;d!==c;++d)a[d]=a[c+d%b];this.cumulativeWeight=0},restoreOriginalState:function(){this.binding.setValue(this.buffer,3*this.valueSize)},_select:function(a,b,c,d,e){if(.5<=d)for(d=0;d!==e;++d)a[b+d]=a[c+d]},_slerp:function(a,b,c,d,e){THREE.Quaternion.slerpFlat(a,b,a,b,a,c,d)},_lerp:function(a,b,c,d,e){for(var f=1-d,g=0;g!==e;++g){var h=b+g;a[h]=a[h]*f+a[c+g]*d}}}; +THREE.BooleanKeyframeTrack=function(a,b,c){THREE.KeyframeTrack.call(this,a,b,c)};THREE.BooleanKeyframeTrack.prototype=Object.assign(Object.create(THREE.KeyframeTrack.prototype),{constructor:THREE.BooleanKeyframeTrack,ValueTypeName:"bool",ValueBufferType:Array,DefaultInterpolation:THREE.InterpolateDiscrete,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0});THREE.ColorKeyframeTrack=function(a,b,c,d){THREE.KeyframeTrack.call(this,a,b,c,d)}; +THREE.ColorKeyframeTrack.prototype=Object.assign(Object.create(THREE.KeyframeTrack.prototype),{constructor:THREE.ColorKeyframeTrack,ValueTypeName:"color"});THREE.NumberKeyframeTrack=function(a,b,c,d){THREE.KeyframeTrack.call(this,a,b,c,d)};THREE.NumberKeyframeTrack.prototype=Object.assign(Object.create(THREE.KeyframeTrack.prototype),{constructor:THREE.NumberKeyframeTrack,ValueTypeName:"number"});THREE.QuaternionKeyframeTrack=function(a,b,c,d){THREE.KeyframeTrack.call(this,a,b,c,d)}; +THREE.QuaternionKeyframeTrack.prototype=Object.assign(Object.create(THREE.KeyframeTrack.prototype),{constructor:THREE.QuaternionKeyframeTrack,ValueTypeName:"quaternion",DefaultInterpolation:THREE.InterpolateLinear,InterpolantFactoryMethodLinear:function(a){return new THREE.QuaternionLinearInterpolant(this.times,this.values,this.getValueSize(),a)},InterpolantFactoryMethodSmooth:void 0});THREE.StringKeyframeTrack=function(a,b,c,d){THREE.KeyframeTrack.call(this,a,b,c,d)}; +THREE.StringKeyframeTrack.prototype=Object.assign(Object.create(THREE.KeyframeTrack.prototype),{constructor:THREE.StringKeyframeTrack,ValueTypeName:"string",ValueBufferType:Array,DefaultInterpolation:THREE.InterpolateDiscrete,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0});THREE.VectorKeyframeTrack=function(a,b,c,d){THREE.KeyframeTrack.call(this,a,b,c,d)}; +THREE.VectorKeyframeTrack.prototype=Object.assign(Object.create(THREE.KeyframeTrack.prototype),{constructor:THREE.VectorKeyframeTrack,ValueTypeName:"vector"}); +THREE.Audio=function(a){THREE.Object3D.call(this);this.type="Audio";this.context=a.context;this.source=this.context.createBufferSource();this.source.onended=this.onEnded.bind(this);this.gain=this.context.createGain();this.gain.connect(a.getInput());this.autoplay=!1;this.startTime=0;this.playbackRate=1;this.isPlaying=!1;this.hasPlaybackControl=!0;this.sourceType="empty";this.filters=[]}; +THREE.Audio.prototype=Object.assign(Object.create(THREE.Object3D.prototype),{constructor:THREE.Audio,getOutput:function(){return this.gain},setNodeSource:function(a){this.hasPlaybackControl=!1;this.sourceType="audioNode";this.source=a;this.connect();return this},setBuffer:function(a){this.source.buffer=a;this.sourceType="buffer";this.autoplay&&this.play();return this},play:function(){if(!0===this.isPlaying)console.warn("THREE.Audio: Audio is already playing.");else if(!1===this.hasPlaybackControl)console.warn("THREE.Audio: this Audio has no playback control."); +else{var a=this.context.createBufferSource();a.buffer=this.source.buffer;a.loop=this.source.loop;a.onended=this.source.onended;a.start(0,this.startTime);a.playbackRate.value=this.playbackRate;this.isPlaying=!0;this.source=a;return this.connect()}},pause:function(){if(!1===this.hasPlaybackControl)console.warn("THREE.Audio: this Audio has no playback control.");else return this.source.stop(),this.startTime=this.context.currentTime,this.isPlaying=!1,this},stop:function(){if(!1===this.hasPlaybackControl)console.warn("THREE.Audio: this Audio has no playback control."); +else return this.source.stop(),this.startTime=0,this.isPlaying=!1,this},connect:function(){if(0k.opacity&&(k.transparent=!0);c.setTextures(h); +return c.parse(k)}}()};THREE.Loader.Handlers={handlers:[],add:function(a,b){this.handlers.push(a,b)},get:function(a){for(var b=this.handlers,c=0,d=b.length;cg;g++)m=v[k++],u=t[2*m],m=t[2*m+1],u=new THREE.Vector2(u,m),2!==g&&c.faceVertexUvs[d][h].push(u), +0!==g&&c.faceVertexUvs[d][h+1].push(u);p&&(p=3*v[k++],q.normal.set(C[p++],C[p++],C[p]),s.normal.copy(q.normal));if(r)for(d=0;4>d;d++)p=3*v[k++],r=new THREE.Vector3(C[p++],C[p++],C[p]),2!==d&&q.vertexNormals.push(r),0!==d&&s.vertexNormals.push(r);n&&(n=v[k++],n=w[n],q.color.setHex(n),s.color.setHex(n));if(b)for(d=0;4>d;d++)n=v[k++],n=w[n],2!==d&&q.vertexColors.push(new THREE.Color(n)),0!==d&&s.vertexColors.push(new THREE.Color(n));c.faces.push(q);c.faces.push(s)}else{q=new THREE.Face3;q.a=v[k++];q.b= +v[k++];q.c=v[k++];h&&(h=v[k++],q.materialIndex=h);h=c.faces.length;if(d)for(d=0;dg;g++)m=v[k++],u=t[2*m],m=t[2*m+1],u=new THREE.Vector2(u,m),c.faceVertexUvs[d][h].push(u);p&&(p=3*v[k++],q.normal.set(C[p++],C[p++],C[p]));if(r)for(d=0;3>d;d++)p=3*v[k++],r=new THREE.Vector3(C[p++],C[p++],C[p]),q.vertexNormals.push(r);n&&(n=v[k++],q.color.setHex(w[n]));if(b)for(d=0;3>d;d++)n=v[k++],q.vertexColors.push(new THREE.Color(w[n]));c.faces.push(q)}})(d);(function(){var b= +void 0!==a.influencesPerVertex?a.influencesPerVertex:2;if(a.skinWeights)for(var d=0,g=a.skinWeights.length;dthis.opacity&&(d.opacity=this.opacity);!0===this.transparent&&(d.transparent=this.transparent);0a.x||1a.x?0:1;break;case THREE.MirroredRepeatWrapping:1===Math.abs(Math.floor(a.x)%2)?a.x=Math.ceil(a.x)-a.x:a.x-=Math.floor(a.x)}if(0>a.y||1a.y?0:1;break;case THREE.MirroredRepeatWrapping:1=== +Math.abs(Math.floor(a.y)%2)?a.y=Math.ceil(a.y)-a.y:a.y-=Math.floor(a.y)}this.flipY&&(a.y=1-a.y)}}};Object.assign(THREE.Texture.prototype,THREE.EventDispatcher.prototype);THREE.TextureIdCount=0; +THREE.DepthTexture=function(a,b,c,d,e,f,g,h,k){THREE.Texture.call(this,null,d,e,f,g,h,THREE.DepthFormat,c,k);this.image={width:a,height:b};this.type=void 0!==c?c:THREE.UnsignedShortType;this.magFilter=void 0!==g?g:THREE.NearestFilter;this.minFilter=void 0!==h?h:THREE.NearestFilter;this.generateMipmaps=this.flipY=!1};THREE.DepthTexture.prototype=Object.create(THREE.Texture.prototype);THREE.DepthTexture.prototype.constructor=THREE.DepthTexture; +THREE.CanvasTexture=function(a,b,c,d,e,f,g,h,k){THREE.Texture.call(this,a,b,c,d,e,f,g,h,k);this.needsUpdate=!0};THREE.CanvasTexture.prototype=Object.create(THREE.Texture.prototype);THREE.CanvasTexture.prototype.constructor=THREE.CanvasTexture;THREE.CubeTexture=function(a,b,c,d,e,f,g,h,k,l){a=void 0!==a?a:[];b=void 0!==b?b:THREE.CubeReflectionMapping;THREE.Texture.call(this,a,b,c,d,e,f,g,h,k,l);this.flipY=!1};THREE.CubeTexture.prototype=Object.create(THREE.Texture.prototype); +THREE.CubeTexture.prototype.constructor=THREE.CubeTexture;Object.defineProperty(THREE.CubeTexture.prototype,"images",{get:function(){return this.image},set:function(a){this.image=a}});THREE.CompressedTexture=function(a,b,c,d,e,f,g,h,k,l,n,p){THREE.Texture.call(this,null,f,g,h,k,l,d,e,n,p);this.image={width:b,height:c};this.mipmaps=a;this.generateMipmaps=this.flipY=!1};THREE.CompressedTexture.prototype=Object.create(THREE.Texture.prototype);THREE.CompressedTexture.prototype.constructor=THREE.CompressedTexture; +THREE.DataTexture=function(a,b,c,d,e,f,g,h,k,l,n,p){THREE.Texture.call(this,null,f,g,h,k,l,d,e,n,p);this.image={data:a,width:b,height:c};this.magFilter=void 0!==k?k:THREE.NearestFilter;this.minFilter=void 0!==l?l:THREE.NearestFilter;this.generateMipmaps=this.flipY=!1};THREE.DataTexture.prototype=Object.create(THREE.Texture.prototype);THREE.DataTexture.prototype.constructor=THREE.DataTexture; +THREE.VideoTexture=function(a,b,c,d,e,f,g,h,k){function l(){requestAnimationFrame(l);a.readyState>=a.HAVE_CURRENT_DATA&&(n.needsUpdate=!0)}THREE.Texture.call(this,a,b,c,d,e,f,g,h,k);this.generateMipmaps=!1;var n=this;l()};THREE.VideoTexture.prototype=Object.create(THREE.Texture.prototype);THREE.VideoTexture.prototype.constructor=THREE.VideoTexture;THREE.Group=function(){THREE.Object3D.call(this);this.type="Group"};THREE.Group.prototype=Object.assign(Object.create(THREE.Object3D.prototype),{constructor:THREE.Group}); +THREE.Points=function(a,b){THREE.Object3D.call(this);this.type="Points";this.geometry=void 0!==a?a:new THREE.BufferGeometry;this.material=void 0!==b?b:new THREE.PointsMaterial({color:16777215*Math.random()})}; +THREE.Points.prototype=Object.assign(Object.create(THREE.Object3D.prototype),{constructor:THREE.Points,raycast:function(){var a=new THREE.Matrix4,b=new THREE.Ray,c=new THREE.Sphere;return function(d,e){function f(a,c){var f=b.distanceSqToPoint(a);if(fd.far||e.push({distance:m,distanceToRay:Math.sqrt(f),point:h.clone(),index:c,face:null,object:g})}}var g=this,h=this.geometry,k=this.matrixWorld,l=d.params.Points.threshold; +null===h.boundingSphere&&h.computeBoundingSphere();c.copy(h.boundingSphere);c.applyMatrix4(k);if(!1!==d.ray.intersectsSphere(c)){a.getInverse(k);b.copy(d.ray).applyMatrix4(a);var l=l/((this.scale.x+this.scale.y+this.scale.z)/3),n=l*l,l=new THREE.Vector3;if(h instanceof THREE.BufferGeometry){var p=h.index,h=h.attributes.position.array;if(null!==p)for(var m=p.array,p=0,q=m.length;pf||(n.applyMatrix4(this.matrixWorld),s=d.ray.origin.distanceTo(n),sd.far||e.push({distance:s,point:h.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this}))}else for(g=0,r= +q.length/3-1;gf||(n.applyMatrix4(this.matrixWorld),s=d.ray.origin.distanceTo(n),sd.far||e.push({distance:s,point:h.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this}))}else if(g instanceof THREE.Geometry)for(k=g.vertices,l=k.length,g=0;gf||(n.applyMatrix4(this.matrixWorld),s=d.ray.origin.distanceTo(n),sd.far|| +e.push({distance:s,point:h.clone().applyMatrix4(this.matrixWorld),index:g,face:null,faceIndex:null,object:this}))}}}(),clone:function(){return(new this.constructor(this.geometry,this.material)).copy(this)}});THREE.LineSegments=function(a,b){THREE.Line.call(this,a,b);this.type="LineSegments"};THREE.LineSegments.prototype=Object.assign(Object.create(THREE.Line.prototype),{constructor:THREE.LineSegments}); +THREE.Mesh=function(a,b){THREE.Object3D.call(this);this.type="Mesh";this.geometry=void 0!==a?a:new THREE.BufferGeometry;this.material=void 0!==b?b:new THREE.MeshBasicMaterial({color:16777215*Math.random()});this.drawMode=THREE.TrianglesDrawMode;this.updateMorphTargets()}; +THREE.Mesh.prototype=Object.assign(Object.create(THREE.Object3D.prototype),{constructor:THREE.Mesh,setDrawMode:function(a){this.drawMode=a},copy:function(a){THREE.Object3D.prototype.copy.call(this,a);this.drawMode=a.drawMode;return this},updateMorphTargets:function(){if(void 0!==this.geometry.morphTargets&&0b.far?null:{distance:c,point:u.clone(),object:a}}function c(c,d,e,f,l,p,n,s){g.fromArray(f,3*p);h.fromArray(f,3*n);k.fromArray(f,3*s);if(c=b(c,d,e,g,h,k,t))l&&(m.fromArray(l,2*p),q.fromArray(l,2*n),r.fromArray(l,2*s),c.uv=a(t,g,h,k,m,q,r)),c.face=new THREE.Face3(p, +n,s,THREE.Triangle.normal(g,h,k)),c.faceIndex=p;return c}var d=new THREE.Matrix4,e=new THREE.Ray,f=new THREE.Sphere,g=new THREE.Vector3,h=new THREE.Vector3,k=new THREE.Vector3,l=new THREE.Vector3,n=new THREE.Vector3,p=new THREE.Vector3,m=new THREE.Vector2,q=new THREE.Vector2,r=new THREE.Vector2,s=new THREE.Vector3,t=new THREE.Vector3,u=new THREE.Vector3;return function(v,s){var w=this.geometry,u=this.material,z=this.matrixWorld;if(void 0!==u&&(null===w.boundingSphere&&w.computeBoundingSphere(),f.copy(w.boundingSphere), +f.applyMatrix4(z),!1!==v.ray.intersectsSphere(f)&&(d.getInverse(z),e.copy(v.ray).applyMatrix4(d),null===w.boundingBox||!1!==e.intersectsBox(w.boundingBox)))){var y,A;if(w instanceof THREE.BufferGeometry){var I,B,u=w.index,z=w.attributes,w=z.position.array;void 0!==z.uv&&(y=z.uv.array);if(null!==u)for(var z=u.array,F=0,K=z.length;F= +d[e].distance)d[e-1].object.visible=!1,d[e].object.visible=!0;else break;for(;ethis.scale.x*this.scale.y/4||c.push({distance:Math.sqrt(d),point:this.position,face:null,object:this})}}(),clone:function(){return(new this.constructor(this.material)).copy(this)}}); +THREE.LensFlare=function(a,b,c,d,e){THREE.Object3D.call(this);this.lensFlares=[];this.positionScreen=new THREE.Vector3;this.customUpdateCallback=void 0;void 0!==a&&this.add(a,b,c,d,e)}; +THREE.LensFlare.prototype=Object.assign(Object.create(THREE.Object3D.prototype),{constructor:THREE.LensFlare,copy:function(a){THREE.Object3D.prototype.copy.call(this,a);this.positionScreen.copy(a.positionScreen);this.customUpdateCallback=a.customUpdateCallback;for(var b=0,c=a.lensFlares.length;b=da.maxTextures&&console.warn("WebGLRenderer: trying to use "+a+" texture units while this GPU supports only "+ +da.maxTextures);ia+=1;return a};this.setTexture2D=function(){var a=!1;return function(b,c){b instanceof THREE.WebGLRenderTarget&&(a||(console.warn("THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead."),a=!0),b=b.texture);ka.setTexture2D(b,c)}}();this.setTexture=function(){var a=!1;return function(b,c){a||(console.warn("THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead."),a=!0);ka.setTexture2D(b,c)}}();this.setTextureCube= +function(){var a=!1;return function(b,c){b instanceof THREE.WebGLRenderTargetCube&&(a||(console.warn("THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead."),a=!0),b=b.texture);b instanceof THREE.CubeTexture||Array.isArray(b.image)&&6===b.image.length?ka.setTextureCube(b,c):ka.setTextureCubeDynamic(b,c)}}();this.getCurrentRenderTarget=function(){return J};this.setRenderTarget=function(a){(J=a)&&void 0===Z.get(a).__webglFramebuffer&&ka.setupRenderTarget(a); +var b=a instanceof THREE.WebGLRenderTargetCube,c;a?(c=Z.get(a),c=b?c.__webglFramebuffer[a.activeCubeFace]:c.__webglFramebuffer,X.copy(a.scissor),ja=a.scissorTest,ba.copy(a.viewport)):(c=null,X.copy(ua).multiplyScalar($),ja=xa,ba.copy(ma).multiplyScalar($));D!==c&&(x.bindFramebuffer(x.FRAMEBUFFER,c),D=c);R.scissor(X);R.setScissorTest(ja);R.viewport(ba);b&&(b=Z.get(a.texture),x.framebufferTexture2D(x.FRAMEBUFFER,x.COLOR_ATTACHMENT0,x.TEXTURE_CUBE_MAP_POSITIVE_X+a.activeCubeFace,b.__webglTexture,a.activeMipMapLevel))}; +this.readRenderTargetPixels=function(a,b,c,d,e,f){if(!1===a instanceof THREE.WebGLRenderTarget)console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");else{var g=Z.get(a).__webglFramebuffer;if(g){var h=!1;g!==D&&(x.bindFramebuffer(x.FRAMEBUFFER,g),h=!0);try{var k=a.texture;k.format!==THREE.RGBAFormat&&u(k.format)!==x.getParameter(x.IMPLEMENTATION_COLOR_READ_FORMAT)?console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format."): +k.type===THREE.UnsignedByteType||u(k.type)===x.getParameter(x.IMPLEMENTATION_COLOR_READ_TYPE)||k.type===THREE.FloatType&&U.get("WEBGL_color_buffer_float")||k.type===THREE.HalfFloatType&&U.get("EXT_color_buffer_half_float")?x.checkFramebufferStatus(x.FRAMEBUFFER)===x.FRAMEBUFFER_COMPLETE?0<=b&&b<=a.width-d&&0<=c&&c<=a.height-e&&x.readPixels(b,c,d,e,u(k.format),u(k.type),f):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete."):console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.")}finally{h&& +x.bindFramebuffer(x.FRAMEBUFFER,D)}}}}}; +THREE.WebGLRenderTarget=function(a,b,c){this.uuid=THREE.Math.generateUUID();this.width=a;this.height=b;this.scissor=new THREE.Vector4(0,0,a,b);this.scissorTest=!1;this.viewport=new THREE.Vector4(0,0,a,b);c=c||{};void 0===c.minFilter&&(c.minFilter=THREE.LinearFilter);this.texture=new THREE.Texture(void 0,void 0,c.wrapS,c.wrapT,c.magFilter,c.minFilter,c.format,c.type,c.anisotropy,c.encoding);this.depthBuffer=void 0!==c.depthBuffer?c.depthBuffer:!0;this.stencilBuffer=void 0!==c.stencilBuffer?c.stencilBuffer: +!0;this.depthTexture=null}; +Object.assign(THREE.WebGLRenderTarget.prototype,THREE.EventDispatcher.prototype,{setSize:function(a,b){if(this.width!==a||this.height!==b)this.width=a,this.height=b,this.dispose();this.viewport.set(0,0,a,b);this.scissor.set(0,0,a,b)},clone:function(){return(new this.constructor).copy(this)},copy:function(a){this.width=a.width;this.height=a.height;this.viewport.copy(a.viewport);this.texture=a.texture.clone();this.depthBuffer=a.depthBuffer;this.stencilBuffer=a.stencilBuffer;this.depthTexture=a.depthTexture; +return this},dispose:function(){this.dispatchEvent({type:"dispose"})}});THREE.WebGLRenderTargetCube=function(a,b,c){THREE.WebGLRenderTarget.call(this,a,b,c);this.activeMipMapLevel=this.activeCubeFace=0};THREE.WebGLRenderTargetCube.prototype=Object.create(THREE.WebGLRenderTarget.prototype);THREE.WebGLRenderTargetCube.prototype.constructor=THREE.WebGLRenderTargetCube; +THREE.WebGLBufferRenderer=function(a,b,c){var d;this.setMode=function(a){d=a};this.render=function(b,f){a.drawArrays(d,b,f);c.calls++;c.vertices+=f;d===a.TRIANGLES&&(c.faces+=f/3)};this.renderInstances=function(e){var f=b.get("ANGLE_instanced_arrays");if(null===f)console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");else{var g=e.attributes.position,h=0,h=g instanceof THREE.InterleavedBufferAttribute?g.data.count: +g.count;f.drawArraysInstancedANGLE(d,0,h,e.maxInstancedCount);c.calls++;c.vertices+=h*e.maxInstancedCount;d===a.TRIANGLES&&(c.faces+=e.maxInstancedCount*h/3)}}}; +THREE.WebGLClipping=function(){function a(){l.value!==d&&(l.value=d,l.needsUpdate=0c){var d=b;b=c;c=d}d=a[b];return void 0===d?(a[b]=[c],!0):-1===d.indexOf(c)?(d.push(c),!0):!1}var f=new THREE.WebGLGeometries(a,b,c);this.getAttributeBuffer=function(a){return a instanceof THREE.InterleavedBufferAttribute?b.get(a.data).__webglBuffer:b.get(a).__webglBuffer};this.getWireframeAttribute= +function(c){var f=b.get(c);if(void 0!==f.wireframe)return f.wireframe;var k=[],l=c.index,n=c.attributes;c=n.position;if(null!==l)for(var n={},l=l.array,p=0,m=l.length;p/g,function(a,b){var c=THREE.ShaderChunk[b];if(void 0===c)throw Error("Can not resolve #include <"+ +b+">");return k(c)})}function l(a){return a.replace(/for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g,function(a,b,c,d){a="";for(b=parseInt(b);bb||a.height>b){var c=b/Math.max(a.width,a.height),d=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");d.width=Math.floor(a.width*c);d.height=Math.floor(a.height*c);d.getContext("2d").drawImage(a,0,0,a.width,a.height,0,0,d.width,d.height);console.warn("THREE.WebGLRenderer: image is too big ("+a.width+"x"+a.height+"). Resized to "+d.width+"x"+d.height,a);return d}return a}function k(a){return THREE.Math.isPowerOfTwo(a.width)&&THREE.Math.isPowerOfTwo(a.height)} +function l(b){return b===THREE.NearestFilter||b===THREE.NearestMipMapNearestFilter||b===THREE.NearestMipMapLinearFilter?a.NEAREST:a.LINEAR}function n(b){b=b.target;b.removeEventListener("dispose",n);a:{var c=d.get(b);if(b.image&&c.__image__webglTextureCube)a.deleteTexture(c.__image__webglTextureCube);else{if(void 0===c.__webglInit)break a;a.deleteTexture(c.__webglTexture)}d.delete(b)}t.textures--}function p(b){b=b.target;b.removeEventListener("dispose",p);var c=d.get(b),e=d.get(b.texture);if(b){void 0!== +e.__webglTexture&&a.deleteTexture(e.__webglTexture);b.depthTexture&&b.depthTexture.dispose();if(b instanceof THREE.WebGLRenderTargetCube)for(e=0;6>e;e++)a.deleteFramebuffer(c.__webglFramebuffer[e]),c.__webglDepthbuffer&&a.deleteRenderbuffer(c.__webglDepthbuffer[e]);else a.deleteFramebuffer(c.__webglFramebuffer),c.__webglDepthbuffer&&a.deleteRenderbuffer(c.__webglDepthbuffer);d.delete(b.texture);d.delete(b)}t.textures--}function m(b,g){var m=d.get(b);if(0s;s++)r[s]= +m||p?p?b.image[s].image:b.image[s]:h(b.image[s],e.maxCubemapSize);var u=k(r[0]),B=f(b.format),F=f(b.type);q(a.TEXTURE_CUBE_MAP,b,u);for(s=0;6>s;s++)if(m)for(var K,P=r[s].mipmaps,M=0,H=P.length;Ml;l++)e.__webglFramebuffer[l]=a.createFramebuffer()}else e.__webglFramebuffer=a.createFramebuffer();if(g){c.bindTexture(a.TEXTURE_CUBE_MAP,f.__webglTexture);q(a.TEXTURE_CUBE_MAP,b.texture,h);for(l= +0;6>l;l++)r(e.__webglFramebuffer[l],b,a.COLOR_ATTACHMENT0,a.TEXTURE_CUBE_MAP_POSITIVE_X+l);b.texture.generateMipmaps&&h&&a.generateMipmap(a.TEXTURE_CUBE_MAP);c.bindTexture(a.TEXTURE_CUBE_MAP,null)}else c.bindTexture(a.TEXTURE_2D,f.__webglTexture),q(a.TEXTURE_2D,b.texture,h),r(e.__webglFramebuffer,b,a.COLOR_ATTACHMENT0,a.TEXTURE_2D),b.texture.generateMipmaps&&h&&a.generateMipmap(a.TEXTURE_2D),c.bindTexture(a.TEXTURE_2D,null);if(b.depthBuffer){e=d.get(b);f=b instanceof THREE.WebGLRenderTargetCube;if(b.depthTexture){if(f)throw Error("target.depthTexture not supported in Cube render targets"); +if(b instanceof THREE.WebGLRenderTargetCube)throw Error("Depth Texture with cube render targets is not supported!");a.bindFramebuffer(a.FRAMEBUFFER,e.__webglFramebuffer);if(!(b.depthTexture instanceof THREE.DepthTexture))throw Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");d.get(b.depthTexture).__webglTexture&&b.depthTexture.image.width===b.width&&b.depthTexture.image.height===b.height||(b.depthTexture.image.width=b.width,b.depthTexture.image.height=b.height,b.depthTexture.needsUpdate= +!0);m(b.depthTexture,0);b=d.get(b.depthTexture).__webglTexture;a.framebufferTexture2D(a.FRAMEBUFFER,a.DEPTH_ATTACHMENT,a.TEXTURE_2D,b,0)}else if(f)for(e.__webglDepthbuffer=[],f=0;6>f;f++)a.bindFramebuffer(a.FRAMEBUFFER,e.__webglFramebuffer[f]),e.__webglDepthbuffer[f]=a.createRenderbuffer(),s(e.__webglDepthbuffer[f],b);else a.bindFramebuffer(a.FRAMEBUFFER,e.__webglFramebuffer),e.__webglDepthbuffer=a.createRenderbuffer(),s(e.__webglDepthbuffer,b);a.bindFramebuffer(a.FRAMEBUFFER,null)}};this.updateRenderTargetMipmap= +function(b){var e=b.texture;e.generateMipmaps&&k(b)&&e.minFilter!==THREE.NearestFilter&&e.minFilter!==THREE.LinearFilter&&(b=b instanceof THREE.WebGLRenderTargetCube?a.TEXTURE_CUBE_MAP:a.TEXTURE_2D,e=d.get(e).__webglTexture,c.bindTexture(b,e),a.generateMipmap(b),c.bindTexture(b,null))}}; +THREE.WebGLUniforms=function(){var a=new THREE.Texture,b=new THREE.CubeTexture,c=[],d=[],e=function(a,b,d){var e=a[0];if(0>=e||0 0 ) {\nfloat depth = gl_FragCoord.z / gl_FragCoord.w;\nfloat fogFactor = 0.0;\nif ( fogType == 1 ) {\nfogFactor = smoothstep( fogNear, fogFar, depth );\n} else {\nconst float LOG2 = 1.442695;\nfogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );\nfogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );\n}\ngl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );\n}\n}"].join("\n")); +w.compileShader(L);w.compileShader(O);w.attachShader(H,L);w.attachShader(H,O);w.linkProgram(H);A=H;u=w.getAttribLocation(A,"position");v=w.getAttribLocation(A,"uv");c=w.getUniformLocation(A,"uvOffset");d=w.getUniformLocation(A,"uvScale");e=w.getUniformLocation(A,"rotation");f=w.getUniformLocation(A,"scale");g=w.getUniformLocation(A,"color");h=w.getUniformLocation(A,"map");k=w.getUniformLocation(A,"opacity");l=w.getUniformLocation(A,"modelViewMatrix");n=w.getUniformLocation(A,"projectionMatrix");p= +w.getUniformLocation(A,"fogType");m=w.getUniformLocation(A,"fogDensity");q=w.getUniformLocation(A,"fogNear");r=w.getUniformLocation(A,"fogFar");s=w.getUniformLocation(A,"fogColor");t=w.getUniformLocation(A,"alphaTest");H=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");H.width=8;H.height=8;L=H.getContext("2d");L.fillStyle="white";L.fillRect(0,0,8,8);I=new THREE.Texture(H);I.needsUpdate=!0}w.useProgram(A);E.initAttributes();E.enableAttribute(u);E.enableAttribute(v);E.disableUnusedAttributes(); +E.disable(w.CULL_FACE);E.enable(w.BLEND);w.bindBuffer(w.ARRAY_BUFFER,z);w.vertexAttribPointer(u,2,w.FLOAT,!1,16,0);w.vertexAttribPointer(v,2,w.FLOAT,!1,16,8);w.bindBuffer(w.ELEMENT_ARRAY_BUFFER,y);w.uniformMatrix4fv(n,!1,M.projectionMatrix.elements);E.activeTexture(w.TEXTURE0);w.uniform1i(h,0);L=H=0;(O=P.fog)?(w.uniform3f(s,O.color.r,O.color.g,O.color.b),O instanceof THREE.Fog?(w.uniform1f(q,O.near),w.uniform1f(r,O.far),w.uniform1i(p,1),L=H=1):O instanceof THREE.FogExp2&&(w.uniform1f(m,O.density), +w.uniform1i(p,2),L=H=2)):(w.uniform1i(p,0),L=H=0);for(var O=0,N=b.length;Oc)return null;var d=[],e=[],f=[],g,h,k;if(0=l--){console.warn("THREE.ShapeUtils: Unable to triangulate polygon! in triangulate()");break}g=h;c<=g&&(g=0);h=g+1;c<=h&&(h=0);k=h+1;c<=k&&(k=0);var n;a:{var p= +n=void 0,m=void 0,q=void 0,r=void 0,s=void 0,t=void 0,u=void 0,v=void 0,p=a[e[g]].x,m=a[e[g]].y,q=a[e[h]].x,r=a[e[h]].y,s=a[e[k]].x,t=a[e[k]].y;if(Number.EPSILON>(q-p)*(t-m)-(r-m)*(s-p))n=!1;else{var C=void 0,w=void 0,E=void 0,z=void 0,y=void 0,A=void 0,I=void 0,B=void 0,F=void 0,K=void 0,F=B=I=v=u=void 0,C=s-q,w=t-r,E=p-s,z=m-t,y=q-p,A=r-m;for(n=0;n=-Number.EPSILON&& +B>=-Number.EPSILON&&I>=-Number.EPSILON)){n=!1;break a}n=!0}}if(n){d.push([a[e[g]],a[e[h]],a[e[k]]]);f.push([e[g],e[h],e[k]]);g=h;for(k=h+1;kNumber.EPSILON){if(0A||A> +y)return[];k=l*n-k*p;if(0>k||k>y)return[]}else{if(0d?[]:k===d?f?[]:[g]:a<=d?[g,h]:[g,l]}function e(a,b,c,d){var e=b.x-a.x,f=b.y-a.y;b=c.x-a.x;c=c.y-a.y;var g=d.x-a.x;d=d.y-a.y;a=e*c-f*b;e=e*d-f*g;return Math.abs(a)>Number.EPSILON?(b=g*c-d*b,0f&&(f=d);var g=a+1;g>d&&(g=0);d=e(h[a],h[f],h[g],k[b]);if(!d)return!1;d=k.length-1;f=b-1;0>f&&(f=d);g=b+1;g>d&&(g=0);return(d=e(k[b],k[f],k[g],h[a]))?!0:!1}function f(a,b){var c,e;for(c=0;cM){console.log("Infinite Loop! Holes left:"+l.length+", Probably Hole outside Shape!");break}for(p=B;ph;h++)l=k[h].x+":"+k[h].y,l=n[l],void 0!==l&&(k[h]=l);return p.concat()},isClockWise:function(a){return 0>THREE.ShapeUtils.area(a)},b2:function(){return function(a,b,c,d){var e=1-a;return e*e*b+2*(1-a)*a*c+a*a*d}}(),b3:function(){return function(a,b,c,d,e){var f= +1-a,g=1-a;return f*f*f*b+3*g*g*a*c+3*(1-a)*a*a*d+a*a*a*e}}()};THREE.Curve=function(){}; +THREE.Curve.prototype={constructor:THREE.Curve,getPoint:function(a){console.warn("THREE.Curve: Warning, getPoint() not implemented!");return null},getPointAt:function(a){a=this.getUtoTmapping(a);return this.getPoint(a)},getPoints:function(a){a||(a=5);var b,c=[];for(b=0;b<=a;b++)c.push(this.getPoint(b/a));return c},getSpacedPoints:function(a){a||(a=5);var b,c=[];for(b=0;b<=a;b++)c.push(this.getPointAt(b/a));return c},getLength:function(){var a=this.getLengths();return a[a.length-1]},getLengths:function(a){a|| +(a=this.__arcLengthDivisions?this.__arcLengthDivisions:200);if(this.cacheArcLengths&&this.cacheArcLengths.length===a+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var b=[],c,d=this.getPoint(0),e,f=0;b.push(0);for(e=1;e<=a;e++)c=this.getPoint(e/a),f+=c.distanceTo(d),b.push(f),d=c;return this.cacheArcLengths=b},updateArcLengths:function(){this.needsUpdate=!0;this.getLengths()},getUtoTmapping:function(a,b){var c=this.getLengths(),d=0,e=c.length,f;f=b?b:a*c[e-1];for(var g=0,h=e- +1,k;g<=h;)if(d=Math.floor(g+(h-g)/2),k=c[d]-f,0>k)g=d+1;else if(0b&&(b=0);1=b)return a=this.curves[d],b=1-(c[d]-b)/a.getLength(),a.getPointAt(b);d++}return null},getLength:function(){var a= +this.getCurveLengths();return a[a.length-1]},updateArcLengths:function(){this.needsUpdate=!0;this.cacheLengths=null;this.getLengths()},getCurveLengths:function(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;for(var a=[],b=0,c=0,d=this.curves.length;cNumber.EPSILON){if(0> +l&&(g=b[f],k=-k,h=b[e],l=-l),!(a.yh.y))if(a.y===g.y){if(a.x===g.x)return!0}else{e=l*(a.x-g.x)-k*(a.y-g.y);if(0===e)return!0;0>e||(d=!d)}}else if(a.y===g.y&&(h.x<=a.x&&a.x<=g.x||g.x<=a.x&&a.x<=h.x))return!0}return d}var e=THREE.ShapeUtils.isClockWise,f=function(a){for(var b=[],c=new THREE.Path,d=0,e=a.length;db.length-2?b.length-1:c+1],b=b[c>b.length-3?b.length-1:c+2],c=THREE.CurveUtils.interpolate;return new THREE.Vector2(c(d.x,e.x,f.x,b.x,a),c(d.y,e.y,f.y,b.y,a))}; +THREE.EllipseCurve=function(a,b,c,d,e,f,g,h){this.aX=a;this.aY=b;this.xRadius=c;this.yRadius=d;this.aStartAngle=e;this.aEndAngle=f;this.aClockwise=g;this.aRotation=h||0};THREE.EllipseCurve.prototype=Object.create(THREE.Curve.prototype);THREE.EllipseCurve.prototype.constructor=THREE.EllipseCurve; +THREE.EllipseCurve.prototype.getPoint=function(a){var b=this.aEndAngle-this.aStartAngle;0>b&&(b+=2*Math.PI);b>2*Math.PI&&(b-=2*Math.PI);b=!0===this.aClockwise?this.aEndAngle+(1-a)*(2*Math.PI-b):this.aStartAngle+a*b;a=this.aX+this.xRadius*Math.cos(b);var c=this.aY+this.yRadius*Math.sin(b);if(0!==this.aRotation){var b=Math.cos(this.aRotation),d=Math.sin(this.aRotation),e=a;a=(e-this.aX)*b-(c-this.aY)*d+this.aX;c=(e-this.aX)*d+(c-this.aY)*b+this.aY}return new THREE.Vector2(a,c)}; +THREE.ArcCurve=function(a,b,c,d,e,f){THREE.EllipseCurve.call(this,a,b,c,c,d,e,f)};THREE.ArcCurve.prototype=Object.create(THREE.EllipseCurve.prototype);THREE.ArcCurve.prototype.constructor=THREE.ArcCurve;THREE.LineCurve3=THREE.Curve.create(function(a,b){this.v1=a;this.v2=b},function(a){var b=new THREE.Vector3;b.subVectors(this.v2,this.v1);b.multiplyScalar(a);b.add(this.v1);return b}); +THREE.QuadraticBezierCurve3=THREE.Curve.create(function(a,b,c){this.v0=a;this.v1=b;this.v2=c},function(a){var b=THREE.ShapeUtils.b2;return new THREE.Vector3(b(a,this.v0.x,this.v1.x,this.v2.x),b(a,this.v0.y,this.v1.y,this.v2.y),b(a,this.v0.z,this.v1.z,this.v2.z))}); +THREE.CubicBezierCurve3=THREE.Curve.create(function(a,b,c,d){this.v0=a;this.v1=b;this.v2=c;this.v3=d},function(a){var b=THREE.ShapeUtils.b3;return new THREE.Vector3(b(a,this.v0.x,this.v1.x,this.v2.x,this.v3.x),b(a,this.v0.y,this.v1.y,this.v2.y,this.v3.y),b(a,this.v0.z,this.v1.z,this.v2.z,this.v3.z))}); +THREE.SplineCurve3=THREE.Curve.create(function(a){console.warn("THREE.SplineCurve3 will be deprecated. Please use THREE.CatmullRomCurve3");this.points=void 0==a?[]:a},function(a){var b=this.points;a*=b.length-1;var c=Math.floor(a);a-=c;var d=b[0==c?c:c-1],e=b[c],f=b[c>b.length-2?b.length-1:c+1],b=b[c>b.length-3?b.length-1:c+2],c=THREE.CurveUtils.interpolate;return new THREE.Vector3(c(d.x,e.x,f.x,b.x,a),c(d.y,e.y,f.y,b.y,a),c(d.z,e.z,f.z,b.z,a))}); +THREE.CatmullRomCurve3=function(){function a(){}var b=new THREE.Vector3,c=new a,d=new a,e=new a;a.prototype.init=function(a,b,c,d){this.c0=a;this.c1=c;this.c2=-3*a+3*b-2*c-d;this.c3=2*a-2*b+c+d};a.prototype.initNonuniformCatmullRom=function(a,b,c,d,e,n,p){a=((b-a)/e-(c-a)/(e+n)+(c-b)/n)*n;d=((c-b)/n-(d-b)/(n+p)+(d-c)/p)*n;this.init(b,c,a,d)};a.prototype.initCatmullRom=function(a,b,c,d,e){this.init(b,c,e*(c-a),e*(d-b))};a.prototype.calc=function(a){var b=a*a;return this.c0+this.c1*a+this.c2*b+this.c3* +b*a};return THREE.Curve.create(function(a){this.points=a||[];this.closed=!1},function(a){var g=this.points,h,k;k=g.length;2>k&&console.log("duh, you need at least 2 points");a*=k-(this.closed?0:1);h=Math.floor(a);a-=h;this.closed?h+=0h&&(h=1);1E-4>k&&(k=h);1E-4>m&&(m=h);c.initNonuniformCatmullRom(l.x,n.x,p.x,g.x,k,h,m);d.initNonuniformCatmullRom(l.y,n.y,p.y,g.y,k,h,m);e.initNonuniformCatmullRom(l.z,n.z,p.z,g.z,k,h,m)}else"catmullrom"===this.type&&(k=void 0!==this.tension?this.tension:.5,c.initCatmullRom(l.x,n.x,p.x,g.x, +k),d.initCatmullRom(l.y,n.y,p.y,g.y,k),e.initCatmullRom(l.z,n.z,p.z,g.z,k));return new THREE.Vector3(c.calc(a),d.calc(a),e.calc(a))})}();THREE.ClosedSplineCurve3=function(a){console.warn("THREE.ClosedSplineCurve3 has been deprecated. Please use THREE.CatmullRomCurve3.");THREE.CatmullRomCurve3.call(this,a);this.type="catmullrom";this.closed=!0};THREE.ClosedSplineCurve3.prototype=Object.create(THREE.CatmullRomCurve3.prototype); +THREE.BoxGeometry=function(a,b,c,d,e,f){THREE.Geometry.call(this);this.type="BoxGeometry";this.parameters={width:a,height:b,depth:c,widthSegments:d,heightSegments:e,depthSegments:f};this.fromBufferGeometry(new THREE.BoxBufferGeometry(a,b,c,d,e,f));this.mergeVertices()};THREE.BoxGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.BoxGeometry.prototype.constructor=THREE.BoxGeometry;THREE.CubeGeometry=THREE.BoxGeometry; +THREE.BoxBufferGeometry=function(a,b,c,d,e,f){function g(a,b,c,d,e,f,g,k,l,K,P){var M=f/l,H=g/K,L=f/2,O=g/2,N=k/2;g=l+1;for(var Q=K+1,J=f=0,D=new THREE.Vector3,G=0;Gm;m++){e[0]=p[g[m]];e[1]=p[g[(m+1)%3]];e.sort(c);var q=e.toString();void 0===f[q]?f[q]={vert1:e[0],vert2:e[1],face1:l, +face2:void 0}:f[q].face2=l}e=[];for(q in f)if(g=f[q],void 0===g.face2||h[g.face1].normal.dot(h[g.face2].normal)<=d)l=k[g.vert1],e.push(l.x),e.push(l.y),e.push(l.z),l=k[g.vert2],e.push(l.x),e.push(l.y),e.push(l.z);this.addAttribute("position",new THREE.BufferAttribute(new Float32Array(e),3))};THREE.EdgesGeometry.prototype=Object.create(THREE.BufferGeometry.prototype);THREE.EdgesGeometry.prototype.constructor=THREE.EdgesGeometry; +THREE.ExtrudeGeometry=function(a,b){"undefined"!==typeof a&&(THREE.Geometry.call(this),this.type="ExtrudeGeometry",a=Array.isArray(a)?a:[a],this.addShapeList(a,b),this.computeFaceNormals())};THREE.ExtrudeGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.ExtrudeGeometry.prototype.constructor=THREE.ExtrudeGeometry;THREE.ExtrudeGeometry.prototype.addShapeList=function(a,b){for(var c=a.length,d=0;dNumber.EPSILON){var k=Math.sqrt(h),l=Math.sqrt(f*f+g*g),h=b.x-e/k;b=b.y+d/k;f=((c.x-g/l-h)*g-(c.y+f/l-b)*f)/(d*g-e*f);c=h+d*f-a.x;a=b+e*f-a.y;d=c*c+a*a;if(2>=d)return new THREE.Vector2(c,a);d=Math.sqrt(d/2)}else a=!1,d>Number.EPSILON? +f>Number.EPSILON&&(a=!0):d<-Number.EPSILON?f<-Number.EPSILON&&(a=!0):Math.sign(e)===Math.sign(g)&&(a=!0),a?(c=-e,a=d,d=Math.sqrt(h)):(c=d,a=e,d=Math.sqrt(h/2));return new THREE.Vector2(c/d,a/d)}function e(a,b){var c,d;for(G=a.length;0<=--G;){c=G;d=G-1;0>d&&(d=a.length-1);for(var e=0,f=q+2*n,e=0;eMath.abs(b.y-c.y)?[new THREE.Vector2(b.x,1-b.z),new THREE.Vector2(c.x,1-c.z),new THREE.Vector2(d.x,1-d.z),new THREE.Vector2(e.x,1-e.z)]:[new THREE.Vector2(b.y,1-b.z),new THREE.Vector2(c.y,1-c.z),new THREE.Vector2(d.y, +1-d.z),new THREE.Vector2(e.y,1-e.z)]}};THREE.ShapeGeometry=function(a,b){THREE.Geometry.call(this);this.type="ShapeGeometry";!1===Array.isArray(a)&&(a=[a]);this.addShapeList(a,b);this.computeFaceNormals()};THREE.ShapeGeometry.prototype=Object.create(THREE.Geometry.prototype);THREE.ShapeGeometry.prototype.constructor=THREE.ShapeGeometry;THREE.ShapeGeometry.prototype.addShapeList=function(a,b){for(var c=0,d=a.length;cNumber.EPSILON&&(h.normalize(),d=Math.acos(THREE.Math.clamp(e[l-1].dot(e[l]),-1,1)),f[l].applyMatrix4(k.makeRotationAxis(h,d))),g[l].crossVectors(e[l],f[l]);if(c)for(d=Math.acos(THREE.Math.clamp(f[0].dot(f[b-1]),-1,1)),d/=b-1,0c&&1===a.x&&(a=new THREE.Vector2(a.x-1,a.y));0===b.x&&0===b.z&&(a=new THREE.Vector2(c/2/Math.PI+.5,a.y)); +return a.clone()}THREE.Geometry.call(this);this.type="PolyhedronGeometry";this.parameters={vertices:a,indices:b,radius:c,detail:d};c=c||1;d=d||0;for(var k=this,l=0,n=a.length;lq&&(.2>d&&(b[0].x+=1),.2>a&&(b[1].x+=1),.2>p&&(b[2].x+=1));l=0;for(n=this.vertices.length;lp;p++){c[0]=n[e[p]];c[1]=n[e[(p+1)%3]];c.sort(b);var m=c.toString();void 0===d[m]&&(k[2*h]=c[0],k[2*h+1]=c[1],d[m]=!0,h++)}c=new Float32Array(6*h);a=0;for(l=h;ap;p++)d=f[k[2*a+p]],h=6*a+3*p,c[h+0]=d.x,c[h+1]=d.y, +c[h+2]=d.z;this.addAttribute("position",new THREE.BufferAttribute(c,3))}else if(a instanceof THREE.BufferGeometry){if(null!==a.index){l=a.index.array;f=a.attributes.position;e=a.groups;h=0;0===e.length&&a.addGroup(0,l.length);k=new Uint32Array(2*l.length);g=0;for(n=e.length;gp;p++)c[0]=l[a+p],c[1]=l[a+(p+1)%3],c.sort(b),m=c.toString(),void 0===d[m]&&(k[2*h]=c[0],k[2*h+1]=c[1],d[m]=!0,h++)}c=new Float32Array(6*h);a=0;for(l=h;a< +l;a++)for(p=0;2>p;p++)h=6*a+3*p,d=k[2*a+p],c[h+0]=f.getX(d),c[h+1]=f.getY(d),c[h+2]=f.getZ(d)}else for(f=a.attributes.position.array,h=f.length/3,k=h/3,c=new Float32Array(6*h),a=0,l=k;ap;p++)h=18*a+6*p,k=9*a+3*p,c[h+0]=f[k],c[h+1]=f[k+1],c[h+2]=f[k+2],d=9*a+(p+1)%3*3,c[h+3]=f[d],c[h+4]=f[d+1],c[h+5]=f[d+2];this.addAttribute("position",new THREE.BufferAttribute(c,3))}};THREE.WireframeGeometry.prototype=Object.create(THREE.BufferGeometry.prototype); +THREE.WireframeGeometry.prototype.constructor=THREE.WireframeGeometry;THREE.AxisHelper=function(a){a=a||1;var b=new Float32Array([0,0,0,a,0,0,0,0,0,0,a,0,0,0,0,0,0,a]),c=new Float32Array([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1]);a=new THREE.BufferGeometry;a.addAttribute("position",new THREE.BufferAttribute(b,3));a.addAttribute("color",new THREE.BufferAttribute(c,3));b=new THREE.LineBasicMaterial({vertexColors:THREE.VertexColors});THREE.LineSegments.call(this,a,b)};THREE.AxisHelper.prototype=Object.create(THREE.LineSegments.prototype); +THREE.AxisHelper.prototype.constructor=THREE.AxisHelper; +THREE.ArrowHelper=function(){var a=new THREE.BufferGeometry;a.addAttribute("position",new THREE.Float32Attribute([0,0,0,0,1,0],3));var b=new THREE.CylinderBufferGeometry(0,.5,1,5,1);b.translate(0,-.5,0);return function(c,d,e,f,g,h){THREE.Object3D.call(this);void 0===f&&(f=16776960);void 0===e&&(e=1);void 0===g&&(g=.2*e);void 0===h&&(h=.2*g);this.position.copy(d);this.line=new THREE.Line(a,new THREE.LineBasicMaterial({color:f}));this.line.matrixAutoUpdate=!1;this.add(this.line);this.cone=new THREE.Mesh(b, +new THREE.MeshBasicMaterial({color:f}));this.cone.matrixAutoUpdate=!1;this.add(this.cone);this.setDirection(c);this.setLength(e,g,h)}}();THREE.ArrowHelper.prototype=Object.create(THREE.Object3D.prototype);THREE.ArrowHelper.prototype.constructor=THREE.ArrowHelper; +THREE.ArrowHelper.prototype.setDirection=function(){var a=new THREE.Vector3,b;return function(c){.99999c.y?this.quaternion.set(1,0,0,0):(a.set(c.z,0,-c.x).normalize(),b=Math.acos(c.y),this.quaternion.setFromAxisAngle(a,b))}}();THREE.ArrowHelper.prototype.setLength=function(a,b,c){void 0===b&&(b=.2*a);void 0===c&&(c=.2*b);this.line.scale.set(1,Math.max(0,a-b),1);this.line.updateMatrix();this.cone.scale.set(c,b,c);this.cone.position.y=a;this.cone.updateMatrix()}; +THREE.ArrowHelper.prototype.setColor=function(a){this.line.material.color.copy(a);this.cone.material.color.copy(a)};THREE.BoxHelper=function(a,b){void 0===b&&(b=16776960);var c=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),d=new Float32Array(24),e=new THREE.BufferGeometry;e.setIndex(new THREE.BufferAttribute(c,1));e.addAttribute("position",new THREE.BufferAttribute(d,3));THREE.LineSegments.call(this,e,new THREE.LineBasicMaterial({color:b}));void 0!==a&&this.update(a)}; +THREE.BoxHelper.prototype=Object.create(THREE.LineSegments.prototype);THREE.BoxHelper.prototype.constructor=THREE.BoxHelper; +THREE.BoxHelper.prototype.update=function(){var a=new THREE.Box3;return function(b){b instanceof THREE.Box3?a.copy(b):a.setFromObject(b);if(!a.isEmpty()){b=a.min;var c=a.max,d=this.geometry.attributes.position,e=d.array;e[0]=c.x;e[1]=c.y;e[2]=c.z;e[3]=b.x;e[4]=c.y;e[5]=c.z;e[6]=b.x;e[7]=b.y;e[8]=c.z;e[9]=c.x;e[10]=b.y;e[11]=c.z;e[12]=c.x;e[13]=c.y;e[14]=b.z;e[15]=b.x;e[16]=c.y;e[17]=b.z;e[18]=b.x;e[19]=b.y;e[20]=b.z;e[21]=c.x;e[22]=b.y;e[23]=b.z;d.needsUpdate=!0;this.geometry.computeBoundingSphere()}}}(); +THREE.BoundingBoxHelper=function(a,b){var c=void 0!==b?b:8947848;this.object=a;this.box=new THREE.Box3;THREE.Mesh.call(this,new THREE.BoxGeometry(1,1,1),new THREE.MeshBasicMaterial({color:c,wireframe:!0}))};THREE.BoundingBoxHelper.prototype=Object.create(THREE.Mesh.prototype);THREE.BoundingBoxHelper.prototype.constructor=THREE.BoundingBoxHelper;THREE.BoundingBoxHelper.prototype.update=function(){this.box.setFromObject(this.object);this.box.size(this.scale);this.box.center(this.position)}; +THREE.CameraHelper=function(a){function b(a,b,d){c(a,d);c(b,d)}function c(a,b){d.vertices.push(new THREE.Vector3);d.colors.push(new THREE.Color(b));void 0===f[a]&&(f[a]=[]);f[a].push(d.vertices.length-1)}var d=new THREE.Geometry,e=new THREE.LineBasicMaterial({color:16777215,vertexColors:THREE.FaceColors}),f={};b("n1","n2",16755200);b("n2","n4",16755200);b("n4","n3",16755200);b("n3","n1",16755200);b("f1","f2",16755200);b("f2","f4",16755200);b("f4","f3",16755200);b("f3","f1",16755200);b("n1","f1",16755200); +b("n2","f2",16755200);b("n3","f3",16755200);b("n4","f4",16755200);b("p","n1",16711680);b("p","n2",16711680);b("p","n3",16711680);b("p","n4",16711680);b("u1","u2",43775);b("u2","u3",43775);b("u3","u1",43775);b("c","t",16777215);b("p","c",3355443);b("cn1","cn2",3355443);b("cn3","cn4",3355443);b("cf1","cf2",3355443);b("cf3","cf4",3355443);THREE.LineSegments.call(this,d,e);this.camera=a;this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix();this.matrix=a.matrixWorld;this.matrixAutoUpdate= +!1;this.pointMap=f;this.update()};THREE.CameraHelper.prototype=Object.create(THREE.LineSegments.prototype);THREE.CameraHelper.prototype.constructor=THREE.CameraHelper; +THREE.CameraHelper.prototype.update=function(){function a(a,g,h,k){d.set(g,h,k).unproject(e);a=c[a];if(void 0!==a)for(g=0,h=a.length;gd;d++)c.faces[d].color=this.colors[4>d?0:1];d=new THREE.MeshBasicMaterial({vertexColors:THREE.FaceColors,wireframe:!0});this.lightSphere=new THREE.Mesh(c,d);this.add(this.lightSphere);this.update()}; +THREE.HemisphereLightHelper.prototype=Object.create(THREE.Object3D.prototype);THREE.HemisphereLightHelper.prototype.constructor=THREE.HemisphereLightHelper;THREE.HemisphereLightHelper.prototype.dispose=function(){this.lightSphere.geometry.dispose();this.lightSphere.material.dispose()}; +THREE.HemisphereLightHelper.prototype.update=function(){var a=new THREE.Vector3;return function(){this.colors[0].copy(this.light.color).multiplyScalar(this.light.intensity);this.colors[1].copy(this.light.groundColor).multiplyScalar(this.light.intensity);this.lightSphere.lookAt(a.setFromMatrixPosition(this.light.matrixWorld).negate());this.lightSphere.geometry.colorsNeedUpdate=!0}}(); +THREE.PointLightHelper=function(a,b){this.light=a;this.light.updateMatrixWorld();var c=new THREE.SphereBufferGeometry(b,4,2),d=new THREE.MeshBasicMaterial({wireframe:!0,fog:!1});d.color.copy(this.light.color).multiplyScalar(this.light.intensity);THREE.Mesh.call(this,c,d);this.matrix=this.light.matrixWorld;this.matrixAutoUpdate=!1};THREE.PointLightHelper.prototype=Object.create(THREE.Mesh.prototype);THREE.PointLightHelper.prototype.constructor=THREE.PointLightHelper; +THREE.PointLightHelper.prototype.dispose=function(){this.geometry.dispose();this.material.dispose()};THREE.PointLightHelper.prototype.update=function(){this.material.color.copy(this.light.color).multiplyScalar(this.light.intensity)}; +THREE.SkeletonHelper=function(a){this.bones=this.getBoneList(a);for(var b=new THREE.Geometry,c=0;cc;c++,d++){var e=c/32*Math.PI*2,f=d/32*Math.PI*2;b.push(Math.cos(e),Math.sin(e),1,Math.cos(f),Math.sin(f),1)}a.addAttribute("position",new THREE.Float32Attribute(b,3));b=new THREE.LineBasicMaterial({fog:!1});this.cone=new THREE.LineSegments(a, +b);this.add(this.cone);this.update()};THREE.SpotLightHelper.prototype=Object.create(THREE.Object3D.prototype);THREE.SpotLightHelper.prototype.constructor=THREE.SpotLightHelper;THREE.SpotLightHelper.prototype.dispose=function(){this.cone.geometry.dispose();this.cone.material.dispose()}; +THREE.SpotLightHelper.prototype.update=function(){var a=new THREE.Vector3,b=new THREE.Vector3;return function(){var c=this.light.distance?this.light.distance:1E3,d=c*Math.tan(this.light.angle);this.cone.scale.set(d,d,c);a.setFromMatrixPosition(this.light.matrixWorld);b.setFromMatrixPosition(this.light.target.matrixWorld);this.cone.lookAt(b.sub(a));this.cone.material.color.copy(this.light.color).multiplyScalar(this.light.intensity)}}(); +THREE.VertexNormalsHelper=function(a,b,c,d){this.object=a;this.size=void 0!==b?b:1;a=void 0!==c?c:16711680;d=void 0!==d?d:1;b=0;c=this.object.geometry;c instanceof THREE.Geometry?b=3*c.faces.length:c instanceof THREE.BufferGeometry&&(b=c.attributes.normal.count);c=new THREE.BufferGeometry;b=new THREE.Float32Attribute(6*b,3);c.addAttribute("position",b);THREE.LineSegments.call(this,c,new THREE.LineBasicMaterial({color:a,linewidth:d}));this.matrixAutoUpdate=!1;this.update()}; +THREE.VertexNormalsHelper.prototype=Object.create(THREE.LineSegments.prototype);THREE.VertexNormalsHelper.prototype.constructor=THREE.VertexNormalsHelper; +THREE.VertexNormalsHelper.prototype.update=function(){var a=new THREE.Vector3,b=new THREE.Vector3,c=new THREE.Matrix3;return function(){var d=["a","b","c"];this.object.updateMatrixWorld(!0);c.getNormalMatrix(this.object.matrixWorld);var e=this.object.matrixWorld,f=this.geometry.attributes.position,g=this.object.geometry;if(g instanceof THREE.Geometry)for(var h=g.vertices,k=g.faces,l=g=0,n=k.length;lh.end&&(h.end=f);c||(c=k)}}for(k in d)h=d[k],this.createAnimation(k,h.start,h.end,a);this.firstAnimation=c}; +THREE.MorphBlendMesh.prototype.setAnimationDirectionForward=function(a){if(a=this.animationsMap[a])a.direction=1,a.directionBackwards=!1};THREE.MorphBlendMesh.prototype.setAnimationDirectionBackward=function(a){if(a=this.animationsMap[a])a.direction=-1,a.directionBackwards=!0};THREE.MorphBlendMesh.prototype.setAnimationFPS=function(a,b){var c=this.animationsMap[a];c&&(c.fps=b,c.duration=(c.end-c.start)/c.fps)}; +THREE.MorphBlendMesh.prototype.setAnimationDuration=function(a,b){var c=this.animationsMap[a];c&&(c.duration=b,c.fps=(c.end-c.start)/c.duration)};THREE.MorphBlendMesh.prototype.setAnimationWeight=function(a,b){var c=this.animationsMap[a];c&&(c.weight=b)};THREE.MorphBlendMesh.prototype.setAnimationTime=function(a,b){var c=this.animationsMap[a];c&&(c.time=b)};THREE.MorphBlendMesh.prototype.getAnimationTime=function(a){var b=0;if(a=this.animationsMap[a])b=a.time;return b}; +THREE.MorphBlendMesh.prototype.getAnimationDuration=function(a){var b=-1;if(a=this.animationsMap[a])b=a.duration;return b};THREE.MorphBlendMesh.prototype.playAnimation=function(a){var b=this.animationsMap[a];b?(b.time=0,b.active=!0):console.warn("THREE.MorphBlendMesh: animation["+a+"] undefined in .playAnimation()")};THREE.MorphBlendMesh.prototype.stopAnimation=function(a){if(a=this.animationsMap[a])a.active=!1}; +THREE.MorphBlendMesh.prototype.update=function(a){for(var b=0,c=this.animationsList.length;bd.duration||0>d.time)d.direction*=-1,d.time>d.duration&&(d.time=d.duration,d.directionBackwards=!0),0>d.time&&(d.time=0,d.directionBackwards=!1)}else d.time%=d.duration,0>d.time&&(d.time+=d.duration);var f=d.start+THREE.Math.clamp(Math.floor(d.time/e),0,d.length-1),g=d.weight;f!==d.currentFrame&& +(this.morphTargetInfluences[d.lastFrame]=0,this.morphTargetInfluences[d.currentFrame]=1*g,this.morphTargetInfluences[f]=0,d.lastFrame=d.currentFrame,d.currentFrame=f);e=d.time%e/e;d.directionBackwards&&(e=1-e);d.currentFrame!==d.lastFrame?(this.morphTargetInfluences[d.currentFrame]=e*g,this.morphTargetInfluences[d.lastFrame]=(1-e)*g):this.morphTargetInfluences[d.currentFrame]=g}}}; \ No newline at end of file diff --git a/lib/skulpt/radio/__init__.js b/lib/skulpt/radio/__init__.js new file mode 100644 index 00000000..beb0b35a --- /dev/null +++ b/lib/skulpt/radio/__init__.js @@ -0,0 +1,118 @@ +var $builtinmodule = function (name) { + var mod = { + data: { + power: false + } + }; + + radio = mod.data; + + mod.RATE_250KBIT = Sk.builtin.nmber(250); + mod.RATE_1MBIT = Sk.builtin.nmber(1000); + mod.RATE_2MBIT = Sk.builtin.nmber(2000); + + mod.on = new Sk.builtin.func(function() { + mod.data.power = true; + }); + + mod.off = new Sk.builtin.func(function() { + mod.data.power = false; + }); + + var config = function(length, queue, channel, power, address, group, data_rate) { + if(length === undefined) + length = Sk.builtin.nmber(32); + if(queue === undefined) + queue = Sk.builtin.nmber(3); + if(channel === undefined) + channel = Sk.builtin.nmber(7); + if(power === undefined) + power = Sk.builtin.nmber(0); + if(address === undefined) + address = Sk.builtin.str("0x75626974"); + if(group === undefined) + group = Sk.builtin.nmber(0); + if(data_rate === undefined) + data_rate = Sk.builtin.nmber(mod.RATE_1MBIT); + + mod.data.length = length.v; + mod.data.queue = queue.v; + mod.data.channel = channel.v; + mod.data.power = power.v; + mod.data.address = address.v; + mod.data.group = group.v; + mod.data.data_rate = data_rate.v; + mod.data.buffer = []; + delete mod.data.fn_send; + delete mod.data.fn_receive; + }; + config(); + + config.co_varnames = ['length', 'queue', 'channel', 'power', 'address', 'group', 'data_rate']; + config.$defaults = [Sk.builtin.nmber(32), Sk.builtin.nmber(3), Sk.builtin.nmber(7), Sk.builtin.nmber(0), Sk.builtin.str("0x75626974"), Sk.builtin.nmber(0), Sk.builtin.nmber(mod.RATE_1MBIT)]; + config.co_numargs = 7; + mod.config = new Sk.builtin.func(config); + + mod.reset = new Sk.builtin.func(function() { + config(); + }); + + mod.send_bytes = new Sk.builtin.func(function(message) { + if(!mod.data.power) { + throw new Exception("Radio is powered off"); + } + if(mod.data.fn_send) { + mod.data.fn_send(Sk.ffi.remapToJs(message)); + } + }); + + mod.receive_bytes = new Sk.builtin.func(function() { + if(!mod.data.power) { + throw new Sk.builtin.Exception("Radio is powered off"); + } + if(mod.data.buffer.length > 0) { + var data = mod.data.buffer[0]; + mod.data.buffer = mod.data.slice(1); + var bytes = []; + for(var i = 0; i < data.length; i++) { + bytes.push(data.charCodeAt(i)); + } + return Sk.ffi.remapToPy(bytes); + } + return new Sk.builtin.none(); + }); + + mod.receive_bytes_into = new Sk.builtin.func(function(buffer) { + if(!mod.data.power) { + throw new Sk.builtin.Exception("Radio is powered off"); + } + throw new Sk.builtin.Exception("Not implemented yet"); + return new Sk.builtin.none(); + }); + + mod.send = new Sk.builtin.func(function(message) { + if(!mod.data.power) { + throw new Sk.builtin.Exception("Radio is powered off"); + } + if(mod.data.fn_send) { + mod.data.fn_send("\x00\x01\x00" + message.v); + } + }); + + mod.receive = new Sk.builtin.func(function() { + if(!mod.data.power) { + throw new Sk.builtin.Exception("Radio is powered off"); + } + if(mod.data.buffer.length > 0) { + var data = mod.data.buffer[0]; + mod.data.buffer = mod.data.buffer.slice(1); + return Sk.ffi.remapToPy(data.slice(3)); + } + return new Sk.builtin.str("None"); + }); + + + + return mod; + +}; diff --git a/lib/skulpt/rpi/.giosaveVsQYx8 b/lib/skulpt/rpi/.giosaveVsQYx8 new file mode 100644 index 00000000..b93e160f --- /dev/null +++ b/lib/skulpt/rpi/.giosaveVsQYx8 @@ -0,0 +1,43 @@ +var GPIO = function(name) { + var mod = {}; + console.log("Loaded GPIO module"); + + /*mod.BOARD = Sk.builtin.nmber(10); + mod.MODE_UNKNOWN = Sk.builtin.nmber(-1); + mod.BCM = Sk.builtin.nmber(11); + mod.SERIAL = Sk.builtin.nmber(40); + mod.SPI = Sk.builtin.nmber(41); + mod.I2C = Sk.builtin.nmber(42); + mod.BOARD = Sk.builtin.nmber(10); + mod.PWM = Sk.builtin.nmber(43); + + mod.setmode = Sk.builtin.func(function(self, mode) { + console.log("Not implemented yet"); + }); + + mod.getmode = Sk.builtin.func(function(self, mode) { + console.log("Not implemented yet"); + });*/ + return mod; +} + +var RPi = function(name) { + var mod = {}; + mod.GPIO = new Sk.builtin.module(); + mod.GPIO.$d = new GPIO("RPi.GPIO"); + return mod; +} + +var $builtinmodule = function(name) { + var mod; + switch(Sk.ffi.remapToJs(name) { + case 'RPi': + mod = new RPi(name); + break; + case 'RPi.GPIO': + mod = new GPIO(name); + break; + } + console.log(name, mod); + return mod; +}; diff --git a/lib/skulpt/rpi/__init__.js b/lib/skulpt/rpi/__init__.js new file mode 100644 index 00000000..5bc8f997 --- /dev/null +++ b/lib/skulpt/rpi/__init__.js @@ -0,0 +1,390 @@ +var GPIO = function(name) { + var mod = {}; + + mod.BOARD = Sk.builtin.nmber(10); + mod.MODE_UNKNOWN = Sk.builtin.nmber(-1); + mod.BCM = Sk.builtin.nmber(11); + mod.SERIAL = Sk.builtin.nmber(40); + mod.SPI = Sk.builtin.nmber(41); + mod.I2C = Sk.builtin.nmber(42); + mod.BOARD = Sk.builtin.nmber(10); + mod.PWM = Sk.builtin.nmber(43); + mod.IN = Sk.builtin.nmber(1); + mod.OUT = Sk.builtin.nmber(0); + mod.HIGH = Sk.builtin.nmber(1); + mod.LOW = Sk.builtin.nmber(0); + mod.PUD_OFF = Sk.builtin.nmber(0); + mod.PUD_DOWN = Sk.builtin.nmber(1); + mod.PUD_UP = Sk.builtin.nmber(2); + + var internals = { + mode: mod.BOARD, + warnings: Sk.builtin.bool(true), + pins: [], + THRESHOLD: 1.25 + }; + + function pin(physical, name, type) { + var p = { + physical: physical, + name: name, + type: type, + voltage: 0.0 + } + + switch(type) { + case "power": + p.voltage = name == "Ground"?0.0:parseFloat(name.split(" ")[0].replace("v", ".")); + break; + case "io": + p.bcm = parseInt(name.split(" ")[1]); + p.direction = "input"; + break; + } + + return p; + } + + function addPin(pin) { + internals.pins[pin.physical] = pin; + } + + addPin(pin(1, "3v3 Power", "power")); + addPin(pin(2, "5v Power", "power")); + addPin(pin(3, "BCM 2", "io")); + addPin(pin(4, "5v", "power")); + addPin(pin(5, "BCM 3", "io")); + addPin(pin(6, "Ground", "power")); + addPin(pin(7, "BCM 4", "io")); + addPin(pin(8, "BCM 14", "io")); + addPin(pin(9, "Ground", "power")); + addPin(pin(10, "BCM 15", "io")); + + addPin(pin(11, "BCM 17", "io")); + addPin(pin(12, "BCM 18", "io")); + addPin(pin(13, "BCM 27", "io")); + addPin(pin(14, "Ground", "power")); + addPin(pin(15, "BCM 22", "io")); + addPin(pin(16, "BCM 23", "io")); + addPin(pin(17, "3v3 Power", "power")); + addPin(pin(18, "BCM 24", "io")); + addPin(pin(19, "BCM 10", "io")); + addPin(pin(20, "Ground", "power")); + + addPin(pin(21, "BCM 9", "io")); + addPin(pin(22, "BCM 25", "io")); + addPin(pin(23, "BCM 11", "io")); + addPin(pin(24, "BCM 8", "io")); + addPin(pin(25, "Ground", "power")); + addPin(pin(26, "BCM 7", "io")); + addPin(pin(27, "BCM 0", "io")); + addPin(pin(28, "BCM 1", "io")); + addPin(pin(29, "BCM 5", "io")); + addPin(pin(30, "Ground", "power")); + + addPin(pin(31, "BCM 6", "io")); + addPin(pin(32, "BCM 12", "io")); + addPin(pin(33, "BCM 13", "io")); + addPin(pin(34, "Ground", "power")); + addPin(pin(35, "BCM 19", "io")); + addPin(pin(36, "BCM 16", "io")); + addPin(pin(37, "BCM 26", "io")); + addPin(pin(38, "BCM 20", "io")); + addPin(pin(39, "Ground", "power")); + addPin(pin(40, "BCM 21", "io")); + + function getPin(pinNumber) { + var pin; + if(internals.mode.v == 10) { // board numbers + pin = pinNumber; + } else { // bcm numbers + for(var i = 1; i <=40; i++) { + if(internals.pins[i].bcm && internals.pins[i].bcm == pinNumber) { + pin = internals.pins[i].physical; + break; + } + } + } + return internals.pins[pin]; + } + + + + + mod.input = new Sk.builtin.func(function(channel) { + var pin = getPin(channel.v); + if(pin.type != "io") { + throw new Sk.builtin.Exception("Cannot read input from non io pin " + channel.v + " (" + pin.name + ")"); + } + if(pin.direction != "input") { + throw new Sk.builtin.Exception("Cannot read input from output pin " + channel.v + " (" + pin.name + ")"); + } + return pin.voltage > internals.THRESHOLD? mod.HIGH: mod.LOW; + }); + + function output(channel, state){ + var pin = getPin(channel); + if(pin.type != "io") { + throw new Sk.builtin.Exception("Cannot set output for non io pin " + channel + " (" + pin.name + ")"); + } + if(pin.direction != "output") { + throw new Sk.builtin.Exception("Cannot set output for input pin " + channel + " (" + pin.name + ")"); + } + pin.voltage = state == 1? 3.3 : 0.0; + updateIOs(); + } + + mod.output = new Sk.builtin.func(function(channel, state) { + switch(channel.__proto__.tp$name) { + case 'number': + output(channel.v, state.v); + break; + case 'list': + case 'tuple': + var pins = Sk.ffi.remapToJs(channel); + for(var i = 0; i < pins.length; i++) { + output(pins[i], state.v); + } + + break; + + default: + throw new Sk.builtin.Exception("Don't know how to handle a channel type of " + channel.__proto__.tp$name); + break; + } + }); + + mod.setmode = new Sk.builtin.func(function(mode) { + internals.mode = mode; + }); + + mod.getmode = new Sk.builtin.func(function() { + return internals.mode; + }); + + mod.setwarnings = new Sk.builtin.func(function(warnings) { + internals.warnings = warnings; + }); + + mod.PWM = new Sk.misceval.buildClass(mod, function($gbl, $loc) { + $loc.__init__ = new Sk.builtin.func(function(self, pin, frequency){ + self.pinNumber = pin.v; + self.f = frequency.v; + self.period = 1000.0 / self.f; + + self.pin = getPin(self.pinNumber); + if(self.pin.type != "io") { + throw new Sk.builtin.Exception("Software PWM only works on IO pins"); + } + + if(self.pin.direction != "output") { + throw new Sk.builtin.Exception("You must set to an output before using PWM"); + } + }); + + $loc.start = new Sk.builtin.func(function(self, dutyCycle) { + if(!dutyCycle) + throw new Sk.builtin.Exception("You must specify the duty cycle when starting PWM"); + self.dutyCycle = dutyCycle.v; + + if(dutyCycle < 0 || dutyCycle > 100) { + throw new Sk.builtin.Exception("Duty cycle must be between 0 and 100"); + } + if(typeof PWMNextTimeout !== 'undefined') + clearTimeout(PWMNextTimeout); + + var led = $('#RPi_pin_' + self.pin.physical + ' .out_RPi'); + + var high = function() { + PWMNextTimeout = setTimeout(function() { + self.pin.voltage = 0; + //updateIOs(); + led.removeClass('out_RPi_high').addClass('out_RPi_low'); + low(); + }, self.period * self.dutyCycle / 100) + }; + + var low = function() { + PWMNextTimeout = setTimeout(function() { + self.pin.voltage = 3.3; + //updateIOs(); + led.removeClass('out_RPi_low').addClass('out_RPi_high'); + high(); + }, self.period * (100 - self.dutyCycle) / 100) + }; + + high(); + + }); + + $loc.stop = new Sk.builtin.func(function(self) { + if(PWMNextTimeout) + clearTimeout(PWMNextTimeout); + }); + + $loc.ChangeDutyCycle = new Sk.builtin.func(function(self, dutyCycle) { + self.dutyCycle = dutyCycle.v; + }); + + $loc.ChangeFrequence = new Sk.builtin.func(function(self, frequency) { + self.f = frequency.v; + self.period = 1000.0 / self.f; + }); + + + + }, "RPi.GPIO.PWM", []); + + + var setup = function(channel, direction, initial, pull_up_down) { + + + function changePin(pinNumber) { + var pin = getPin(pinNumber); + if(pin.type == "io") { + + + if(direction.v == mod.OUT.v) { + pin.direction = "output"; + if(initial == undefined) { + initial = mod.LOW; + } + pin = initial.v == mod.LOW.v? 0.0 : 3.3; + } else { + pin.direction = "input"; + if(pull_up_down && pull_up_down.v == mod.PUD_UP.v) { + pin.voltage = 3.3; + } else { + pin.voltage = 0; + } + + } + } else { + throw new Sk.builtin.Exception("You cannot set pin " + pinNumber + " (" + pin.name + ") to be an input or output"); + } + updateIOs(); + } + + switch(channel.__proto__.tp$name) { + case 'number': + changePin(channel.v); + break; + case 'list': + case 'tuple': + var pins = Sk.ffi.remapToJs(channel); + for(var i = 0; i < pins.length; i++) { + changePin(pins[i]); + } + + + break; + + default: + throw new Sk.builtin.Exception("Don't know how to handle a channel type of " + channel.__proto__.tp$name); + break; + } + } + + setup.co_varnames = ["channel", "direction", "initial", "pull_up_down"]; + setup.$defauls = [Sk.builtin.none, Sk.builtin.none, mod.LOW, Sk.builtin.none]; + setup.co_numargs = 4; + + mod.setup = new Sk.builtin.func(setup); + + var cleanup = function(channel) { + internals.mode = mod.BOARD; + + if(channel == undefined) { + for(var i = 1; i < 41; i++) { + var pin = internals.pins[i]; + if(pin.type == "io") { + setup(Sk.builtin.nmber(i), mod.IN); + } + } + } else { + switch(channel.__proto__.tp$name) { + case 'number': + setup(channel, mod.IN); + break; + case 'list': + case 'tuple': + var pins = Sk.ffi.remapToJs(channel); + for(var i = 0; i < pins.length; i++) { + setup(Sk.builtin.nmber(pins[i]), mod.IN); + } + break; + } + + } + updateIOs(); + + }; + + cleanup.co_varnames = ["channel"]; + cleanup.$defauls = [Sk.builtin.none]; + cleanup.co_numargs = 1; + mod.cleanup = new Sk.builtin.func(cleanup); + + mod.RPI_INFO = Sk.ffi.remapToPy({'P1_REVISION': 3, 'RAM': '1024M', 'REVISION': 'a01041', 'TYPE': 'Pi2 Model B', 'PROCESSOR': 'BCM2836', 'MANUFACTURER': 'Sony'}); + mod.VERSION = Sk.builtin.str('0.5.3a'); + + var html = '

RPi GPIO connectors:

'; + for(var i = 2; i <= 40; i += 2) { + html += ''; + } + html += ''; + for(var i = 1; i <= 40; i += 2) { + html += ''; + } + html += '
' + i + '
' + internals.pins[i].name + '
' + i + '
' + internals.pins[i].name + '
'; + $('#RPi').remove(); + PythonIDE.python.output(html); + + function updateIOs() { + $('.chk_RPi').unbind(); + for(var i = 1; i < 41; i++) { + var pin = internals.pins[i]; + if(pin.type =="io") { + switch(pin.direction) { + case "input": + $('#RPi_pin_' + i).html(' internals.THRESHOLD? 'checked ' : '') + 'id="chk_RPi_' + i + '">'); + break; + case "output": + $('#RPi_pin_' + i).html(' '); + break; + } + + } + } + $('.chk_RPi').change(function(e) { + var id = e.currentTarget.id; + var state = document.getElementById(id).checked; + var pinNumber = id.split('_')[2]; + var pin = internals.pins[pinNumber]; + pin.voltage = state? 3.3 : 0.0; + }); + } + updateIOs(); + + return mod; +} + +var RPi = function(name) { + var mod = {}; + mod.GPIO = new Sk.builtin.module(); + mod.GPIO.$d = new GPIO("RPi.GPIO"); + return mod; +} + +var $builtinmodule = function(name) { + var mod; + switch(Sk.ffi.remapToJs(name)) { + case 'RPi': + mod = new RPi(name); + break; + case 'RPi.GPIO': + mod = new GPIO(name); + break; + } + return mod; +}; diff --git a/lib/skulpt/schooldirect/__init__.js b/lib/skulpt/schooldirect/__init__.js new file mode 100644 index 00000000..c9840bd1 --- /dev/null +++ b/lib/skulpt/schooldirect/__init__.js @@ -0,0 +1,28 @@ +var $builtinmodule = function(name) { + var mod = { + messages: ["Congratulations Mr Bradley, on passing your school direct training", + "All the very best for the future", + "You're a fab teacher", + "It's been great to work with you", + "We'll miss you" + ] + }; + var html = ''; + html += 'Congratulations on passing your school direct training'; + PythonIDE.python.output(html); + + setInterval(function() { + var y = Math.round(Math.random() * 10); + var r = Math.round(Math.random() * 10); + $("#unicorn").css({'top': y + "%", 'left': '50%', 'transform':'rotate(' + r + 'deg)'}); + }, 1000); + + $('#unicorn').click(function() { + var i = Math.floor(Math.random() * mod.messages.length); + var msg = mod.messages[i]; + $('#scroller').html(msg); + }); + + + return mod; +}; \ No newline at end of file diff --git a/lib/skulpt/schooldirect/unicorn.png b/lib/skulpt/schooldirect/unicorn.png new file mode 100644 index 00000000..befc4c88 Binary files /dev/null and b/lib/skulpt/schooldirect/unicorn.png differ diff --git a/lib/skulpt/skulpt-stdlib.js b/lib/skulpt/skulpt-stdlib.js new file mode 100644 index 00000000..91777cec --- /dev/null +++ b/lib/skulpt/skulpt-stdlib.js @@ -0,0 +1 @@ +Sk.builtinFiles={"files": {"src/lib/py_compile.py": "raise NotImplementedError(\"py_compile is not yet implemented in Skulpt\")\n", "src/lib/symbol.py": "raise NotImplementedError(\"symbol is not yet implemented in Skulpt\")\n", "src/lib/this.py": "raise NotImplementedError(\"this is not yet implemented in Skulpt\")\n", "src/lib/traceback.py": "raise NotImplementedError(\"traceback is not yet implemented in Skulpt\")\n", "src/lib/uuid.py": "raise NotImplementedError(\"uuid is not yet implemented in Skulpt\")\n", "src/lib/_LWPCookieJar.py": "raise NotImplementedError(\"_LWPCookieJar is not yet implemented in Skulpt\")\n", "src/lib/Bastion.py": "raise NotImplementedError(\"Bastion is not yet implemented in Skulpt\")\n", "src/lib/Cookie.py": "raise NotImplementedError(\"Cookie is not yet implemented in Skulpt\")\n", "src/lib/platform.py": "raise NotImplementedError(\"platform is not yet implemented in Skulpt\")\n", "src/lib/logging/__init__.py": "raise NotImplementedError(\"logging is not yet implemented in Skulpt\")\n", "src/lib/socket.py": "raise NotImplementedError(\"socket is not yet implemented in Skulpt\")\n", "src/lib/fileinput.py": "raise NotImplementedError(\"fileinput is not yet implemented in Skulpt\")\n", "src/lib/inspect.py": "raise NotImplementedError(\"inspect is not yet implemented in Skulpt\")\n", "src/lib/shutil.py": "raise NotImplementedError(\"shutil is not yet implemented in Skulpt\")\n", "src/lib/runpy.py": "raise NotImplementedError(\"runpy is not yet implemented in Skulpt\")\n", "src/lib/threading.py": "raise NotImplementedError(\"threading is not yet implemented in Skulpt\")\n", "src/lib/dummy_threading.py": "raise NotImplementedError(\"dummy_threading is not yet implemented in Skulpt\")\n", "src/lib/xml/etree/__init__.py": "raise NotImplementedError(\"etree is not yet implemented in Skulpt\")\n", "src/lib/nturl2path.py": "raise NotImplementedError(\"nturl2path is not yet implemented in Skulpt\")\n", "src/lib/pdb.py": "raise NotImplementedError(\"pdb is not yet implemented in Skulpt\")\n", "src/lib/operator.js": "/*\n * __author__: Isaac Dontje Lindell (i@isaacdontjelindell.com)\n *\n * Implementation of the Python operator module.\n */\n\nvar $builtinmodule = function (name) {\n var mod = {};\n\n mod.lt = new Sk.builtin.func(function (a, b) {\n return Sk.builtin.bool(Sk.misceval.richCompareBool(a, b, 'Lt'));\n });\n mod.__lt__ = mod.lt;\n\n mod.le = new Sk.builtin.func(function (a, b) {\n return Sk.builtin.bool(Sk.misceval.richCompareBool(a, b, 'LtE'));\n });\n mod.__le__ = mod.le;\n\n mod.eq = new Sk.builtin.func(function (a, b) {\n return Sk.builtin.bool(Sk.misceval.richCompareBool(a, b, 'Eq'));\n });\n mod.__eq__ = mod.eq;\n\n mod.ne = new Sk.builtin.func(function (a, b) {\n return Sk.builtin.bool(Sk.misceval.richCompareBool(a, b, 'NotEq'));\n });\n mod.__ne__ = mod.ne;\n\n mod.ge = new Sk.builtin.func(function (a, b) {\n return Sk.builtin.bool(Sk.misceval.richCompareBool(a, b, 'GtE'));\n });\n mod.__ge__ = mod.ge;\n\n mod.gt = new Sk.builtin.func(function (a, b) {\n return Sk.builtin.bool(Sk.misceval.richCompareBool(a, b, 'Gt'));\n });\n mod.__gt__ = mod.gt;\n\n mod.not_ = new Sk.builtin.func(function (obj) {\n throw new Sk.builtin.NotImplementedError(\"operator.not_() is not yet implemented in Skulpt\");\n });\n\n mod.truth = new Sk.builtin.func(function (obj) {\n return Sk.builtin.bool(obj);\n });\n\n mod.is_ = new Sk.builtin.func(function (a, b) {\n return Sk.builtin.bool(Sk.misceval.richCompareBool(a, b, 'Is'));\n });\n\n mod.is_not = new Sk.builtin.func(function (a, b) {\n return Sk.builtin.bool(Sk.misceval.richCompareBool(a, b, 'IsNot'));\n });\n\n mod.abs = new Sk.builtin.func(function (obj) {\n return Sk.misceval.callsim(Sk.builtin.abs, obj);\n });\n mod.__abs__ = mod.abs;\n\n // The documentation says that operator.add() is defined for a and b numbers, but\n // CPython (2.6) allows a and b to be other types (e.g. str)\n mod.add = new Sk.builtin.func(function (a, b) {\n return Sk.abstr.objectAdd(a, b);\n });\n mod.__add__ = mod.add;\n\n mod.and_ = new Sk.builtin.func(function (a, b) {\n return Sk.builtin.nmber.prototype['nb$and'].call(a, b);\n });\n mod.__and__ = mod.and_;\n\n mod.div = new Sk.builtin.func(function (a, b) {\n return Sk.builtin.nmber.prototype['nb$divide'].call(a, b);\n });\n mod.__div__ = mod.div;\n\n mod.floordiv = new Sk.builtin.func(function (a, b) {\n return Sk.builtin.nmber.prototype['nb$floor_divide'].call(a, b);\n });\n mod.__floordiv__ = mod.floordiv;\n\n mod.index = new Sk.builtin.func(function (a) {\n return Sk.builtin.assk$(Sk.misceval.asIndex(a));\n });\n mod.__index__ = mod.index;\n\n // Note: Sk.abstr.numberUnaryOp(obj, 'Invert') looks for the function nb$invert() on obj.\n // However, it doesn't look like that function has been implemented for any existing object types.\n // I've gone ahead and created this function for completeness' sake, but expect any use of it to\n // result in an error.\n mod.inv = new Sk.builtin.func(function (obj) {\n return Sk.abstr.numberUnaryOp(obj, 'Invert');\n });\n mod.__inv__ = mod.inv;\n mod.invert = mod.inv;\n mod.__invert__ = mod.inv;\n\n mod.lshift = new Sk.builtin.func(function (a, b) {\n return Sk.builtin.nmber.prototype['nb$lshift'].call(a, b);\n });\n mod.__lshift__ = mod.lshift;\n\n mod.mod = new Sk.builtin.func(function (a, b) {\n return Sk.builtin.nmber.prototype['nb$remainder'].call(a, b);\n });\n mod.__mod__ = mod.mod;\n\n mod.divmod = new Sk.builtin.func(function (a, b) {\n return Sk.builtin.nmber.prototype['nb$divmod'].call(a, b);\n });\n mod.__divmod__ = mod.divmod;\n\n mod.mul = new Sk.builtin.func(function (a, b) {\n return Sk.builtin.nmber.prototype['nb$multiply'].call(a, b);\n });\n mod.__mul__ = mod.mul;\n\n mod.neg = new Sk.builtin.func(function (obj) {\n return Sk.abstr.objectNegative(obj);\n });\n mod.__neg__ = mod.neg;\n\n mod.or_ = new Sk.builtin.func(function (a, b) {\n return Sk.builtin.nmber.prototype['nb$or'].call(a, b);\n });\n mod.__or__ = mod.or_;\n\n mod.pos = new Sk.builtin.func(function (obj) {\n return Sk.abstr.objectPositive(obj);\n });\n mod.__pos__ = mod.pos;\n\n mod.pow = new Sk.builtin.func(function (a, b) {\n return Sk.builtin.nmber.prototype['nb$power'].call(a, b);\n });\n mod.__pow__ = mod.pow;\n\n mod.rshift = new Sk.builtin.func(function (a, b) {\n return Sk.builtin.nmber.prototype['nb$rshift'].call(a, b);\n });\n mod.__rshift__ = mod.rshift;\n\n mod.sub = new Sk.builtin.func(function (a, b) {\n return Sk.builtin.nmber.prototype['nb$subtract'].call(a, b);\n });\n mod.__sub__ = mod.sub;\n\n mod.truediv = mod.div;\n mod.__truediv__ = mod.div;\n\n mod.xor = new Sk.builtin.func(function (a, b) {\n return Sk.builtin.nmber.prototype['nb$xor'].call(a, b);\n });\n mod.__xor__ = mod.xor;\n\n mod.concat = new Sk.builtin.func(function (a, b) {\n return Sk.abstr.sequenceConcat(a, b);\n });\n mod.__concat__ = mod.concat;\n\n mod.contains = new Sk.builtin.func(function (a, b) {\n return Sk.builtin.bool(Sk.abstr.sequenceContains(a, b));\n });\n mod.__contains__ = mod.contains;\n\n mod.countOf = new Sk.builtin.func(function (a, b) {\n return Sk.abstr.sequenceGetCountOf(a, b);\n });\n\n mod.delitem = new Sk.builtin.func(function (a, b) {\n return Sk.abstr.sequenceDelItem(a, b);\n });\n mod.__delitem__ = mod.delitem;\n\n mod.getitem = new Sk.builtin.func(function (a, b) {\n return Sk.abstr.sequenceGetItem(a, b);\n });\n mod.__getitem__ = mod.getitem;\n\n mod.indexOf = new Sk.builtin.func(function (a, b) {\n return Sk.abstr.sequenceGetIndexOf(a, b);\n });\n\n mod.setitem = new Sk.builtin.func(function (a, b, c) {\n return Sk.abstr.sequenceSetItem(a, b, c);\n });\n mod.__setitem__ = mod.setitem;\n\n return mod;\n};\n", "src/lib/pyclbr.py": "raise NotImplementedError(\"pyclbr is not yet implemented in Skulpt\")\n", "src/lib/test/__init__.py": "__author__ = 'bmiller'\n\ndef testEqual(actual, expected):\n if type(expected) == type(1):\n if actual == expected:\n print('Pass')\n return True\n elif type(expected) == type(1.11):\n if abs(actual-expected) < 0.00001:\n print('Pass')\n return True\n else:\n if actual == expected:\n print('Pass')\n return True\n print('Test Failed: expected ' + str(expected) + ' but got ' + str(actual))\n return False\n\ndef testNotEqual(actual, expected):\n pass\n\n", "src/lib/doctest.py": "raise NotImplementedError(\"doctest is not yet implemented in Skulpt\")\n", "src/lib/_strptime.py": "raise NotImplementedError(\"_strptime is not yet implemented in Skulpt\")\n", "src/lib/test/decimaltestdata/__init__.py": "raise NotImplementedError(\"decimaltestdata is not yet implemented in Skulpt\")\n", "src/lib/sha.py": "raise NotImplementedError(\"sha is not yet implemented in Skulpt\")\n", "src/lib/distutils/tests/__init__.py": "raise NotImplementedError(\"tests is not yet implemented in Skulpt\")\n", "src/lib/fpformat.py": "raise NotImplementedError(\"fpformat is not yet implemented in Skulpt\")\n", "src/lib/trace.py": "raise NotImplementedError(\"trace is not yet implemented in Skulpt\")\n", "src/lib/pythonds/graphs/priorityQueue.py": "# Bradley N. Miller, David L. Ranum\n# Introduction to Data Structures and Algorithms in Python\n# Copyright 2005\n# \nimport unittest\n\n# this implementation of binary heap takes key value pairs,\n# we will assume that the keys are all comparable\n\nclass PriorityQueue:\n def __init__(self):\n self.heapArray = [(0,0)]\n self.currentSize = 0\n\n def buildHeap(self,alist):\n self.currentSize = len(alist)\n self.heapArray = [(0,0)]\n for i in alist:\n self.heapArray.append(i)\n i = len(alist) // 2 \n while (i > 0):\n self.percDown(i)\n i = i - 1\n \n def percDown(self,i):\n while (i * 2) <= self.currentSize:\n mc = self.minChild(i)\n if self.heapArray[i][0] > self.heapArray[mc][0]:\n tmp = self.heapArray[i]\n self.heapArray[i] = self.heapArray[mc]\n self.heapArray[mc] = tmp\n i = mc\n \n def minChild(self,i):\n if i*2 > self.currentSize:\n return -1\n else:\n if i*2 + 1 > self.currentSize:\n return i*2\n else:\n if self.heapArray[i*2][0] < self.heapArray[i*2+1][0]:\n return i*2\n else:\n return i*2+1\n\n def percUp(self,i):\n while i // 2 > 0:\n if self.heapArray[i][0] < self.heapArray[i//2][0]:\n tmp = self.heapArray[i//2]\n self.heapArray[i//2] = self.heapArray[i]\n self.heapArray[i] = tmp\n i = i//2\n \n def add(self,k):\n self.heapArray.append(k)\n self.currentSize = self.currentSize + 1\n self.percUp(self.currentSize)\n\n def delMin(self):\n retval = self.heapArray[1][1]\n self.heapArray[1] = self.heapArray[self.currentSize]\n self.currentSize = self.currentSize - 1\n self.heapArray.pop()\n self.percDown(1)\n return retval\n \n def isEmpty(self):\n if self.currentSize == 0:\n return True\n else:\n return False\n\n def decreaseKey(self,val,amt):\n # this is a little wierd, but we need to find the heap thing to decrease by\n # looking at its value\n done = False\n i = 1\n myKey = 0\n while not done and i <= self.currentSize:\n if self.heapArray[i][1] == val:\n done = True\n myKey = i\n else:\n i = i + 1\n if myKey > 0:\n self.heapArray[myKey] = (amt,self.heapArray[myKey][1])\n self.percUp(myKey)\n \n def __contains__(self,vtx):\n for pair in self.heapArray:\n if pair[1] == vtx:\n return True\n return False\n \nclass TestBinHeap(unittest.TestCase):\n def setUp(self):\n self.theHeap = PriorityQueue()\n self.theHeap.add((2,'x'))\n self.theHeap.add((3,'y'))\n self.theHeap.add((5,'z'))\n self.theHeap.add((6,'a'))\n self.theHeap.add((4,'d'))\n\n\n def testInsert(self):\n assert self.theHeap.currentSize == 5\n\n def testDelmin(self):\n assert self.theHeap.delMin() == 'x'\n assert self.theHeap.delMin() == 'y'\n \n def testDecKey(self):\n self.theHeap.decreaseKey('d',1)\n assert self.theHeap.delMin() == 'd'\n \nif __name__ == '__main__':\n unittest.main()\n", "src/lib/gettext.py": "raise NotImplementedError(\"gettext is not yet implemented in Skulpt\")\n", "src/lib/UserString.py": "raise NotImplementedError(\"UserString is not yet implemented in Skulpt\")\n", "src/lib/pythonds/basic/queue.py": "# Bradley N. Miller, David L. Ranum\n# Introduction to Data Structures and Algorithms in Python\n# Copyright 2005\n# \n#queue.py\r\n\r\nclass Queue:\r\n def __init__(self):\r\n self.items = []\r\n\r\n def isEmpty(self):\r\n return self.items == []\r\n\r\n def enqueue(self, item):\r\n self.items.insert(0,item)\r\n\r\n def dequeue(self):\r\n return self.items.pop()\r\n\r\n def size(self):\r\n return len(self.items)\r\n", "src/lib/pkgutil.py": "raise NotImplementedError(\"pkgutil is not yet implemented in Skulpt\")\n", "src/lib/gzip.py": "raise NotImplementedError(\"gzip is not yet implemented in Skulpt\")\n", "src/lib/numbers.py": "raise NotImplementedError(\"numbers is not yet implemented in Skulpt\")\n", "src/lib/posixfile.py": "raise NotImplementedError(\"posixfile is not yet implemented in Skulpt\")\n", "src/lib/macpath.py": "raise NotImplementedError(\"macpath is not yet implemented in Skulpt\")\n", "src/lib/wave.py": "raise NotImplementedError(\"wave is not yet implemented in Skulpt\")\n", "src/lib/bdb.py": "raise NotImplementedError(\"bdb is not yet implemented in Skulpt\")\n", "src/lib/imputil.py": "raise NotImplementedError(\"imputil is not yet implemented in Skulpt\")\n", "src/lib/email/test/data/__init__.py": "raise NotImplementedError(\"data is not yet implemented in Skulpt\")\n", "src/lib/imghdr.py": "raise NotImplementedError(\"imghdr is not yet implemented in Skulpt\")\n", "src/lib/colorsys.py": "raise NotImplementedError(\"colorsys is not yet implemented in Skulpt\")\n", "src/lib/SimpleXMLRPCServer.py": "raise NotImplementedError(\"SimpleXMLRPCServer is not yet implemented in Skulpt\")\n", "src/lib/types.py": "raise NotImplementedError(\"types is not yet implemented in Skulpt\")\n", "src/lib/ast.py": "raise NotImplementedError(\"ast is not yet implemented in Skulpt\")\n", "src/lib/fractions.py": "raise NotImplementedError(\"fractions is not yet implemented in Skulpt\")\n", "src/lib/posixpath.py": "raise NotImplementedError(\"posixpath is not yet implemented in Skulpt\")\n", "src/lib/optparse.py": "raise NotImplementedError(\"optparse is not yet implemented in Skulpt\")\n", "src/lib/email/mime/__init__.py": "raise NotImplementedError(\"mime is not yet implemented in Skulpt\")\n", "src/lib/shlex.py": "raise NotImplementedError(\"shlex is not yet implemented in Skulpt\")\n", "src/lib/sre_compile.py": "raise NotImplementedError(\"sre_compile is not yet implemented in Skulpt\")\n", "src/lib/popen2.py": "raise NotImplementedError(\"popen2 is not yet implemented in Skulpt\")\n", "src/lib/chunk.py": "raise NotImplementedError(\"chunk is not yet implemented in Skulpt\")\n", "src/lib/poplib.py": "raise NotImplementedError(\"poplib is not yet implemented in Skulpt\")\n", "src/lib/hmac.py": "raise NotImplementedError(\"hmac is not yet implemented in Skulpt\")\n", "src/lib/contextlib.py": "raise NotImplementedError(\"contextlib is not yet implemented in Skulpt\")\n", "src/lib/unittest/gui.py": "import document\nfrom unittest import TestCase\n\nclass TestCaseGui(TestCase):\n\tdef __init__(self):\n\t\tTestCase.__init__(self)\n\n\t\tself.divid = document.currentDiv()\n\t\tself.mydiv = document.getElementById(self.divid)\n\t\tres = document.getElementById(self.divid+'_unit_results')\n\t\tif res:\n\t\t\tself.resdiv = res\n\t\t\tres.innerHTML = ''\n\t\telse:\n\t\t\tself.resdiv = document.createElement('div')\n\t\t\tself.resdiv.setAttribute('id',self.divid+'_unit_results')\n\t\t\tself.resdiv.setAttribute('class','unittest-results')\n\t\tself.mydiv.appendChild(self.resdiv)\n\n\n\tdef main(self):\n\t\tl = document.createElement('ul')\n\t\tself.resdiv.appendChild(l)\n\t\tself.resList = l\n\n\t\tfor func in self.tlist:\n\t\t\ttry:\n\t\t\t\tself.setup()\n\t\t\t\tfunc()\n\t\t\t\tself.tearDown()\n\t\t\texcept:\n\t\t\t\tself.appendResult('Error')\n\t\t\t\tself.numFailed += 1\n\t\tself.showSummary()\n\n\tdef appendResult(self,res,actual,expected,feedback):\n\t\tif res == 'Error':\n\t\t\tmsg = 'Error'\n\t\telif res:\n\t\t\tmsg = 'Pass'\n\t\t\tself.numPassed += 1\n\t\telse:\n\t\t\tmsg = 'Fail: expected %s %s ' % (str(actual),str(expected)) + feedback\n\t\t\tself.numFailed += 1\n\n\t\tpTag = document.createElement('li')\n\t\tpTag.innerHTML = msg\n\t\tself.resList.appendChild(pTag)\n\n\n\n\tdef showSummary(self):\n\t\tpct = self.numPassed / (self.numPassed+self.numFailed) * 100\n\t\tpTag = document.createElement('p')\n\t\tpTag.innerHTML = \"You passed: \" + str(pct) + \"% of the tests\"\n\t\tself.resdiv.appendChild(pTag)\n\t\tif pct < 90:\n\t\t\tself.resdiv.setCSS('background-color','#de8e96')\n\t\telse:\n\t\t\tself.resdiv.setCSS('background-color','#83d382')\n", "src/lib/os.py": "raise NotImplementedError(\"os is not yet implemented in Skulpt\")\n", "src/lib/pythonds/basic/__init__.py": "\n#__all__ = [\"stack\"]\n\n\n#from .stack import Stack\n#from .queue import Queue\n\n\n\n", "src/lib/audiodev.py": "raise NotImplementedError(\"audiodev is not yet implemented in Skulpt\")\n", "src/lib/locale.py": "raise NotImplementedError(\"locale is not yet implemented in Skulpt\")\n", "src/lib/site.py": "raise NotImplementedError(\"site is not yet implemented in Skulpt\")\n", "src/lib/CGIHTTPServer.py": "raise NotImplementedError(\"CGIHTTPServer is not yet implemented in Skulpt\")\n", "src/lib/stringprep.py": "raise NotImplementedError(\"stringprep is not yet implemented in Skulpt\")\n", "src/lib/sre_parse.py": "raise NotImplementedError(\"sre_parse is not yet implemented in Skulpt\")\n", "src/lib/dumbdbm.py": "raise NotImplementedError(\"dumbdbm is not yet implemented in Skulpt\")\n", "src/lib/idlelib/Icons/__init__.py": "raise NotImplementedError(\"Icons is not yet implemented in Skulpt\")\n", "src/lib/tempfile.py": "raise NotImplementedError(\"tempfile is not yet implemented in Skulpt\")\n", "src/lib/sre.py": "raise NotImplementedError(\"sre is not yet implemented in Skulpt\")\n", "src/lib/htmlentitydefs.py": "raise NotImplementedError(\"htmlentitydefs is not yet implemented in Skulpt\")\n", "src/lib/_MozillaCookieJar.py": "raise NotImplementedError(\"_MozillaCookieJar is not yet implemented in Skulpt\")\n", "src/lib/cgitb.py": "raise NotImplementedError(\"cgitb is not yet implemented in Skulpt\")\n", "src/lib/statvfs.py": "raise NotImplementedError(\"statvfs is not yet implemented in Skulpt\")\n", "src/lib/ssl.py": "raise NotImplementedError(\"ssl is not yet implemented in Skulpt\")\n", "src/lib/turtle.js": "var $builtinmodule = function (name) {\n\"use strict\";\n\nfunction getConfiguredTarget() {\n var selector, target;\n\n selector = (Sk.TurtleGraphics && Sk.TurtleGraphics.target) || \"turtle\",\n target = typeof selector === \"string\" ?\n document.getElementById(selector) :\n selector;\n // ensure that the canvas container is empty\n while (target.firstChild) {\n target.removeChild(target.firstChild);\n }\n return target;\n}\n\nfunction generateTurtleModule(_target) {\n var _module = {},\n _durationSinceRedraw = 0,\n _focus = true,\n OPTIMAL_FRAME_RATE = 1000/30,\n SHAPES = {},\n TURTLE_COUNT = 0,\n Types = {},\n _frameRequest,\n _frameRequestTimeout,\n _screenInstance,\n _config,\n _anonymousTurtle,\n _mouseHandler;\n\n // Ensure that the turtle DOM target has a tabindex\n // so that it can accept keyboard focus and events\n if (!_target.hasAttribute(\"tabindex\")) {\n _target.setAttribute(\"tabindex\", 0);\n }\n\n Types.FLOAT = function(value) {\n return Sk.builtin.float_(value);\n };\n Types.COLOR = function(value) {\n if (typeof value === \"string\") {\n return new Sk.builtin.str(value);\n }\n else {\n for(var i = 0; i < 3; i++) {\n value[i] = new Sk.builtin.nmber(value[i], undefined);\n }\n if (value.length === 4) {\n value[3] = Sk.builtin.float_(value[3]);\n }\n return new Sk.builtin.tuple(value);\n }\n };\n Types.TURTLE_LIST = function(value) {\n var skValues = [];\n for (var i = 0; i < value.length; i++) {\n skValues.push(value[i].skInstance);\n }\n return new Sk.builtin.tuple(skValues);\n };\n\n SHAPES.arrow = [[-10,0],[10,0],[0,10]];\n SHAPES.square = [[ 10,-10],[10,10],[-10,10],[-10, -10]];\n SHAPES.triangle = [[10,-5.77],[0,11.55],[-10,-5.77]];\n SHAPES.classic = [[0,0],[-5,-9],[0,-7],[5,-9]];\n SHAPES.turtle = [\n [0,16],[-2,14],[-1,10],[-4,7],[-7,9],[-9,8],[-6,5],[-7,1],[-5,-3],[-8,-6],\n [-6,-8],[-4,-5],[0,-7],[4,-5],[6,-8],[8,-6],[5,-3],[7,1],[6,5],[9,8],[7,9],\n [4,7],[1,10],[2,14]\n ];\n\n SHAPES.circle = [\n [10,0],[9.51,3.09],[8.09,5.88],[5.88,8.09],[3.09,9.51],[0,10],[-3.09,9.51],\n [-5.88,8.09],[-8.09,5.88],[-9.51,3.09],[-10,0],[-9.51,-3.09],[-8.09,-5.88],\n [-5.88,-8.09],[-3.09,-9.51],[-0,-10],[3.09,-9.51],[5.88,-8.09],[8.09,-5.88],\n [9.51,-3.09]\n ];\n\n _config = (function() {\n var defaultSetup = {\n target : \"turtle\", // DOM element or id of parent container\n width : 400, // if set to 0 it will use the target width\n height : 400, // if set to 0 it will use the target height\n animate : true, // enabled/disable all animated rendering\n bufferSize : 0, // default turtle buffer size\n allowUndo : true, // enable ability to use the undo buffer\n },\n key;\n\n if (!Sk.TurtleGraphics) {\n Sk.TurtleGraphics = {};\n }\n\n for(key in defaultSetup) {\n if (!Sk.TurtleGraphics.hasOwnProperty(key)) {\n Sk.TurtleGraphics[key] = defaultSetup[key];\n }\n }\n\n return Sk.TurtleGraphics;\n })();\n\n // InstantPromise is a workaround to allow usage of the clean promise-style\n // then/catch syntax but to instantly call resolve the then/catch chain so we\n // can avoid creating Suspensions in unnecessary cases. This is desirable\n // because Suspensions have a fairly large negative impact on overall\n // performance. These 'instant promises' come into play when a tracer()\n // call is made with a value other than 1. When tracer is 0 or greater than 1\n // , we can bypass the creation of a Suspension and proceed to the next line of\n // code immediately if the current line is not going to incur involve a screen\n // update. We determine if a real promise or InstantPromise is necessary by\n // checking FrameManager.willRenderNext()\n function InstantPromise() {\n this.lastResult = undefined;\n this.lastError = undefined;\n }\n\n InstantPromise.prototype.then = function(cb) {\n if (this.lastError) {\n return this;\n }\n\n try {\n this.lastResult = cb(this.lastResult);\n } catch(e) {\n this.lastResult = undefined;\n this.lastError = e;\n }\n\n return this.lastResult instanceof Promise ? this.lastResult : this;\n };\n\n InstantPromise.prototype.catch = function(cb) {\n if (this.lastError) {\n try {\n this.lastResult = cb(this.lastError);\n this.lastError = undefined;\n } catch(e) {\n this.lastResult = undefined;\n this.lastError = e;\n }\n }\n\n return this.lastResult instanceof Promise ? this.lastResult : this;\n };\n\n function FrameManager() {\n this.reset();\n }\n\n var _frameManager;\n function getFrameManager() {\n if (!_frameManager) {\n _frameManager = new FrameManager();\n }\n return _frameManager;\n }\n\n (function(proto) {\n var browserFrame;\n (function(frame) {\n if (frame) {\n browserFrame = function(method) {\n return (_frameRequest = frame(method));\n };\n }\n })(window.requestAnimationFrame || window.mozRequestAnimationFrame);\n\n function animationFrame(delay) {\n if (!_config.animate) {\n return function(method) {\n method();\n };\n }\n\n if (!delay && browserFrame) {\n return browserFrame;\n }\n\n return function(method) {\n _frameRequestTimeout = window.setTimeout(\n method,\n delay || OPTIMAL_FRAME_RATE\n );\n return _frameRequestTimeout;\n };\n }\n\n proto.willRenderNext = function() {\n return !!(this._buffer && this._frameCount+1 === this.frameBuffer());\n };\n\n proto.turtles = function() {\n return this._turtles;\n };\n\n proto.addTurtle = function(turtle) {\n this._turtles.push(turtle);\n };\n\n proto.reset = function() {\n if (this._turtles) {\n for(var i = this._turtles.length; --i >= 0;) {\n this._turtles[i].reset();\n }\n }\n this._turtles = [];\n this._frames = [];\n this._frameCount = 0;\n this._buffer = 1;\n this._rate = 0;\n this._animationFrame = animationFrame();\n };\n\n proto.addFrame = function(method, countAsFrame) {\n var instant = false;\n\n if (countAsFrame) {\n this._frameCount += 1;\n }\n\n this.frames().push(method);\n\n instant = (\n !_config.animate ||\n (this._buffer && this._frameCount === this.frameBuffer())\n );\n\n return instant ? this.update() : new InstantPromise();\n };\n\n proto.frames = function() {\n return this._frames;\n };\n\n proto.frameBuffer = function(buffer) {\n if (typeof buffer === \"number\") {\n this._buffer = buffer | 0;\n if (buffer && buffer <= this._frameCount) {\n return this.update();\n }\n }\n return this._buffer;\n };\n\n proto.refreshInterval = function(rate) {\n if (typeof rate === \"number\") {\n this._rate = rate | 0;\n this._animationFrame = animationFrame(rate);\n }\n return this._rate;\n };\n\n proto.update = function() {\n return (this._frames && this._frames.length) ?\n this.requestAnimationFrame() :\n new InstantPromise();\n };\n\n proto.requestAnimationFrame = function() {\n var frames = this._frames,\n animationFrame = this._animationFrame,\n turtles = this._turtles,\n sprites = getScreen().spriteLayer(),\n turtle, i;\n\n this._frames = [];\n this._frameCount = 0;\n\n return new Promise(function(resolve) {\n animationFrame(function paint() {\n for (i = 0; i < frames.length; i++) {\n if (frames[i]) {\n frames[i]();\n }\n }\n clearLayer(sprites);\n for (i = 0; i < turtles.length; i++) {\n turtle = turtles[i];\n if (turtle.getState().shown) {\n drawTurtle(turtle.getState(), sprites);\n }\n }\n resolve();\n });\n });\n };\n })(FrameManager.prototype);\n\n function MouseHandler() {\n var self = this;\n\n this._target = getTarget();\n this._managers = {};\n this._handlers = {\n mousedown : function(e) {\n self.onEvent(\"mousedown\", e);\n },\n mouseup : function(e) {\n self.onEvent(\"mouseup\", e);\n },\n mousemove : function(e) {\n self.onEvent(\"mousemove\", e);\n }\n };\n for (var key in this._handlers) {\n this._target.addEventListener(key, this._handlers[key]);\n }\n }\n\n (function(proto) {\n proto.onEvent = function(type, e) {\n var managers = this._managers[type],\n moveManagers = this._managers[\"mousemove\"],\n computed = false,\n x, y, localX, localY, i;\n\n function computeCoordinates() {\n if (computed) return;\n var world = getScreen();\n var rect = world.spriteLayer().canvas.getBoundingClientRect();\n x = e.clientX - rect.left | 0;\n y = e.clientY - rect.top | 0;\n localX = x * world.xScale + world.llx;\n localY = y * world.yScale + world.ury;\n computed = true;\n }\n\n if ((type === \"mousedown\" || type === \"mouseup\") && moveManagers && moveManagers.length) {\n computeCoordinates();\n for (i = moveManagers.length; --i >= 0;) {\n if (moveManagers[i].test(x, y, localX, localY)) {\n moveManagers[i].canMove(type === \"mousedown\");\n }\n }\n }\n\n if (managers && managers.length) {\n computeCoordinates();\n for (i = managers.length; --i >= 0;) {\n if (type === \"mousemove\") {\n if (managers[i].canMove()) {\n managers[i].trigger([localX, localY]);\n }\n continue;\n }\n\n if (managers[i].test(x, y, localX, localY)) {\n managers[i].trigger([localX, localY]);\n }\n }\n }\n };\n\n proto.reset = function() {\n this._managers = {};\n };\n\n proto.addManager = function(type, manager) {\n if (!this._managers[type]) {\n this._managers[type] = [];\n }\n\n this._managers[type].push(manager);\n };\n\n })(MouseHandler.prototype);\n\n function EventManager(type, target) {\n this._type = type;\n this._target = target;\n this._handlers = undefined;\n getMouseHandler().addManager(type, this);\n }\n\n (function(proto) {\n proto.reset = function() {\n this._handlers = undefined;\n };\n\n proto.canMove = function(value) {\n if (!this._target || !this._target.hitTest) return false;\n\n if (value !== undefined) {\n this._target.hitTest.hit = value;\n }\n\n return this._target.hitTest.hit;\n };\n\n proto.test = function(x, y, localX, localY) {\n return this._target && this._target.hitTest ?\n this._target.hitTest(x, y, localX, localY) :\n !!this._target;\n };\n\n proto.trigger = function(args) {\n var handlers = this._handlers,\n i;\n\n if (handlers && handlers.length) {\n for (i = 0; i < handlers.length; i++) {\n handlers[i].apply({}, args);\n }\n }\n };\n\n proto.addHandler = function(handler, add) {\n var handlers = this._handlers;\n\n if (!add && handlers && handlers.length) {\n // remove all existing handlers\n while (handlers.shift()) {/* noop */}\n }\n\n if (typeof handler !== \"function\") {\n if (handlers && !handlers.length) {\n this.reset();\n }\n return;\n }\n\n if (!handlers) {\n handlers = this._handlers = [];\n }\n\n handlers.push(handler);\n };\n })(EventManager.prototype);\n\n function Turtle() {\n getFrameManager().addTurtle(this);\n this._screen = getScreen();\n this._managers = {};\n this.reset();\n }\n\n Turtle.RADIANS = 2 * Math.PI;\n\n (function(proto) {\n proto.hitTest = function(mouseX, mouseY, localX, localY) {\n var context = getScreen().hitTestLayer();\n clearLayer(context);\n drawTurtle(this.getState(), context);\n var pixel = context.getImageData(mouseX,mouseY,1,1).data;\n // check alpha first since it is most likely to have a value\n return pixel[3] ||pixel[0] || pixel[1] || pixel[2];\n };\n\n proto.addUpdate = function(method, countAsFrame, stateChanges) {\n var self = this,\n state = this.getState(),\n args = Array.prototype.slice.call(arguments, stateChanges ? 2 : 3);\n\n return getFrameManager().addFrame(function() {\n if (method) {\n method.apply(state, args);\n }\n if (stateChanges) {\n for(var key in stateChanges) {\n state[key] = stateChanges[key];\n }\n }\n }, countAsFrame);\n };\n\n proto.getState = function() {\n var self = this;\n\n if (!this._state) {\n this._state = {\n x : this._x,\n y : this._y,\n angle : this._angle,\n radians : this._radians,\n shape : this._shape,\n color : this._color,\n fill : this._fill,\n filling : this._filling,\n size : this._size,\n speed : this._computed_speed,\n down : this._down,\n shown : this._shown,\n context : function() {\n return self.getPaper();\n }\n };\n }\n return this._state;\n };\n\n proto.translate = function(startX, startY, dx, dy, beginPath, isCircle) {\n var self = this;\n return translate(this, startX, startY, dx, dy, beginPath, isCircle)\n .then(function(coords) {\n self._x = coords[0];\n self._y = coords[1];\n });\n };\n\n proto.rotate = function(startAngle, delta, isCircle) {\n var self = this;\n return rotate(this, startAngle, delta, isCircle)\n .then(function(heading) {\n self._angle = heading.angle;\n self._radians = heading.radians;\n });\n };\n\n proto.queueMoveBy = function(startX, startY, theta, distance) {\n var dx = Math.cos(theta) * distance,\n dy = Math.sin(theta) * distance;\n\n return this.translate(startX, startY, dx, dy, true);\n };\n\n proto.queueTurnTo = function(startAngle, endAngle) {\n endAngle = endAngle % this._fullCircle;\n if (endAngle < 0) {\n endAngle += this._fullCircle;\n }\n return this.rotate(startAngle, endAngle - startAngle);\n };\n\n proto.getManager = function(type) {\n if (!this._managers[type]) {\n this._managers[type] = new EventManager(type, this);\n }\n return this._managers[type];\n };\n\n proto.getPaper = function() {\n return this._paper || (this._paper = createLayer(2));\n };\n\n proto.reset = function() {\n this._x = 0;\n this._y = 0;\n this._radians = 0;\n this._angle = 0;\n this._shown = true;\n this._down = true;\n this._color = \"black\";\n this._fill = \"black\";\n this._shape = \"classic\";\n this._size = 1;\n this._filling = false;\n this._undoBuffer = [];\n this._speed = 3;\n this._computed_speed = 5;\n this._state = undefined;\n\n for(var key in this._managers) {\n this._managers[key].reset();\n }\n\n this._isRadians = false;\n this._fullCircle = 360;\n this._bufferSize = typeof _config.bufferSize === \"number\" ?\n _config.bufferSize :\n 0;\n\n removeLayer(this._paper);\n this._paper = undefined;\n };\n\n proto.$degrees = function(fullCircle) {\n fullCircle = (typeof fullCircle === \"number\") ?\n Math.abs(fullCircle) :\n 360;\n\n this._isRadians = false;\n if (!fullCircle || !this._fullCircle) {\n this._angle = this._radians = 0;\n }\n else {\n this._angle = this._angle / this._fullCircle * fullCircle;\n }\n this._fullCircle = fullCircle;\n return this.addUpdate(\n undefined,\n false,\n {angle:this._angle, radians: this._radians}\n );\n };\n proto.$degrees.returnType = Types.FLOAT;\n\n proto.$radians = function() {\n if (!this._isRadians) {\n this._isRadians = true;\n this._angle = this._radians;\n this._fullCircle = Turtle.RADIANS;\n }\n\n return this._angle;\n };\n proto.$radians.returnType = Types.FLOAT;\n\n proto.$position = proto.$pos = function() {\n return [this.$xcor(), this.$ycor()];\n };\n proto.$position.returnType = function(value) {\n return new Sk.builtin.tuple([\n Sk.builtin.float_(value[0]),\n Sk.builtin.float_(value[1])\n ]);\n };\n\n proto.$towards = function(x,y) {\n var coords = getCoordinates(x,y),\n radians = Math.PI + Math.atan2(this._y - coords.y, this._x - coords.x),\n angle = radians * (this._fullCircle / Turtle.RADIANS);\n\n return angle;\n };\n proto.$towards.minArgs = 1;\n proto.$towards.returnType = Types.FLOAT;\n\n proto.$distance = function(x,y) {\n var coords = getCoordinates(x,y),\n dx = coords.x - this._x,\n dy = coords.y - this._y;\n\n return Math.sqrt(dx * dx + dy * dy);\n };\n proto.$distance.minArgs = 1;\n proto.$distance.returnType = Types.FLOAT;\n\n proto.$heading = function() {\n return Math.abs(this._angle) < 1e-13 ? 0 : this._angle;\n };\n proto.$heading.returnType = Types.FLOAT;\n\n proto.$xcor = function() {\n return Math.abs(this._x) < 1e-13 ? 0 : this._x;\n };\n proto.$xcor.returnType = Types.FLOAT;\n\n proto.$ycor = function() {\n return Math.abs(this._y) < 1e-13 ? 0 : this._y;\n };\n proto.$ycor.returnType = Types.FLOAT;\n\n proto.$forward = proto.$fd = function(distance) {\n pushUndo(this);\n return this.queueMoveBy(this._x, this._y, this._radians, distance);\n };\n\n proto.$undo = function() {\n popUndo(this);\n };\n\n proto.$undobufferentries = function() {\n return this._undoBuffer.length;\n };\n\n proto.$setundobuffer = function(size) {\n this._bufferSize = typeof size === \"number\" ?\n Math.min(Math.abs(size), 1000) :\n 0;\n };\n\n proto.$backward = proto.$back = proto.$bk = function(distance) {\n pushUndo(this);\n return this.queueMoveBy(this._x, this._y, this._radians, -distance);\n };\n\n proto.$goto_$rw$ = proto.$setpos = proto.$setposition = function(x,y) {\n var coords = getCoordinates(x,y);\n\n pushUndo(this);\n\n return this.translate(\n this._x, this._y,\n coords.x - this._x, coords.y - this._y,\n true\n );\n };\n proto.$goto_$rw$.minArgs = 1;\n\n proto.$setx = function(x) {\n return this.translate(this._x, this._y, x - this._x, 0, true);\n };\n\n proto.$sety = function(y) {\n return this.translate(this._x, this._y, 0, y - this._y, true);\n };\n\n proto.$home = function() {\n var self = this,\n angle = this._angle;\n\n pushUndo(this);\n return self.translate(this._x, this._y, -this._x, -this._y, true)\n .then(function(position) {\n return self.queueTurnTo(angle, 0);\n })\n .then(function(heading) {\n return undefined;\n });\n };\n\n proto.$right = proto.$rt = function(angle) {\n pushUndo(this);\n return this.rotate(this._angle, -angle);\n };\n\n proto.$left = proto.$lt = function(angle) {\n pushUndo(this);\n return this.rotate(this._angle, angle);\n };\n\n proto.$setheading = proto.$seth = function(angle) {\n pushUndo(this);\n return this.queueTurnTo(this._angle, angle);\n };\n\n function circleRotate(turtle, angle, radians) {\n return function() {\n return turtle.addUpdate(\n undefined,\n false,{angle:angle, radians:radians}\n );\n };\n }\n\n function circleSegment(turtle, x, y, dx, dy, beginPath) {\n return function() {\n return turtle.translate(x, y, dx, dy, beginPath, true);\n };\n }\n\n proto.$circle = function(radius, extent, steps) {\n var self = this,\n x = this._x,\n y = this._y,\n angle = this._angle,\n heading = {},\n states = [],\n scale = 1/getScreen().lineScale,\n beginPath = true,\n endAngle, frac, w, w2, l, i, dx, dy, promise;\n\n pushUndo(this);\n\n if (extent === undefined) {\n extent = self._fullCircle;\n }\n\n if (steps === undefined) {\n frac = Math.abs(extent)/self._fullCircle;\n steps = 1 + ((Math.min(11+Math.abs(radius*scale)/6, 59)*frac) | 0);\n }\n w = extent / steps;\n w2 = 0.5 * w;\n l = 2 * radius * Math.sin(w*Math.PI/self._fullCircle);\n\n if (radius < 0) {\n l = -l;\n w = -w;\n w2 = -w2;\n endAngle = angle - extent;\n }\n else {\n endAngle = angle + extent;\n }\n\n promise = getFrameManager().willRenderNext() ? Promise.resolve() : new InstantPromise();\n\n angle += w2;\n\n for(i = 0; i < steps; i++) {\n calculateHeading(self, angle + w * i, heading);\n dx = Math.cos(heading.radians) * l;\n dy = Math.sin(heading.radians) * l;\n promise = promise\n .then(circleRotate(self, heading.angle, heading.radians))\n .then(circleSegment(self, x, y, dx, dy, beginPath));\n x += dx;\n y += dy;\n beginPath = false;\n }\n\n promise = promise.then(function() {\n calculateHeading(self, endAngle, heading);\n self._angle = heading.angle;\n self._radians = heading.radians;\n return self.addUpdate(undefined, true, heading);\n });\n\n return promise;\n };\n proto.$circle.keywordArgs = [\"extent\", \"steps\"];\n proto.$circle.minArgs = 1;\n\n proto.$penup = proto.$up = proto.$pu = function() {\n this._down = false;\n return this.addUpdate(undefined, false, {down:false});\n };\n\n proto.$pendown = proto.$down = proto.$pd = function() {\n this._down = true;\n return this.addUpdate(undefined, false, {down:true});\n };\n\n proto.$isdown = function() {\n return this._down;\n };\n\n proto.$speed = function(speed) {\n if (arguments.length) {\n this._speed = Math.max(0, Math.min(1000, speed));\n this._computed_speed = Math.max(0, speed * 2 - 1);\n return this.addUpdate(undefined, false, {speed:this._computed_speed});\n }\n\n return this._speed;\n };\n proto.$speed.minArgs = 0;\n\n proto.$pencolor = function(r,g,b,a) {\n var color;\n\n if (arguments.length) {\n this._color = createColor(r,g,b,a);\n return this.addUpdate(undefined, this._shown, {color : this._color});\n }\n\n return hexToRGB(this._color);\n };\n proto.$pencolor.minArgs = 0;\n proto.$pencolor.returnType = Types.COLOR;\n\n proto.$fillcolor = function(r,g,b,a) {\n var color;\n\n if (arguments.length) {\n this._fill = createColor(r,g,b,a);\n return this.addUpdate(undefined, this._shown, {fill : this._fill});\n }\n\n return hexToRGB(this._fill);\n };\n proto.$fillcolor.minArgs = 0;\n proto.$fillcolor.returnType = Types.COLOR;\n\n proto.$color = function(color, fill, b, a) {\n if (arguments.length) {\n if (arguments.length === 1 || arguments.length >= 3) {\n this._color = createColor(color, fill, b, a);\n this._fill = this._color;\n }\n else {\n this._color = createColor(color);\n this._fill = createColor(fill);\n }\n return this.addUpdate(undefined, this._shown, {\n color : this._color,\n fill : this._fill\n });\n }\n return [this.$pencolor(), this.$fillcolor()];\n };\n proto.$color.minArgs = 0;\n proto.$color.returnType = function(value) {\n return new Sk.builtin.tuple([\n Types.COLOR(value[0]),\n Types.COLOR(value[1])\n ]);\n };\n\n proto.$fill = function(flag) {\n var self = this;\n\n if (flag !== undefined) {\n flag = !!flag;\n if (flag === this._filling) return;\n this._filling = flag;\n if (flag) {\n pushUndo(this);\n return this.addUpdate(undefined, false, {\n filling : true,\n fillBuffer : [{x : this._x, y : this._y}]\n });\n }\n else {\n pushUndo(this);\n return this.addUpdate(\n function() {\n this.fillBuffer.push(this);\n drawFill.call(this);\n },\n true,\n {\n filling : false,\n fillBuffer : undefined\n }\n );\n }\n }\n\n return this._filling;\n };\n proto.$fill.minArgs = 0;\n\n proto.$begin_fill = function() {\n return this.$fill(true);\n };\n\n proto.$end_fill = function() {\n return this.$fill(false);\n };\n\n proto.$stamp = function() {\n pushUndo(this);\n return this.addUpdate(function() {\n drawTurtle(this, this.context());\n }, true);\n };\n\n proto.$dot = function(size, color, g, b, a) {\n pushUndo(this);\n size = Sk.builtin.asnum$(size);\n size = (typeof size === \"number\") ?\n Math.max(1, Math.abs(size) | 0) :\n Math.max(this._size + 4, this._size * 2);\n\n color = (color !== undefined) ?\n createColor(color, g, b, a) :\n this._color;\n\n return this.addUpdate(drawDot, true, undefined, size, color);\n };\n\n proto.$write = function(message,move,align,font) {\n var self = this,\n promise, face, size, type, width;\n\n pushUndo(this);\n\n message = String(message);\n\n if (font && font.constructor === Array) {\n face = typeof font[0] === \"string\" ? font[0] : \"Arial\";\n size = String(font[1] || \"12pt\");\n type = typeof font[2] === \"string\" ? font[2] : \"normal\";\n if (/^\\d+$/.test(size)) {\n size += \"pt\";\n }\n\n font = [type, size, face].join(\" \");\n }\n\n if (!align) {\n align = \"left\";\n }\n\n promise = this.addUpdate(\n drawText, true, undefined, message, align, font\n );\n\n if (move && (align === \"left\" || align === \"center\")) {\n width = measureText(message, font);\n if (align === \"center\") {\n width = width/2;\n }\n promise = promise.then(function() {\n var state = self.getState();\n return self.translate(state.x, state.y, width, 0, true);\n });\n }\n\n return promise;\n };\n proto.$write.keywordArgs = [\"move\",\"align\",\"font\"];\n proto.$write.minArgs = 1;\n\n proto.$pensize = proto.$width = function(size) {\n if (arguments.length) {\n this._size = size;\n return this.addUpdate(undefined, this._shown, {size : size});\n }\n\n return this._size;\n };\n proto.$pensize.minArgs = proto.$width.minArgs = 0;\n\n proto.$showturtle = proto.$st = function() {\n this._shown = true;\n return this.addUpdate(undefined, true, {shown : true});\n };\n\n proto.$hideturtle = proto.$ht = function() {\n this._shown = false;\n return this.addUpdate(undefined, true, {shown : false});\n };\n\n proto.$isvisible = function() {\n return this._shown;\n };\n\n proto.$shape = function(shape) {\n if (shape && SHAPES[shape]) {\n this._shape = shape;\n return this.addUpdate(undefined, this._shown, {shape : shape});\n }\n\n return this._shape;\n };\n proto.$shape.minArgs = 0;\n\n proto.$window_width = function() {\n return this._screen.$window_width();\n };\n \n proto.$window_height = function() {\n return this._screen.$window_height();\n };\n \n proto.$tracer = function(n, delay) {\n return this._screen.$tracer(n, delay);\n };\n proto.$tracer.minArgs = 0;\n \n proto.$update = function() {\n return this._screen.$update();\n };\n \n proto.$delay = function(delay) {\n return this._screen.$delay(delay);\n };\n proto.$delay.minArgs = 0;\n\n proto.$reset = function() {\n this.reset();\n return this.$clear();\n };\n\n proto.$mainloop = proto.$done = function() {\n return this._screen.$mainloop();\n };\n\n proto.$clear = function() {\n return this.addUpdate(function() {\n clearLayer(this.context());\n }, true);\n };\n proto.$dot.minArgs = 0;\n\n proto.$onclick = function(method,btn,add) {\n this.getManager(\"mousedown\").addHandler(method, add);\n };\n proto.$onclick.minArgs = 1;\n proto.$onclick.keywordArgs = [\"btn\",\"add\"];\n\n proto.$onrelease = function(method,btn,add) {\n this.getManager(\"mouseup\").addHandler(method, add);\n };\n proto.$onrelease.minArgs = 1;\n proto.$onrelease.keywordArgs = [\"btn\",\"add\"];\n\n proto.$ondrag = function(method,btn,add) {\n this.getManager(\"mousemove\").addHandler(method, add);\n };\n proto.$ondrag.minArgs = 1;\n proto.$ondrag.keywordArgs = [\"btn\",\"add\"];\n\n proto.$getscreen = function() {\n return _module.Screen();\n };\n proto.$getscreen.isSk = true;\n\n proto.$getturtle = proto.$getpen = function() {\n return this.skInstance;\n };\n proto.$getturtle.isSk = true;\n })(Turtle.prototype);\n\n function Screen() {\n var w,h;\n this._frames = 1;\n this._delay = undefined;\n this._bgcolor = \"none\";\n this._mode = \"standard\";\n this._managers = {};\n this._keyLogger = {};\n if (_config.height && _config.width) {\n w = _config.width/2;\n h = _config.height/2;\n } else {\n w = _config.defaultSetup.width/2;\n h = _config.defaultSetup.height/2;\n }\n this.setUpWorld(-w,-h,w,h);\n }\n\n (function(proto) {\n proto.spriteLayer = function() {\n return this._sprites || (this._sprites = createLayer(3));\n };\n\n proto.bgLayer = function() {\n return this._background || (this._background = createLayer(1));\n };\n\n proto.hitTestLayer = function() {\n return this._hitTest || (this._hitTest = createLayer(0,true));\n };\n\n proto.getManager = function(type) {\n if (!this._managers[type]) {\n this._managers[type] = new EventManager(type, this);\n }\n return this._managers[type];\n };\n\n proto.reset = function() {\n var key;\n\n this._keyListeners = undefined;\n\n for (key in this._keyLogger) {\n window.clearInterval(this._keyLogger[key]);\n window.clearTimeout(this._keyLogger[key]);\n delete this._keyLogger[key];\n }\n\n if (this._keyDownListener) {\n getTarget().removeEventListener(\"keydown\", this._keyDownListener);\n this._keyDownListener = undefined;\n }\n\n if (this._keyUpListener) {\n getTarget().removeEventListener(\"keyup\", this._keyUpListener);\n this._keyUpListener = undefined;\n }\n\n if (this._timer) {\n window.clearTimeout(this._timer);\n this._timer = undefined;\n }\n\n for(key in this._managers) {\n this._managers[key].reset();\n }\n\n this._mode = \"standard\";\n removeLayer(this._sprites);\n this._sprites = undefined;\n removeLayer(this._background);\n this._background = undefined;\n };\n\n proto.setUpWorld = function(llx, lly, urx, ury) {\n var world = this;\n\n world.llx = llx;\n world.lly = lly;\n world.urx = urx;\n world.ury = ury;\n world.xScale = (urx - llx) / getWidth();\n world.yScale = -1 * (ury - lly) / getHeight();\n world.lineScale = Math.min(Math.abs(world.xScale), Math.abs(world.yScale));\n };\n\n proto.$setup = function(width, height, startX, startY) {\n if (isNaN(parseFloat(width))) {\n width = getWidth();\n }\n if (isNaN(parseFloat(height))) {\n height = getHeight();\n }\n\n if (width <= 1) {\n width = getWidth() * width;\n }\n if (height <= 1) {\n height = getHeight() * height;\n }\n\n this._width = width;\n this._height = height;\n\n this._xOffset = (startX !== undefined && !isNaN(parseInt(startX))) ?\n parseInt(startX) :\n 0;\n\n this._yOffset = (startY !== undefined && !isNaN(parseInt(startY))) ?\n parseInt(startY) :\n 0;\n\n if (this._mode === \"world\") {\n return this._setworldcoordinates(this.llx, this.lly, this.urx, this.ury);\n }\n\n return this._setworldcoordinates(-width/2, -height/2, width/2, height/2);\n };\n proto.$setup.minArgs = 2;\n\n\n proto.$register_shape = proto.$addshape = function(name, points) {\n SHAPES[name] = points;\n };\n\n proto.$getshapes = function() {\n return Object.keys(SHAPES);\n };\n\n proto.$tracer = function(frames, delay) {\n if (frames !== undefined || delay !== undefined) {\n if (typeof delay === \"number\") {\n this._delay = delay;\n getFrameManager().refreshInterval(delay);\n }\n if (typeof frames === \"number\") {\n this._frames = frames;\n return getFrameManager().frameBuffer(frames);\n }\n\n return;\n }\n\n return this._frames;\n };\n proto.$tracer.minArgs = 0;\n\n proto.$delay = function(delay) {\n if (delay !== undefined) {\n return this.$tracer(undefined, delay);\n }\n\n return this._delay === undefined ? OPTIMAL_FRAME_RATE : this._delay;\n };\n\n proto._setworldcoordinates = function(llx, lly, urx, ury) {\n var world = this,\n turtles = getFrameManager().turtles();\n\n this.setUpWorld(llx, lly, urx, ury);\n\n if (this._sprites) {\n applyWorld(this, this._sprites);\n }\n\n if (this._background) {\n applyWorld(this, this._background);\n }\n\n return this.$clear();\n };\n\n proto.$setworldcoordinates = function(llx, lly, urx, ury) {\n this._mode = \"world\";\n return this._setworldcoordinates(llx, lly, urx, ury);\n };\n\n proto.$clear = proto.$clearscreen = function() {\n this.reset();\n return this.$reset();\n };\n\n proto.$update = function() {\n return getFrameManager().update();\n };\n\n proto.$reset = proto.$resetscreen = function() {\n var self = this,\n turtles = getFrameManager().turtles();\n\n return getFrameManager().addFrame(function() {\n applyWorld(self, self._sprites);\n applyWorld(self, self._background);\n for(var i = 0; i < turtles.length; i++) {\n turtles[i].reset();\n applyWorld(self, turtles[i]._paper);\n }\n }, true);\n };\n\n proto.$window_width = function() {\n return getWidth();\n };\n\n proto.$window_height = function() {\n return getHeight();\n };\n proto.$delay.minArgs = 0;\n\n proto.$turtles = function() {\n return getFrameManager().turtles();\n };\n proto.$turtles.returnType = Types.TURTLE_LIST;\n\n proto.$bgcolor = function(color, g, b, a) {\n if (arguments.length) {\n this._bgcolor = createColor(color, g, b, a);\n clearLayer(this.bgLayer(), this._bgcolor);\n return;\n }\n\n return hexToRGB(this._bgcolor);\n };\n proto.$bgcolor.minArgs = 0;\n proto.$bgcolor.returnType = Types.COLOR;\n\n // no-op - just defined for consistency with python version\n proto.$mainloop = proto.$done = function() {\n return undefined;\n };\n\n proto.$bye = function() {\n return Sk.TurtleGraphics.reset();\n };\n\n proto.$exitonclick = function() {\n this._exitOnClick = true;\n return this.getManager(\"mousedown\").addHandler(function() {\n resetTurtle();\n }, false);\n };\n\n proto.$onclick = function(method,btn,add) {\n if (this._exitOnClick) return;\n this.getManager(\"mousedown\").addHandler(method, add);\n };\n proto.$onclick.minArgs = 1;\n proto.$onclick.keywordArgs = [\"btn\",\"add\"];\n\n var KEY_MAP = {\n \"8\" : /^back(space)?$/i,\n \"9\" : /^tab$/i,\n \"13\" : /^(enter|return)$/i,\n \"16\" : /^shift$/i,\n \"17\" : /^(ctrl|control)$/i,\n \"18\" : /^alt$/i,\n \"27\" : /^esc(ape)?$/i,\n \"32\" : /^space$/i,\n \"33\" : /^page[\\s\\-]?up$/i,\n \"34\" : /^page[\\s\\-]?down$/i,\n \"35\" : /^end$/i,\n \"36\" : /^home$/i,\n \"37\" : /^left([\\s\\-]?arrow)?$/i,\n \"38\" : /^up([\\s\\-]?arrow)?$/i,\n \"39\" : /^right([\\s\\-]?arrow)?$/i,\n \"40\" : /^down([\\s\\-]?arrow)?$/i,\n \"45\" : /^insert$/i,\n \"46\" : /^del(ete)?$/i\n };\n\n proto._createKeyRepeater = function(key, code) {\n var self = this;\n // set a timeout for 333ms and if key has not yet been\n // released, fire another event and continue firing\n // at a rate of ~20 times per second until key is released\n self._keyLogger[code] = window.setTimeout(function() {\n // trigger the first repeat after the longer delay\n self._keyListeners[key]();\n // set up the repeat interval with the quick delay\n self._keyLogger[code] = window.setInterval(function() {\n self._keyListeners[key]();\n }, 50);\n }, 333);\n };\n\n proto._createKeyDownListener = function() {\n var self = this;\n\n if (this._keyDownListener) return;\n\n this._keyDownListener = function(e) {\n if (!focusTurtle()) return;\n\n var code = e.charCode || e.keyCode,\n pressed = String.fromCharCode(code).toLowerCase(),\n key, inKeyMap;\n\n if (self._keyLogger[code]) return;\n\n for (key in self._keyListeners) {\n inKeyMap = (key.length > 1 && KEY_MAP[code] && KEY_MAP[code].test(key));\n if (key === pressed || inKeyMap) {\n // trigger the intial keydown handler\n self._keyListeners[key]();\n self._createKeyRepeater(key, code);\n break;\n }\n }\n };\n\n getTarget().addEventListener(\"keydown\", this._keyDownListener);\n };\n\n proto._createKeyUpListener = function() {\n var self = this;\n\n if (this._keyUpListener) return;\n\n this._keyUpListener = function(e) {\n var interval = self._keyLogger[e.charCode || e.keyCode];\n if (interval !== undefined) {\n window.clearInterval(interval);\n window.clearTimeout(interval);\n delete(self._keyLogger[e.charCode || e.keyCode]);\n }\n };\n \n getTarget().addEventListener(\"keyup\", this._keyUpListener);\n };\n\n proto.$listen = function() {\n this._createKeyUpListener();\n this._createKeyDownListener();\n };\n\n proto.$onkey = function(method, keyValue) {\n if (typeof keyValue === \"function\") {\n var temp = method;\n method = keyValue;\n keyValue = temp;\n }\n\n keyValue = String(keyValue).toLowerCase();\n\n if (method && typeof method === \"function\") {\n if (!this._keyListeners) this._keyListeners = {};\n this._keyListeners[keyValue] = method;\n }\n else {\n delete this._keyListeners[keyValue];\n }\n };\n\n proto.$onscreenclick = function(method,btn,add) {\n this.getManager(\"mousedown\").addHandler(method, add);\n };\n proto.$onscreenclick.minArgs = 1;\n proto.$onscreenclick.keywordArgs = [\"btn\",\"add\"];\n\n proto.$ontimer = function(method, interval) {\n if (this._timer) {\n window.clearTimeout(this._timer);\n this._timer = undefined;\n }\n\n if (method && typeof interval === \"number\") {\n this._timer = window.setTimeout(method, Math.max(0, interval|0));\n }\n };\n proto.$ontimer.minArgs = 0;\n\n })(Screen.prototype);\n\n function ensureAnonymous() {\n if (!_anonymousTurtle) {\n _anonymousTurtle = _module.Turtle();\n }\n\n return _anonymousTurtle;\n }\n\n function getTarget() {\n return _target;\n }\n\n function getScreen() {\n if (!_screenInstance) {\n _screenInstance = new Screen();\n }\n return _screenInstance;\n }\n\n function getMouseHandler() {\n if (!_mouseHandler) {\n _mouseHandler = new MouseHandler();\n }\n return _mouseHandler;\n }\n\n function getWidth() {\n return (\n (_screenInstance && _screenInstance._width) ||\n _config.width ||\n getTarget().clientWidth\n ) | 0;\n }\n\n function getHeight() {\n return (\n (_screenInstance && _screenInstance._height) ||\n _config.height ||\n getTarget().clientHeight\n ) | 0;\n }\n\n function createLayer(zIndex, isHidden) {\n var canvas = document.createElement(\"canvas\"),\n width = getWidth(),\n height = getHeight(),\n offset = getTarget().firstChild ? (-height) + \"px\" : \"0\",\n context;\n\n canvas.width = width;\n canvas.height = height;\n canvas.style.position = \"relative\";\n canvas.style.display = \"block\";\n canvas.style.setProperty(\"margin-top\",offset);\n canvas.style.setProperty(\"z-index\", zIndex);\n if (isHidden) {\n canvas.style.display = \"none\";\n }\n\n getTarget().appendChild(canvas);\n\n context = canvas.getContext(\"2d\");\n context.lineCap = \"round\";\n context.lineJoin = \"round\";\n\n applyWorld(getScreen(), context);\n\n return context;\n }\n\n function cancelAnimationFrame() {\n if (_frameRequest) {\n (window.cancelAnimationFrame || window.mozCancelAnimationFrame)(_frameRequest);\n _frameRequest = undefined;\n }\n if (_frameRequestTimeout) {\n window.clearTimeout(_frameRequestTimeout);\n _frameRequestTimeout = undefined;\n }\n }\n\n function applyWorld(world, context) {\n var llx = world.llx,\n lly = world.lly,\n urx = world.urx,\n ury = world.ury,\n xScale = world.xScale,\n yScale = world.yScale;\n\n if (!context) return;\n\n clearLayer(context);\n\n context.restore();\n context.save();\n context.scale(1 / xScale, 1 / yScale);\n if (lly === 0) {\n context.translate(-llx, lly - (ury - lly));\n } else if (lly > 0) {\n context.translate(-llx, -lly * 2);\n } else {\n context.translate(-llx, -ury);\n }\n }\n\n function pushUndo(turtle) {\n var properties, undoState, i;\n\n if (!_config.allowUndo || !turtle._bufferSize) {\n return;\n }\n\n if (!turtle._undoBuffer) {\n turtle._undoBuffer = [];\n }\n\n while(turtle._undoBuffer.length > turtle._bufferSize) {\n turtle._undoBuffer.shift();\n }\n\n undoState = {};\n properties = \"x y angle radians color fill down filling shown shape size\".split(\" \");\n for(i = 0; i < properties.length; i++) {\n undoState[properties[i]] = turtle[\"_\" + properties[i]];\n }\n\n turtle._undoBuffer.push(undoState);\n\n return turtle.addUpdate(function() {\n undoState.fillBuffer = this.fillBuffer ? this.fillBuffer.slice() : undefined;\n if (turtle._paper && turtle._paper.canvas) {\n undoState.image = turtle._paper.canvas.toDataURL();\n }\n }, false);\n }\n\n var undoImage = new Image();\n function popUndo(turtle) {\n var undoState;\n\n if (!turtle._bufferSize || !turtle._undoBuffer) {\n return;\n }\n\n undoState = turtle._undoBuffer.pop();\n\n if (!undoState) {\n return;\n }\n\n for(var key in undoState) {\n if (key === \"image\" || key === \"fillBuffer\") continue;\n turtle[\"_\" + key] = undoState[key];\n }\n\n return turtle.addUpdate(function() {\n var img;\n if (undoState.image) {\n undoImage.src = undoState.image;\n img = undoImage;\n }\n\n clearLayer(this.context(), false, undoImage);\n delete undoState.image;\n }, true, undoState);\n }\n\n function removeLayer(layer) {\n if (layer && layer.canvas && layer.canvas.parentNode) {\n layer.canvas.parentNode.removeChild(layer.canvas);\n }\n }\n\n function clearLayer(context, color, image) {\n if (!context) return;\n\n context.save();\n context.setTransform(1,0,0,1,0,0);\n if (color) {\n context.fillStyle = color;\n context.fillRect(0, 0, context.canvas.width, context.canvas.height);\n }\n else {\n context.clearRect(0, 0, context.canvas.width, context.canvas.height);\n }\n\n if (image) {\n context.drawImage(image, 0, 0);\n }\n\n context.restore();\n }\n\n function drawTurtle(state, context) {\n var shape = SHAPES[state.shape],\n world = getScreen(),\n width = getWidth(),\n height = getHeight(),\n xScale = world.xScale,\n yScale = world.yScale,\n x, y, bearing;\n\n if (!context) return;\n\n x = Math.cos(state.radians) / xScale;\n y = Math.sin(state.radians) / yScale;\n bearing = Math.atan2(y, x) - Math.PI/2;\n\n context.save();\n context.translate(state.x, state.y);\n context.scale(xScale,yScale);\n context.rotate(bearing);\n context.beginPath();\n context.lineWidth = 1;\n context.strokeStyle = state.color;\n context.fillStyle = state.fill;\n context.moveTo(shape[0][0], shape[0][1]);\n for(var i = 1; i < shape.length; i++) {\n context.lineTo(shape[i][0], shape[i][1]);\n }\n context.closePath();\n context.fill();\n context.stroke();\n context.restore();\n }\n\n function drawDot(size, color) {\n var context = this.context(),\n screen = getScreen(),\n xScale = screen.xScale,\n yScale = screen.yScale;\n\n if (!context) return;\n context.beginPath();\n context.moveTo(this.x, this.y);\n size = size * Math.min(Math.abs(xScale),Math.abs(yScale));\n context.arc(this.x, this.y, size, 0, Turtle.RADIANS);\n context.closePath();\n context.fillStyle = color || this.color;\n context.fill();\n }\n\n var textMeasuringContext = document.createElement(\"canvas\").getContext(\"2d\");\n function measureText(message, font) {\n if (font) {\n textMeasuringContext.font = font;\n }\n return textMeasuringContext.measureText(message).width;\n }\n\n function drawText(message, align, font) {\n var context = this.context();\n\n if (!context) return;\n\n context.save();\n if (font) {\n context.font = font;\n }\n if (align && align.match(/^(left|right|center)$/)) {\n context.textAlign = align;\n }\n\n context.scale(1,-1);\n context.fillStyle = this.fill;\n context.fillText(message, this.x, -this.y);\n context.restore();\n }\n\n function drawLine(loc, beginPath, endPath) {\n // TODO: make steps in path use square ends of lines\n // and open and close path at the right times.\n // See if we can minimize calls to stroke\n var context = this.context();\n\n if (!context) return;\n\n if (beginPath) {\n context.beginPath();\n context.moveTo(this.x, this.y);\n }\n\n context.lineWidth = this.size * getScreen().lineScale;\n context.strokeStyle = this.color;\n context.lineTo(loc.x, loc.y);\n context.stroke();\n }\n\n function drawFill() {\n var context = this.context(),\n path = this.fillBuffer,\n i;\n\n if (!context || !path || !path.length) return;\n\n context.save();\n context.beginPath();\n context.moveTo(path[0].x,path[0].y);\n for(i = 1; i < path.length; i++) {\n context.lineTo(path[i].x, path[i].y);\n }\n context.closePath();\n context.fillStyle = this.fill;\n context.fill();\n for(i = 1; i < path.length; i++) {\n if (!path[i].stroke) {\n continue;\n }\n\n context.beginPath();\n context.moveTo(path[i-1].x, path[i-1].y);\n context.lineWidth = path[i].size * getScreen().lineScale;\n context.strokeStyle = path[i].color;\n context.lineTo(path[i].x, path[i].y);\n context.stroke();\n }\n context.restore();\n }\n\n function partialTranslate(turtle, x, y, beginPath, countAsFrame) {\n return function() {\n return turtle.addUpdate(\n function(loc) {\n if (this.down) {\n drawLine.call(this, loc, beginPath);\n }\n },\n countAsFrame,\n {x : x, y : y},\n beginPath\n );\n };\n }\n\n function translate(turtle, startX, startY, dx, dy, beginPath, isCircle) {\n // speed is in pixels per ms\n var speed = turtle._computed_speed,\n screen = getScreen(),\n xScale = Math.abs(screen.xScale),\n yScale = Math.abs(screen.yScale),\n x = startX,\n y = startY,\n pixels = Math.sqrt(dx * dx * xScale + dy * dy * yScale),\n // TODO: allow fractional frame updates?\n frames = speed ? Math.round(Math.max(1, pixels / speed)) : 1,\n xStep = dx / frames,\n yStep = dy / frames,\n promise = getFrameManager().willRenderNext() ?\n Promise.resolve() :\n new InstantPromise(),\n countAsFrame = (!speed && isCircle) ? false : true,\n i;\n\n turtle.addUpdate(function() {\n if (this.filling) {\n this.fillBuffer.push({\n x : this.x,\n y : this.y,\n stroke : this.down,\n color : this.color,\n size : this.size\n });\n }\n }, false);\n\n for(i = 0; i < frames; i++) {\n x = startX + xStep * (i+1);\n y = startY + yStep * (i+1);\n promise = promise.then(\n partialTranslate(turtle, x, y, beginPath, countAsFrame)\n );\n beginPath = false;\n }\n\n return promise.then(function() {\n return [startX + dx, startY + dy];\n });\n }\n\n function partialRotate(turtle, angle, radians, countAsFrame) {\n return function() {\n return turtle.addUpdate(undefined, countAsFrame, {angle:angle, radians:radians});\n };\n }\n\n function rotate(turtle, startAngle, delta, isCircle) {\n var speed = turtle._computed_speed,\n degrees = delta / turtle._fullCircle * 360,\n frames = speed ? Math.round(Math.max(1, Math.abs(degrees) / speed)) : 1,\n dAngle = delta / frames,\n heading = {},\n countAsFrame = (!speed && isCircle) ? false : true,\n promise = getFrameManager().willRenderNext() ?\n Promise.resolve() :\n new InstantPromise(),\n i;\n\n // TODO: request how many frames are remaining and only queue up\n // a single rotation per screen update\n\n for(i = 0; i < frames; i++) {\n calculateHeading(turtle, startAngle + dAngle * (i+1), heading);\n promise = promise.then(\n partialRotate(turtle, heading.angle, heading.radians, countAsFrame)\n );\n }\n\n return promise.then(function() {\n return calculateHeading(turtle, startAngle + delta);\n });\n }\n\n function getCoordinates(x, y) {\n if (y === undefined) {\n y = (x && (x.y || x._y || x[1])) || 0;\n x = (x && (x.x || x._x || x[0])) || 0;\n }\n return {x:x, y:y};\n }\n\n // Modified solution of Tim Down's version from stackoverflow\n // http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb\n function hexToRGB(hex) {\n var rgbForm, hexForm, result;\n\n if (rgbForm = /^rgba?\\((\\d+),(\\d+),(\\d+)(?:,([.\\d]+))?\\)$/.exec(hex)) {\n result = [\n parseInt(rgbForm[1]),\n parseInt(rgbForm[2]),\n parseInt(rgbForm[3])\n ];\n if (rgbForm[4]) {\n result.push(parseFloat(rgbForm[4]));\n }\n }\n else if (/^#?[a-f\\d]{3}|[a-f\\d]{6}$/i.exec(hex)) {\n if (hex.length === 4) {\n // Expand shorthand form (e.g. \"03F\") to full form (e.g. \"0033FF\")\n hex = hex.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i, function(m, r, g, b) {\n return r + r + g + g + b + b;\n });\n }\n\n hexForm = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n result = [\n parseInt(hexForm[1], 16),\n parseInt(hexForm[2], 16),\n parseInt(hexForm[3], 16)\n ];\n }\n else {\n result = hex;\n }\n\n return result;\n }\n\n function createColor(color, g, b, a) {\n var i;\n\n if (g !== undefined) {\n color = [color, g, b, a];\n }\n\n if (color.constructor === Array && color.length) {\n for(i = 0; i < 3; i++) {\n color[i] = (typeof color[i] === \"number\") ?\n Math.max(0, Math.min(255, parseInt(color[i]))) :\n 0;\n }\n if (typeof color[i] === \"number\") {\n color[3] = Math.max(0, Math.min(1, color[i]));\n color = \"rgba(\" + color.join(\",\") + \")\";\n }\n else {\n color = \"rgb(\" + color.slice(0,3).join(\",\") + \")\";\n }\n }\n else if (typeof color === \"string\" && !color.match(/\\s*url\\s*\\(/i)) {\n color = color.replace(/\\s+/g, \"\");\n }\n else {\n return \"black\";\n }\n\n return color;\n }\n\n function calculateHeading(turtle, value, heading) {\n var angle = turtle._angle || 0,\n radians = turtle._radians || 0;\n\n heading || (heading = {});\n\n if (typeof value === \"number\") {\n if (turtle._isRadians) {\n angle = radians = value % Turtle.RADIANS;\n }\n else if (turtle._fullCircle) {\n angle = (value % turtle._fullCircle);\n radians = angle / turtle._fullCircle * Turtle.RADIANS;\n }\n else {\n angle = radians = 0;\n }\n\n if (angle < 0) {\n angle += turtle._fullCircle;\n radians += Turtle.RADIANS;\n }\n }\n\n heading.angle = angle;\n heading.radians = radians;\n\n return heading;\n }\n\n function pythonToJavascriptFunction(pyValue, scope) {\n return function() {\n var argsJs = Array.prototype.slice.call(arguments),\n argsPy = argsJs.map(\n function(argJs) {return Sk.ffi.remapToPy(argJs);}\n );\n\n if (typeof(scope) !== \"undefined\") {\n argsPy.unshift(scope);\n }\n return Sk.misceval.applyAsync(\n undefined, pyValue, undefined, undefined, undefined, argsPy\n );\n };\n }\n\n function addModuleMethod(klass, module, method, scopeGenerator) {\n var publicMethodName = method.replace(/^\\$/, \"\"),\n displayName = publicMethodName.replace(/_\\$[a-z]+\\$$/i, \"\"),\n maxArgs = klass.prototype[method].length,\n minArgs = klass.prototype[method].minArgs,\n keywordArgs = klass.prototype[method].keywordArgs,\n returnType = klass.prototype[method].returnType,\n isSk = klass.prototype[method].isSk,\n wrapperFn;\n\n if (minArgs === undefined) {\n minArgs = maxArgs;\n }\n\n wrapperFn = function() {\n var args = Array.prototype.slice.call(arguments, 0),\n instance = scopeGenerator ? scopeGenerator() : args.shift().instance,\n i, result, susp, resolution, lengthError;\n\n if (args < minArgs || args.length > maxArgs) {\n lengthError = minArgs === maxArgs ?\n \"exactly \" + maxArgs :\n \"between \" + minArgs + \" and \" + maxArgs;\n\n throw new Sk.builtin.TypeError(displayName + \"() takes \" + lengthError + \" positional argument(s) (\" + args.length + \" given)\");\n }\n\n for (i = args.length; --i >= 0;) {\n if (args[i] !== undefined) {\n if (args[i] instanceof Sk.builtin.func) {\n args[i] = pythonToJavascriptFunction(args[i]);\n }\n else if (args[i] instanceof Sk.builtin.method) {\n args[i] = pythonToJavascriptFunction(args[i].im_func, args[i].im_self);\n }\n else if (args[i] && args[i].$d instanceof Sk.builtin.dict && args[i].instance) {\n args[i] = args[i].instance;\n }\n else {\n args[i] = Sk.ffi.remapToJs(args[i]);\n }\n }\n }\n\n try {\n result = instance[method].apply(instance, args);\n } catch(e) {\n if (window && window.console) {\n window.console.log(\"wrapped method failed\");\n window.console.log(e.stack);\n }\n throw e;\n }\n\n if (result instanceof InstantPromise) {\n result = result.lastResult;\n }\n\n if (result instanceof Promise) {\n result = result.catch(function(e) {\n if (window && window.console) {\n window.console.log(\"promise failed\");\n window.console.log(e.stack);\n }\n throw e;\n });\n\n susp = new Sk.misceval.Suspension();\n\n susp.resume = function() {\n return (resolution === undefined) ?\n Sk.builtin.none.none$ :\n Sk.ffi.remapToPy(resolution);\n };\n\n susp.data = {\n type: \"Sk.promise\",\n promise: result.then(function(value) {\n resolution = value;\n return value;\n })\n };\n\n return susp;\n }\n else {\n if (result === undefined) return Sk.builtin.none.none$;\n if (isSk) return result;\n if (typeof returnType === \"function\") {\n return returnType(result);\n }\n\n return Sk.ffi.remapToPy(result);\n }\n };\n\n if (keywordArgs) {\n wrapperFn.co_varnames = keywordArgs.slice();\n // make room for required arguments\n for(var i = 0; i < minArgs; i++) {\n wrapperFn.co_varnames.unshift(\"\");\n }\n if (!scopeGenerator) {\n // make room for the \"self\" argument\n wrapperFn.co_varnames.unshift(\"\");\n }\n }\n\n module[publicMethodName] = new Sk.builtin.func(wrapperFn);\n }\n\n function TurtleWrapper($gbl, $loc) {\n $loc.__init__ = new Sk.builtin.func(function (self) {\n self.instance = new Turtle();\n self.instance.skInstance = self;\n });\n\n for(var key in Turtle.prototype) {\n if (/^\\$[a-z_]+/.test(key)) {\n addModuleMethod(Turtle, $loc, key);\n }\n }\n }\n\n function ScreenWrapper($gbl, $loc) {\n $loc.__init__ = new Sk.builtin.func(function (self) {\n self.instance = getScreen();\n });\n\n for(var key in Screen.prototype) {\n if (/^\\$[a-z_]+/.test(key)) {\n addModuleMethod(Screen, $loc, key);\n }\n }\n }\n\n for(var key in Turtle.prototype) {\n if (/^\\$[a-z_]+/.test(key)) {\n addModuleMethod(Turtle, _module, key, ensureAnonymous);\n }\n }\n\n // add Screen method aliases to the main turtle module\n // to allow things like:\n // import turtle\n // turtle.mainloop()\n addModuleMethod(Screen, _module, \"$mainloop\", getScreen);\n addModuleMethod(Screen, _module, \"$done\", getScreen);\n addModuleMethod(Screen, _module, \"$bye\", getScreen);\n addModuleMethod(Screen, _module, \"$tracer\", getScreen);\n addModuleMethod(Screen, _module, \"$update\", getScreen);\n addModuleMethod(Screen, _module, \"$delay\", getScreen);\n addModuleMethod(Screen, _module, \"$window_width\", getScreen);\n addModuleMethod(Screen, _module, \"$window_height\", getScreen);\n\n _module.Turtle = Sk.misceval.buildClass(_module, TurtleWrapper, \"Turtle\", []);\n _module.Screen = Sk.misceval.buildClass(_module, ScreenWrapper, \"Screen\", []);\n\n // Calling focus(false) will block turtle key/mouse events\n // until focus(true) is called again or until the turtle DOM target\n // is clicked/tabbed into.\n function focusTurtle(value) {\n if (value !== undefined) {\n _focus = !!value;\n if (_focus) {\n getTarget().focus();\n }\n else {\n getTarget().blur();\n }\n }\n\n return _focus;\n }\n\n function resetTurtle() {\n cancelAnimationFrame();\n getScreen().reset();\n getFrameManager().reset();\n\n while (_target.firstChild) {\n _target.removeChild(_target.firstChild);\n }\n\n if (_mouseHandler) {\n _mouseHandler.reset();\n }\n\n _durationSinceRedraw = 0;\n _screenInstance = undefined;\n _anonymousTurtle = undefined;\n _mouseHandler = undefined;\n TURTLE_COUNT = 0;\n }\n\n return {\n skModule : _module,\n reset : resetTurtle,\n focus : focusTurtle,\n Turtle : Turtle,\n Screen : Screen\n };\n}\n\n// See if the TurtleGraphics module has already been loaded\n// for the currently configured DOM target element.\nvar currentTarget = getConfiguredTarget();\n\nif (!currentTarget.turtleInstance) {\n currentTarget.turtleInstance = generateTurtleModule(currentTarget);\n}\nelse {\n currentTarget.turtleInstance.reset();\n}\n\nSk.TurtleGraphics.module = currentTarget.turtleInstance.skModule;\nSk.TurtleGraphics.reset = currentTarget.turtleInstance.reset;\nSk.TurtleGraphics.focus = currentTarget.turtleInstance.focus;\nSk.TurtleGraphics.raw = {\n Turtle : currentTarget.turtleInstance.Turtle,\n Screen : currentTarget.turtleInstance.Screen\n};\n\nreturn currentTarget.turtleInstance.skModule;\n\n};\n", "src/lib/ctypes/macholib/__init__.py": "raise NotImplementedError(\"macholib is not yet implemented in Skulpt\")\n", "src/lib/linecache.py": "raise NotImplementedError(\"linecache is not yet implemented in Skulpt\")\n", "src/lib/math.js": "var $builtinmodule = function (name) {\n var mod = {};\n mod.pi = Sk.builtin.assk$(Math.PI, Sk.builtin.nmber.float$);\n mod.e = Sk.builtin.assk$(Math.E, Sk.builtin.nmber.float$);\n\n mod.fabs = new Sk.builtin.func(function (x) {\n Sk.builtin.pyCheckArgs(\"fabs\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"x\", \"number\", Sk.builtin.checkNumber(x));\n\n return new Sk.builtin.nmber(Math.abs(Sk.builtin.asnum$(x)), Sk.builtin.nmber.float$);\n });\n\n mod.asin = new Sk.builtin.func(function (rad) {\n Sk.builtin.pyCheckArgs(\"asin\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"rad\", \"number\", Sk.builtin.checkNumber(rad));\n\n return new Sk.builtin.nmber(Math.asin(Sk.builtin.asnum$(rad)), Sk.builtin.nmber.float$);\n });\n\n mod.acos = new Sk.builtin.func(function (rad) {\n Sk.builtin.pyCheckArgs(\"acos\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"rad\", \"number\", Sk.builtin.checkNumber(rad));\n\n return new Sk.builtin.nmber(Math.acos(Sk.builtin.asnum$(rad)), Sk.builtin.nmber.float$);\n });\n\n mod.atan = new Sk.builtin.func(function (rad) {\n Sk.builtin.pyCheckArgs(\"atan\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"rad\", \"number\", Sk.builtin.checkNumber(rad));\n\n return new Sk.builtin.nmber(Math.atan(Sk.builtin.asnum$(rad)), Sk.builtin.nmber.float$);\n });\n\n mod.atan2 = new Sk.builtin.func(function (y, x) {\n Sk.builtin.pyCheckArgs(\"atan2\", arguments, 2, 2);\n Sk.builtin.pyCheckType(\"y\", \"number\", Sk.builtin.checkNumber(y));\n Sk.builtin.pyCheckType(\"x\", \"number\", Sk.builtin.checkNumber(x));\n\n return new Sk.builtin.nmber(Math.atan2(Sk.builtin.asnum$(y), Sk.builtin.asnum$(x)), Sk.builtin.nmber.float$);\n });\n\n mod.sin = new Sk.builtin.func(function (rad) {\n Sk.builtin.pyCheckArgs(\"sin\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"rad\", \"number\", Sk.builtin.checkNumber(rad));\n\n return new Sk.builtin.nmber(Math.sin(Sk.builtin.asnum$(rad)), Sk.builtin.nmber.float$);\n });\n\n mod.cos = new Sk.builtin.func(function (rad) {\n Sk.builtin.pyCheckArgs(\"cos\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"rad\", \"number\", Sk.builtin.checkNumber(rad));\n\n return new Sk.builtin.nmber(Math.cos(Sk.builtin.asnum$(rad)), Sk.builtin.nmber.float$);\n });\n\n mod.tan = new Sk.builtin.func(function (rad) {\n Sk.builtin.pyCheckArgs(\"tan\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"rad\", \"number\", Sk.builtin.checkNumber(rad));\n\n return new Sk.builtin.nmber(Math.tan(Sk.builtin.asnum$(rad)), Sk.builtin.nmber.float$);\n });\n\n mod.asinh = new Sk.builtin.func(function (x) {\n Sk.builtin.pyCheckArgs(\"asinh\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"x\", \"number\", Sk.builtin.checkNumber(x));\n\n x = Sk.builtin.asnum$(x);\n\n var L = x + Math.sqrt(x * x + 1);\n\n return new Sk.builtin.nmber(Math.log(L), Sk.builtin.nmber.float$);\n });\n\n mod.acosh = new Sk.builtin.func(function (x) {\n Sk.builtin.pyCheckArgs(\"acosh\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"x\", \"number\", Sk.builtin.checkNumber(x));\n\n x = Sk.builtin.asnum$(x);\n\n var L = x + Math.sqrt(x * x - 1);\n\n return new Sk.builtin.nmber(Math.log(L), Sk.builtin.nmber.float$);\n });\n\n mod.atanh = new Sk.builtin.func(function (x) {\n Sk.builtin.pyCheckArgs(\"atanh\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"x\", \"number\", Sk.builtin.checkNumber(x));\n\n x = Sk.builtin.asnum$(x);\n\n var L = (1 + x) / (1 - x);\n\n return new Sk.builtin.nmber(Math.log(L) / 2, Sk.builtin.nmber.float$);\n });\n\n mod.sinh = new Sk.builtin.func(function (x) {\n Sk.builtin.pyCheckArgs(\"sinh\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"x\", \"number\", Sk.builtin.checkNumber(x));\n\n x = Sk.builtin.asnum$(x);\n\n var e = Math.E;\n var p = Math.pow(e, x);\n var n = 1 / p;\n var result = (p - n) / 2;\n\n return new Sk.builtin.nmber(result, Sk.builtin.nmber.float$);\n });\n\n mod.cosh = new Sk.builtin.func(function (x) {\n Sk.builtin.pyCheckArgs(\"cosh\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"x\", \"number\", Sk.builtin.checkNumber(x));\n\n x = Sk.builtin.asnum$(x);\n\n var e = Math.E;\n var p = Math.pow(e, x);\n var n = 1 / p;\n var result = (p + n) / 2;\n\n return new Sk.builtin.nmber(result, Sk.builtin.nmber.float$);\n });\n\n mod.tanh = new Sk.builtin.func(function (x) {\n Sk.builtin.pyCheckArgs(\"tanh\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"x\", \"number\", Sk.builtin.checkNumber(x));\n\n x = Sk.builtin.asnum$(x);\n\n var e = Math.E;\n var p = Math.pow(e, x);\n var n = 1 / p;\n var result = ((p - n) / 2) / ((p + n) / 2);\n\n return new Sk.builtin.nmber(result, Sk.builtin.nmber.float$);\n });\n\n mod.ceil = new Sk.builtin.func(function (x) {\n Sk.builtin.pyCheckArgs(\"ceil\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"x\", \"number\", Sk.builtin.checkNumber(x));\n\n return new Sk.builtin.nmber(Math.ceil(Sk.builtin.asnum$(x)), Sk.builtin.nmber.float$);\n });\n\n // returns y with the sign of x\n mod.copysign = new Sk.builtin.func(function (x, y) {\n Sk.builtin.pyCheckArgs(\"ceil\", arguments, 2, 2);\n Sk.builtin.pyCheckType(\"x\", \"number\", Sk.builtin.checkNumber(x));\n Sk.builtin.pyCheckType(\"y\", \"number\", Sk.builtin.checkNumber(y));\n\n var _x = Sk.ffi.remapToJs(x);\n var _y = Sk.ffi.remapToJs(y);\n var res;\n\n var isNeg_x = _x < 0;\n var isNeg_y = _x < 0;\n\n // special case for floats with negative zero\n if(Sk.builtin.checkFloat(x)) {\n if(_x === 0) {\n isNeg_x = 1/_x === -Infinity ? true : false;\n }\n }\n\n if(Sk.builtin.checkFloat(y)) {\n if(_y === 0) {\n isNeg_y = 1/_y === -Infinity ? true : false;\n }\n }\n\n // if both signs are equal, just return _y\n if((isNeg_x && isNeg_y) || (!isNeg_x && !isNeg_y)) {\n res = _y;\n } else if((isNeg_x && !isNeg_y) || (!isNeg_x && isNeg_y)) {\n // if different, invert sign\n if(y === 0) {\n // special case for zero\n res = isNeg_x ? -0.0 : 0.0;\n } else {\n res = _y * -1;\n }\n }\n\n return new Sk.builtin.nmber(res, Sk.builtin.nmber.float$);\n });\n\n mod.floor = new Sk.builtin.func(function (x) {\n Sk.builtin.pyCheckArgs(\"floor\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"x\", \"number\", Sk.builtin.checkNumber(x));\n\n return new Sk.builtin.nmber(Math.floor(Sk.builtin.asnum$(x)), Sk.builtin.nmber.float$);\n });\n\n mod.sqrt = new Sk.builtin.func(function (x) {\n Sk.builtin.pyCheckArgs(\"sqrt\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"x\", \"number\", Sk.builtin.checkNumber(x));\n\n return new Sk.builtin.nmber(Math.sqrt(Sk.builtin.asnum$(x)), Sk.builtin.nmber.float$);\n });\n\n mod.trunc = new Sk.builtin.func(function (x) {\n Sk.builtin.pyCheckArgs(\"trunc\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"x\", \"number\", Sk.builtin.checkNumber(x));\n\n return new Sk.builtin.nmber(Sk.builtin.asnum$(x) | 0, Sk.builtin.nmber.int$);\n });\n\n mod.log = new Sk.builtin.func(function (x, base) {\n Sk.builtin.pyCheckArgs(\"log\", arguments, 1, 2);\n Sk.builtin.pyCheckType(\"x\", \"number\", Sk.builtin.checkNumber(x));\n\n if (base === undefined) {\n return new Sk.builtin.nmber(Math.log(Sk.builtin.asnum$(x)), Sk.builtin.nmber.float$);\n } else {\n Sk.builtin.pyCheckType(\"base\", \"number\", Sk.builtin.checkNumber(base));\n var ret = Math.log(Sk.builtin.asnum$(x)) / Math.log(Sk.builtin.asnum$(base));\n return new Sk.builtin.nmber(ret, Sk.builtin.nmber.float$);\n }\n });\n\n mod.log10 = new Sk.builtin.func(function (x) {\n Sk.builtin.pyCheckArgs(\"log10\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"x\", \"number\", Sk.builtin.checkNumber(x));\n\n var ret = Math.log(Sk.builtin.asnum$(x)) / Math.log(10);\n return new Sk.builtin.nmber(ret, Sk.builtin.nmber.float$);\n });\n\n /* Return True if x is a NaN (not a number), and False otherwise. */\n mod.isnan = new Sk.builtin.func(function(x) {\n Sk.builtin.pyCheckArgs(\"isnan\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"x\", \"float\", Sk.builtin.checkFloat(x));\n\n var _x = Sk.builtin.asnum$(x);\n if(isNaN(_x)) {\n return Sk.builtin.bool.true$;\n } else {\n return Sk.builtin.bool.false$;\n }\n });\n\n mod.exp = new Sk.builtin.func(function (x) {\n Sk.builtin.pyCheckArgs(\"exp\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"x\", \"number\", Sk.builtin.checkNumber(x));\n\n return new Sk.builtin.nmber(Math.exp(Sk.builtin.asnum$(x)), Sk.builtin.nmber.float$);\n });\n\n mod.pow = new Sk.builtin.func(function (x, y) {\n Sk.builtin.pyCheckArgs(\"pow\", arguments, 2, 2);\n Sk.builtin.pyCheckType(\"x\", \"number\", Sk.builtin.checkNumber(x));\n Sk.builtin.pyCheckType(\"y\", \"number\", Sk.builtin.checkNumber(y));\n\n return new Sk.builtin.nmber(Math.pow(Sk.builtin.asnum$(x), Sk.builtin.asnum$(y)), Sk.builtin.nmber.float$);\n });\n\n mod.radians = new Sk.builtin.func(function (deg) {\n Sk.builtin.pyCheckArgs(\"radians\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"deg\", \"number\", Sk.builtin.checkNumber(deg));\n\n var ret = Math.PI / 180.0 * Sk.builtin.asnum$(deg);\n return new Sk.builtin.nmber(ret, Sk.builtin.nmber.float$);\n });\n\n mod.degrees = new Sk.builtin.func(function (rad) {\n Sk.builtin.pyCheckArgs(\"degrees\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"rad\", \"number\", Sk.builtin.checkNumber(rad));\n\n var ret = 180.0 / Math.PI * Sk.builtin.asnum$(rad);\n return new Sk.builtin.nmber(ret, Sk.builtin.nmber.float$);\n });\n\n mod.hypot = new Sk.builtin.func(function (x, y) {\n Sk.builtin.pyCheckArgs(\"hypot\", arguments, 2, 2);\n Sk.builtin.pyCheckType(\"x\", \"number\", Sk.builtin.checkNumber(x));\n Sk.builtin.pyCheckType(\"y\", \"number\", Sk.builtin.checkNumber(y));\n\n x = Sk.builtin.asnum$(x);\n y = Sk.builtin.asnum$(y);\n return new Sk.builtin.nmber(Math.sqrt((x * x) + (y * y)), Sk.builtin.nmber.float$);\n });\n\n mod.factorial = new Sk.builtin.func(function (x) {\n Sk.builtin.pyCheckArgs(\"factorial\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"x\", \"number\", Sk.builtin.checkNumber(x));\n\n x = Math.floor(Sk.builtin.asnum$(x));\n var r = 1;\n for (var i = 2; i <= x; i++) {\n r *= i;\n }\n return new Sk.builtin.nmber(r, Sk.builtin.nmber.int$);\n });\n\n return mod;\n}", "src/lib/smtplib.py": "raise NotImplementedError(\"smtplib is not yet implemented in Skulpt\")\n", "src/lib/cmd.py": "raise NotImplementedError(\"cmd is not yet implemented in Skulpt\")\n", "src/lib/filecmp.py": "raise NotImplementedError(\"filecmp is not yet implemented in Skulpt\")\n", "src/lib/lib2to3/fixes/__init__.py": "raise NotImplementedError(\"fixes is not yet implemented in Skulpt\")\n", "src/builtin/sys.js": "var $builtinmodule = function (name) {\n var i;\n var sys = {};\n\n var args = [];\n var argv = Sk.getSysArgv();\n for (i = 0; i < argv.length; ++i) {\n args.push(new Sk.builtin.str(argv[i]));\n }\n sys.argv = new Sk.builtins[\"list\"](args);\n\n sys.copyright = Sk.builtin[\"str\"](\"Copyright 2009-2010 Scott Graham.\\nAll Rights Reserved.\\n\");\n\n sys.maxint = Sk.builtin.assk$(Math.pow(2,53)-1, Sk.builtin.nmber.int$);\n\n /* The largest positive integer supported by the platform\u2019s Py_ssize_t type,\n * and thus the maximum size lists, strings, dicts, and many other containers can have.\n *\n * In skulpt this is the same as maxint, due to the underlying implementation in javascript\n */\n sys.maxsize = Sk.builtin.assk$(Math.pow(2,53)-1, Sk.builtin.nmber.int$);\n\n sys.modules = Sk.sysmodules;\n\n sys.path = Sk.realsyspath;\n\n sys.getExecutionLimit = new Sk.builtin.func(function () {\n if (Sk.execLimit === null) {\n return Sk.builtin.none.none$;\n }\n return Sk.builtin.assk$(Sk.execLimit, Sk.builtin.nmber.int$);\n });\n\n sys.setExecutionLimit = new Sk.builtin.func(function (t) {\n if (Sk.execLimit === null) {\n throw new Sk.builtin.NotImplementedError(\"Execution limiting is not enabled\");\n }\n if (t !== undefined) {\n Sk.execLimit = Sk.builtin.asnum$(t);\n }\n });\n\n sys.resetTimeout = new Sk.builtin.func(function () {\n Sk.execStart = new Date();\n });\n\n sys.getYieldLimit = new Sk.builtin.func(function () {\n if (Sk.yieldLimit === null) {\n return Sk.builtin.none.none$;\n }\n return Sk.builtin.assk$(Sk.yieldLimit, Sk.builtin.nmber.int$);\n });\n\n sys.setYieldLimit = new Sk.builtin.func(function (t) {\n if (Sk.yieldLimit === null) {\n throw new Sk.builtin.NotImplementedError(\"Yielding is not enabled\");\n }\n if (t !== undefined) {\n Sk.yieldLimit = Sk.builtin.asnum$(t);\n }\n });\n\n sys.debug = new Sk.builtin.func(function () {\n debugger;\n });\n\n return sys;\n};\n", "src/lib/functools.py": "raise NotImplementedError(\"functools is not yet implemented in Skulpt\")\n", "src/lib/markupbase.py": "raise NotImplementedError(\"markupbase is not yet implemented in Skulpt\")\n", "src/lib/shelve.py": "raise NotImplementedError(\"shelve is not yet implemented in Skulpt\")\n", "src/lib/xmllib.py": "raise NotImplementedError(\"xmllib is not yet implemented in Skulpt\")\n", "src/lib/string.js": "/*\n * __author__: Isaac Dontje Lindell (i@isaacdontjelindell.com)\n *\n * Implementation of the Python string module.\n */\n\n\nvar $builtinmodule = function (name) {\n var mod = {};\n\n mod.ascii_lowercase = Sk.builtin.str('abcdefghijklmnopqrstuvwxyz');\n mod.ascii_uppercase = Sk.builtin.str('ABCDEFGHIJKLMNOPQRSTUVWXYZ');\n mod.ascii_letters = Sk.builtin.str(mod.ascii_lowercase.v + mod.ascii_uppercase.v);\n\n mod.lowercase = Sk.builtin.str('abcdefghijklmnopqrstuvwxyz');\n mod.uppercase = Sk.builtin.str('ABCDEFGHIJKLMNOPQRSTUVWXYZ');\n mod.letters = Sk.builtin.str(mod.lowercase.v + mod.uppercase.v);\n\n mod.digits = Sk.builtin.str('0123456789', Sk.builtin.str);\n mod.hexdigits = Sk.builtin.str('0123456789abcdefABCDEF');\n mod.octdigits = Sk.builtin.str('01234567');\n\n mod.punctuation = Sk.builtin.str('!\"#$%&\\'()*+,-./:;<=>?@[\\\\]^_`{|}~');\n mod.whitespace = Sk.builtin.str('\\t\\n\\x0b\\x0c\\r ');\n\n /* Note: The docs for string.printable say that it's the concatenation of string.digits,\n * string.letters, string.punctuation, and string.whitespace. The CPython interpreter\n * outputs the whitespace characters in one order when string.whitespace is used, and a\n * slightly different order when string.printable is used. I've elected to follow the\n * behavior of CPython here rather than the spec. */\n mod.printable = Sk.builtin.str(mod.digits.v + mod.letters.v + mod.punctuation.v + \" \\t\\n\\r\\x0b\\x0c\");\n\n\n mod.split = new Sk.builtin.func(function (s, sep, maxsplit) {\n return Sk.misceval.callsim(Sk.builtin.str.prototype['split'], s, sep, maxsplit);\n });\n\n /* Return a copy of word with only its first character capitalized. */\n mod.capitalize = new Sk.builtin.func(function (word) {\n return Sk.misceval.callsim(Sk.builtin.str.prototype['capitalize'], word);\n });\n\n /* Concatenate a list or tuple of words with intervening occurrences\n * of sep. The default value for sep is a single space character. */\n mod.join = new Sk.builtin.func(function (words, sep) {\n if (sep === undefined) {\n sep = Sk.builtin.str(' ');\n }\n return Sk.misceval.callsim(Sk.builtin.str.prototype['join'], sep, words);\n });\n\n\n /* Split the argument into words using split(), capitalize each word\n * using capitalize(), and join the capitalized words using join().\n * Note that this replaces runs of whitespace characters by a single\n * space, and removes leading and trailing whitespace. */\n mod.capwords = new Sk.builtin.func(function (s, sep) {\n Sk.builtin.pyCheckArgs('capwords', arguments, 1, 2);\n if (!Sk.builtin.checkString(s)) {\n throw new Sk.builtin.TypeError(\"s must be a string\");\n }\n if (sep === undefined) {\n sep = Sk.builtin.str(' ');\n }\n if (!Sk.builtin.checkString(sep)) {\n throw new Sk.builtin.TypeError(\"sep must be a string\");\n }\n\n var words = Sk.misceval.callsim(mod.split, s, sep);\n var capWords = [];\n for (var i = 0; i < words.v.length; i++) {\n var word = Sk.builtin.list.prototype['list_subscript_'].call(words, i);\n var cap = Sk.misceval.callsim(mod.capitalize, word);\n capWords.push(cap);\n }\n\n return Sk.misceval.callsim(mod.join, new Sk.builtin.list(capWords), sep);\n });\n\n\n return mod;\n};\n", "src/lib/ConfigParser.py": "raise NotImplementedError(\"ConfigParser is not yet implemented in Skulpt\")\n", "src/lib/pickle.py": "raise NotImplementedError(\"pickle is not yet implemented in Skulpt\")\n", "src/lib/MimeWriter.py": "raise NotImplementedError(\"MimeWriter is not yet implemented in Skulpt\")\n", "src/lib/code.py": "raise NotImplementedError(\"code is not yet implemented in Skulpt\")\n", "src/lib/UserDict.py": "raise NotImplementedError(\"UserDict is not yet implemented in Skulpt\")\n", "src/lib/codecs.py": "raise NotImplementedError(\"codecs is not yet implemented in Skulpt\")\n", "src/lib/uu.py": "raise NotImplementedError(\"uu is not yet implemented in Skulpt\")\n", "src/lib/pythonds/graphs/adjGraph.py": "#\n# adjGraph\n#\n# Created by Brad Miller on 2005-02-24.\n# Copyright (c) 2005 Brad Miller, David Ranum, Luther College. All rights reserved.\n#\n\nimport sys\nimport os\nimport unittest\n\nclass Graph:\n def __init__(self):\n self.vertices = {}\n self.numVertices = 0\n \n def addVertex(self,key):\n self.numVertices = self.numVertices + 1\n newVertex = Vertex(key)\n self.vertices[key] = newVertex\n return newVertex\n \n def getVertex(self,n):\n if n in self.vertices:\n return self.vertices[n]\n else:\n return None\n\n def __contains__(self,n):\n return n in self.vertices\n \n def addEdge(self,f,t,cost=0):\n if f not in self.vertices:\n nv = self.addVertex(f)\n if t not in self.vertices:\n nv = self.addVertex(t)\n self.vertices[f].addNeighbor(self.vertices[t],cost)\n \n def getVertices(self):\n return list(self.vertices.keys())\n \n def __iter__(self):\n return iter(self.vertices.values())\n \nclass Vertex:\n def __init__(self,num):\n self.id = num\n self.connectedTo = {}\n self.color = 'white'\n self.dist = sys.maxsize\n self.pred = None\n self.disc = 0\n self.fin = 0\n\n # def __lt__(self,o):\n # return self.id < o.id\n \n def addNeighbor(self,nbr,weight=0):\n self.connectedTo[nbr] = weight\n \n def setColor(self,color):\n self.color = color\n \n def setDistance(self,d):\n self.dist = d\n\n def setPred(self,p):\n self.pred = p\n\n def setDiscovery(self,dtime):\n self.disc = dtime\n \n def setFinish(self,ftime):\n self.fin = ftime\n \n def getFinish(self):\n return self.fin\n \n def getDiscovery(self):\n return self.disc\n \n def getPred(self):\n return self.pred\n \n def getDistance(self):\n return self.dist\n \n def getColor(self):\n return self.color\n \n def getConnections(self):\n return self.connectedTo.keys()\n \n def getWeight(self,nbr):\n return self.connectedTo[nbr]\n \n def __str__(self):\n return str(self.id) + \":color \" + self.color + \":disc \" + str(self.disc) + \":fin \" + str(self.fin) + \":dist \" + str(self.dist) + \":pred \\n\\t[\" + str(self.pred)+ \"]\\n\"\n \n def getId(self):\n return self.id\n\nclass adjGraphTests(unittest.TestCase):\n def setUp(self):\n self.tGraph = Graph()\n \n def testMakeGraph(self):\n gFile = open(\"test.dat\")\n for line in gFile:\n fVertex, tVertex = line.split('|')\n fVertex = int(fVertex)\n tVertex = int(tVertex)\n self.tGraph.addEdge(fVertex,tVertex)\n for i in self.tGraph:\n adj = i.getAdj()\n for k in adj:\n print(i, k)\n\n \nif __name__ == '__main__':\n unittest.main()\n \n", "src/lib/macurl2path.py": "raise NotImplementedError(\"macurl2path is not yet implemented in Skulpt\")\n", "src/lib/new.py": "raise NotImplementedError(\"new is not yet implemented in Skulpt\")\n", "src/lib/whichdb.py": "raise NotImplementedError(\"whichdb is not yet implemented in Skulpt\")\n", "src/lib/_abcoll.py": "raise NotImplementedError(\"_abcoll is not yet implemented in Skulpt\")\n", "src/lib/hotshot/__init__.py": "raise NotImplementedError(\"hotshot is not yet implemented in Skulpt\")\n", "src/lib/processing.js": "/*\n Skulpt Processing\n\n Testing/debugging:\n\n ProcessingJS from Skulpt:\n Sk.misceval.callsim(Sk.globals.processing.$d.PShapeSVG, \n new Sk.builtin.str(\"string\"), \n new Sk.builtin.str(\"bot1.svg\"))\n\n ProcessingJS direct:\n p = Processing.instances[0]\n p.PShapeSVG(\"string\", \"bot1.svg\")\n*/\n\nvar $builtinmodule = function (name) {\n var imageClass;\n var colorClass;\n var screenClass;\n var environmentClass;\n var keyboardClass;\n var mouseClass;\n var vectorClass\n\n var mod = {};\n var imList = [];\n var looping = true;\n\n // We need this to store a reference to the actual processing object which is not created\n // until the run function is called. Even then the processing object is passed by the\n // processing-js sytem as a parameter to the sketchProc function. Why not set it to None here\n //\n\n // See: http://processingjs.org/reference/\n\n mod.processing = null;\n mod.p = null;\n\n mod.X = Sk.builtin.assk$(0, Sk.builtin.nmber.int$);\n mod.Y = Sk.builtin.assk$(1, Sk.builtin.nmber.int$);\n mod.Z = Sk.builtin.assk$(2, Sk.builtin.nmber.int$);\n\n mod.R = Sk.builtin.assk$( 3, Sk.builtin.nmber.int$);\n mod.G = Sk.builtin.assk$( 4, Sk.builtin.nmber.int$);\n mod.B = Sk.builtin.assk$( 5, Sk.builtin.nmber.int$);\n mod.A = Sk.builtin.assk$( 6, Sk.builtin.nmber.int$);\n \n mod.U = Sk.builtin.assk$( 7, Sk.builtin.nmber.int$);\n mod.V = Sk.builtin.assk$( 8, Sk.builtin.nmber.int$);\n \n mod.NX = Sk.builtin.assk$( 9, Sk.builtin.nmber.int$);\n mod.NY = Sk.builtin.assk$( 10, Sk.builtin.nmber.int$);\n mod.NZ = Sk.builtin.assk$( 11, Sk.builtin.nmber.int$);\n \n mod.EDGE = Sk.builtin.assk$( 12, Sk.builtin.nmber.int$);\n \n // Stroke\n mod.SR = Sk.builtin.assk$( 13, Sk.builtin.nmber.int$);\n mod.SG = Sk.builtin.assk$( 14, Sk.builtin.nmber.int$);\n mod.SB = Sk.builtin.assk$( 15, Sk.builtin.nmber.int$);\n mod.SA = Sk.builtin.assk$( 16, Sk.builtin.nmber.int$);\n \n mod.SW = Sk.builtin.assk$( 17, Sk.builtin.nmber.int$);\n \n // Transformations (2D and 3D)\n mod.TX = Sk.builtin.assk$( 18, Sk.builtin.nmber.int$);\n mod.TY = Sk.builtin.assk$( 19, Sk.builtin.nmber.int$);\n mod.TZ = Sk.builtin.assk$( 20, Sk.builtin.nmber.int$);\n \n mod.VX = Sk.builtin.assk$( 21, Sk.builtin.nmber.int$);\n mod.VY = Sk.builtin.assk$( 22, Sk.builtin.nmber.int$);\n mod.VZ = Sk.builtin.assk$( 23, Sk.builtin.nmber.int$);\n mod.VW = Sk.builtin.assk$( 24, Sk.builtin.nmber.int$);\n \n // Material properties\n mod.AR = Sk.builtin.assk$( 25, Sk.builtin.nmber.int$);\n mod.AG = Sk.builtin.assk$( 26, Sk.builtin.nmber.int$);\n mod.AB = Sk.builtin.assk$( 27, Sk.builtin.nmber.int$);\n \n mod.DR = Sk.builtin.assk$( 3, Sk.builtin.nmber.int$);\n mod.DG = Sk.builtin.assk$( 4, Sk.builtin.nmber.int$);\n mod.DB = Sk.builtin.assk$( 5, Sk.builtin.nmber.int$);\n mod.DA = Sk.builtin.assk$( 6, Sk.builtin.nmber.int$);\n \n mod.SPR = Sk.builtin.assk$( 28, Sk.builtin.nmber.int$);\n mod.SPG = Sk.builtin.assk$( 29, Sk.builtin.nmber.int$);\n mod.SPB = Sk.builtin.assk$( 30, Sk.builtin.nmber.int$);\n \n mod.SHINE = Sk.builtin.assk$( 31, Sk.builtin.nmber.int$);\n \n mod.ER = Sk.builtin.assk$( 32, Sk.builtin.nmber.int$);\n mod.EG = Sk.builtin.assk$( 33, Sk.builtin.nmber.int$);\n mod.EB = Sk.builtin.assk$( 34, Sk.builtin.nmber.int$);\n \n mod.BEEN_LIT = Sk.builtin.assk$( 35, Sk.builtin.nmber.int$);\n \n mod.VERTEX_FIELD_COUNT = Sk.builtin.assk$( 36, Sk.builtin.nmber.int$);\n \n // Shape drawing modes\n mod.CENTER = Sk.builtin.assk$(3, Sk.builtin.nmber.int$);\n mod.RADIUS = Sk.builtin.assk$(2, Sk.builtin.nmber.int$);\n mod.CORNERS = Sk.builtin.assk$(1, Sk.builtin.nmber.int$);\n mod.CORNER = Sk.builtin.assk$(0, Sk.builtin.nmber.int$);\n mod.DIAMETER = Sk.builtin.assk$(3, Sk.builtin.nmber.int$);\n \n // Text vertical alignment modes\n // Default vertical alignment for text placement\n mod.BASELINE = Sk.builtin.assk$( 0, Sk.builtin.nmber.int$);\n // Align text to the top\n mod.TOP = Sk.builtin.assk$( 101, Sk.builtin.nmber.int$);\n // Align text from the bottom, using the baseline\n mod.BOTTOM = Sk.builtin.assk$( 102, Sk.builtin.nmber.int$);\n \n // UV Texture coordinate modes\n mod.NORMAL = Sk.builtin.assk$( 1, Sk.builtin.nmber.int$);\n mod.NORMALIZED = Sk.builtin.assk$( 1, Sk.builtin.nmber.int$);\n mod.IMAGE = Sk.builtin.assk$( 2, Sk.builtin.nmber.int$);\n \n // Text placement modes\n mod.MODEL = Sk.builtin.assk$( 4, Sk.builtin.nmber.int$);\n mod.SHAPE = Sk.builtin.assk$( 5, Sk.builtin.nmber.int$);\n \n // Stroke modes\n mod.SQUARE = Sk.builtin.assk$( 'butt', Sk.builtin.nmber.str);\n mod.ROUND = Sk.builtin.assk$( 'round', Sk.builtin.nmber.str);\n mod.PROJECT = Sk.builtin.assk$( 'square', Sk.builtin.nmber.str);\n mod.MITER = Sk.builtin.assk$( 'miter', Sk.builtin.nmber.str);\n mod.BEVEL = Sk.builtin.assk$( 'bevel', Sk.builtin.nmber.str);\n \n // Lighting modes\n mod.AMBIENT = Sk.builtin.assk$( 0, Sk.builtin.nmber.int$);\n mod.DIRECTIONAL = Sk.builtin.assk$( 1, Sk.builtin.nmber.int$);\n //POINT: 2, Shared with Shape constant\n mod.SPOT = Sk.builtin.assk$( 3, Sk.builtin.nmber.int$);\n\n // Color modes\n mod.RGB = Sk.builtin.assk$(1, Sk.builtin.nmber.int$);\n mod.ARGB = Sk.builtin.assk$(2, Sk.builtin.nmber.int$);\n mod.HSB = Sk.builtin.assk$(3, Sk.builtin.nmber.int$);\n mod.ALPHA = Sk.builtin.assk$(4, Sk.builtin.nmber.int$);\n mod.CMYK = Sk.builtin.assk$(5, Sk.builtin.nmber.int$);\n \n // Image file types\n mod.TIFF = Sk.builtin.assk$(0, Sk.builtin.nmber.int$);\n mod.TARGA = Sk.builtin.assk$(1, Sk.builtin.nmber.int$);\n mod.JPEG = Sk.builtin.assk$(2, Sk.builtin.nmber.int$);\n mod.GIF = Sk.builtin.assk$(3, Sk.builtin.nmber.int$);\n\n // Stroke modes\n mod.MITER = new Sk.builtin.str(\"miter\");\n mod.BEVEL = new Sk.builtin.str(\"bevel\");\n mod.ROUND = new Sk.builtin.str(\"round\");\n mod.SQUARE = new Sk.builtin.str(\"butt\");\n mod.PROJECT = new Sk.builtin.str(\"square\");\n\n // Renderer modes\n mod.P2D = Sk.builtin.assk$(1, Sk.builtin.nmber.int$);\n mod.JAVA2D = Sk.builtin.assk$(1, Sk.builtin.nmber.int$);\n mod.WEBGL = Sk.builtin.assk$(2, Sk.builtin.nmber.int$);\n mod.P3D = Sk.builtin.assk$(2, Sk.builtin.nmber.int$);\n mod.OPENGL = Sk.builtin.assk$(2, Sk.builtin.nmber.int$);\n mod.PDF = Sk.builtin.assk$(0, Sk.builtin.nmber.int$);\n mod.DXF = Sk.builtin.assk$(0, Sk.builtin.nmber.int$);\n\n // Platform IDs\n mod.OTHER = Sk.builtin.assk$( 0, Sk.builtin.nmber.int$);\n mod.WINDOWS = Sk.builtin.assk$( 1, Sk.builtin.nmber.int$);\n mod.MAXOSX = Sk.builtin.assk$( 2, Sk.builtin.nmber.int$);\n mod.LINUX = Sk.builtin.assk$( 3, Sk.builtin.nmber.int$);\n \n mod.EPSILON = Sk.builtin.assk$( 0.0001, Sk.builtin.nmber.float$);\n\n mod.MAX_FLOAT = Sk.builtin.assk$( 3.4028235e+38, Sk.builtin.nmber.float$);\n mod.MIN_FLOAT = Sk.builtin.assk$( -3.4028235e+38, Sk.builtin.nmber.float$);\n mod.MAX_INT = Sk.builtin.assk$( 2147483647, Sk.builtin.nmber.int$);\n mod.MIN_INT = Sk.builtin.assk$( -2147483648, Sk.builtin.nmber.int$);\n \n // Constants\n mod.HALF_PI = Sk.builtin.assk$(Math.PI / 2.0, Sk.builtin.nmber.float$);\n mod.THIRD_PI = Sk.builtin.assk$(Math.PI / 3.0, Sk.builtin.nmber.float$);\n mod.PI = Sk.builtin.assk$(Math.PI, Sk.builtin.nmber.float$);\n mod.TWO_PI = Sk.builtin.assk$(Math.PI * 2.0, Sk.builtin.nmber.float$);\n mod.TAU = Sk.builtin.assk$(Math.PI * 2.0, Sk.builtin.nmber.float$);\n mod.QUARTER_PI = Sk.builtin.assk$(Math.PI / 4.0, Sk.builtin.nmber.float$);\n\n mod.DEG_TO_RAD = Sk.builtin.assk$( Math.PI / 180, Sk.builtin.nmber.float$);\n mod.RAD_TO_DEG = Sk.builtin.assk$( 180 / Math.PI, Sk.builtin.nmber.float$);\n \n mod.WHITESPACE = Sk.builtin.assk$(\" \\t\\n\\r\\f\\u00A0\", Sk.builtin.nmber.str);\n \n // Shape modes\n mod.POINT = Sk.builtin.assk$(2, Sk.builtin.nmber.int$);\n mod.POINTS = Sk.builtin.assk$(2, Sk.builtin.nmber.int$);\n mod.LINE = Sk.builtin.assk$(4, Sk.builtin.nmber.int$);\n mod.LINES = Sk.builtin.assk$(4, Sk.builtin.nmber.int$);\n mod.TRIANGLE = Sk.builtin.assk$(8, Sk.builtin.nmber.int$);\n mod.TRIANGLES = Sk.builtin.assk$(9, Sk.builtin.nmber.int$);\n mod.TRIANGLE_FAN = Sk.builtin.assk$(11, Sk.builtin.nmber.int$);\n mod.TRIANGLE_STRIP = Sk.builtin.assk$(10, Sk.builtin.nmber.int$);\n mod.QUAD = Sk.builtin.assk$(16, Sk.builtin.nmber.int$);\n mod.QUADS = Sk.builtin.assk$(16, Sk.builtin.nmber.int$);\n mod.QUAD_STRIP = Sk.builtin.assk$(17, Sk.builtin.nmber.int$);\n mod.POLYGON = Sk.builtin.assk$(20, Sk.builtin.nmber.int$);\n\n mod.PATH = Sk.builtin.assk$(21, Sk.builtin.nmber.int$);\n mod.RECT = Sk.builtin.assk$(30, Sk.builtin.nmber.int$);\n mod.ELLIPSE = Sk.builtin.assk$(31, Sk.builtin.nmber.int$);\n mod.ARC = Sk.builtin.assk$(32, Sk.builtin.nmber.int$);\n mod.SPHERE = Sk.builtin.assk$(40, Sk.builtin.nmber.int$);\n mod.BOX = Sk.builtin.assk$(41, Sk.builtin.nmber.int$);\n\n mod.GROUP = Sk.builtin.assk$( 0, Sk.builtin.nmber.int$);\n mod.PRIMITIVE = Sk.builtin.assk$( 1, Sk.builtin.nmber.int$);\n //PATH: 21, // shared with Shape PATH\n mod.GEOMETRY = Sk.builtin.assk$( 3, Sk.builtin.nmber.int$);\n \n // Shape Vertex\n mod.VERTEX = Sk.builtin.assk$( 0, Sk.builtin.nmber.int$);\n mod.BEZIER_VERTEX = Sk.builtin.assk$( 1, Sk.builtin.nmber.int$);\n mod.CURVE_VERTEX = Sk.builtin.assk$( 2, Sk.builtin.nmber.int$);\n mod.BREAK = Sk.builtin.assk$( 3, Sk.builtin.nmber.int$);\n mod.CLOSESHAPE = Sk.builtin.assk$( 4, Sk.builtin.nmber.int$);\n \n // Blend modes\n mod.REPLACE = Sk.builtin.assk$(0, Sk.builtin.nmber.int$);\n mod.BLEND = Sk.builtin.assk$(1 << 0, Sk.builtin.nmber.int$);\n mod.ADD = Sk.builtin.assk$(1 << 1, Sk.builtin.nmber.int$);\n mod.SUBTRACT = Sk.builtin.assk$(1 << 2, Sk.builtin.nmber.int$);\n mod.LIGHTEST = Sk.builtin.assk$(1 << 3, Sk.builtin.nmber.int$);\n mod.DARKEST = Sk.builtin.assk$(1 << 4, Sk.builtin.nmber.int$);\n mod.DIFFERENCE = Sk.builtin.assk$(1 << 5, Sk.builtin.nmber.int$);\n mod.EXCLUSION = Sk.builtin.assk$(1 << 6, Sk.builtin.nmber.int$);\n mod.MULTIPLY = Sk.builtin.assk$(1 << 7, Sk.builtin.nmber.int$);\n mod.SCREEN = Sk.builtin.assk$(1 << 8, Sk.builtin.nmber.int$);\n mod.OVERLAY = Sk.builtin.assk$(1 << 9, Sk.builtin.nmber.int$);\n mod.HARD_LIGHT = Sk.builtin.assk$(1 << 10, Sk.builtin.nmber.int$);\n mod.SOFT_LIGHT = Sk.builtin.assk$(1 << 11, Sk.builtin.nmber.int$);\n mod.DODGE = Sk.builtin.assk$(1 << 12, Sk.builtin.nmber.int$);\n mod.BURN = Sk.builtin.assk$(1 << 13, Sk.builtin.nmber.int$);\n\n // Color component bit masks\n mod.ALPHA_MASK = Sk.builtin.assk$( 0xff000000, Sk.builtin.nmber.int$);\n mod.RED_MASK = Sk.builtin.assk$( 0x00ff0000, Sk.builtin.nmber.int$);\n mod.GREEN_MASK = Sk.builtin.assk$( 0x0000ff00, Sk.builtin.nmber.int$);\n mod.BLUE_MASK = Sk.builtin.assk$( 0x000000ff, Sk.builtin.nmber.int$);\n \n // Projection matrices\n mod.CUSTOM = Sk.builtin.assk$( 0, Sk.builtin.nmber.int$);\n mod.ORTHOGRAPHIC = Sk.builtin.assk$( 2, Sk.builtin.nmber.int$);\n mod.PERSPECTIVE = Sk.builtin.assk$( 3, Sk.builtin.nmber.int$);\n \n // Cursors\n mod.ARROW = Sk.builtin.assk$('default', Sk.builtin.str);\n mod.CROSS = Sk.builtin.assk$('crosshair', Sk.builtin.str);\n mod.HAND = Sk.builtin.assk$('pointer', Sk.builtin.str);\n mod.MOVE = Sk.builtin.assk$('move', Sk.builtin.str);\n mod.TEXT = Sk.builtin.assk$('text', Sk.builtin.str);\n mod.WAIT = Sk.builtin.assk$('wait', Sk.builtin.str);\n mod.NOCURSOR = Sk.builtin.assk$(\"url('data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=='), auto\", Sk.builtin.nmber.str);\n\n // Hints\n mod.DISABLE_OPENGL_2X_SMOOTH = Sk.builtin.assk$(1, Sk.builtin.nmber.int$);\n mod.ENABLE_OPENGL_2X_SMOOTH = Sk.builtin.assk$(-1, Sk.builtin.nmber.int$);\n mod.ENABLE_OPENGL_4X_SMOOTH = Sk.builtin.assk$(2, Sk.builtin.nmber.int$);\n mod.ENABLE_NATIVE_FONTS = Sk.builtin.assk$(3, Sk.builtin.nmber.int$);\n mod.DISABLE_DEPTH_TEST = Sk.builtin.assk$(4, Sk.builtin.nmber.int$);\n mod.ENABLE_DEPTH_TEST = Sk.builtin.assk$(-4, Sk.builtin.nmber.int$);\n mod.ENABLE_DEPTH_SORT = Sk.builtin.assk$(5, Sk.builtin.nmber.int$);\n mod.DISABLE_DEPTH_SORT = Sk.builtin.assk$(-5, Sk.builtin.nmber.int$);\n mod.DISABLE_OPENGL_ERROR_REPORT = Sk.builtin.assk$(6, Sk.builtin.nmber.int$);\n mod.ENABLE_OPENGL_ERROR_REPORT = Sk.builtin.assk$(-6, Sk.builtin.nmber.int$);\n mod.ENABLE_ACCURATE_TEXTURES = Sk.builtin.assk$(7, Sk.builtin.nmber.int$);\n mod.DISABLE_ACCURATE_TEXTURES = Sk.builtin.assk$(-7, Sk.builtin.nmber.int$);\n mod.HINT_COUNT = Sk.builtin.assk$(10, Sk.builtin.nmber.int$);\n\n // Shape closing modes\n mod.OPEN = Sk.builtin.assk$(1, Sk.builtin.nmber.int$);\n mod.CLOSE = Sk.builtin.assk$(2, Sk.builtin.nmber.int$);\n\n // Filter/convert types\n mod.BLUR = Sk.builtin.assk$(11, Sk.builtin.nmber.int$);\n mod.GRAY = Sk.builtin.assk$(12, Sk.builtin.nmber.int$);\n mod.INVERT = Sk.builtin.assk$(13, Sk.builtin.nmber.int$);\n mod.OPAQUE = Sk.builtin.assk$(14, Sk.builtin.nmber.int$);\n mod.POSTERIZE = Sk.builtin.assk$(15, Sk.builtin.nmber.int$);\n mod.THRESHOLD = Sk.builtin.assk$(16, Sk.builtin.nmber.int$);\n mod.ERODE = Sk.builtin.assk$(17, Sk.builtin.nmber.int$);\n mod.DILATE = Sk.builtin.assk$(18, Sk.builtin.nmber.int$);\n\n // Both key and keyCode will be equal to these values\n mod.BACKSPACE = Sk.builtin.assk$( 8, Sk.builtin.nmber.int$);\n mod.TAB = Sk.builtin.assk$(9, Sk.builtin.nmber.int$);\n mod.ENTER = Sk.builtin.assk$(10, Sk.builtin.nmber.int$);\n mod.RETURN = Sk.builtin.assk$(13, Sk.builtin.nmber.int$);\n mod.ESC = Sk.builtin.assk$(27, Sk.builtin.nmber.int$);\n mod.DELETE = Sk.builtin.assk$(127, Sk.builtin.nmber.int$);\n mod.CODED = Sk.builtin.assk$(0xffff, Sk.builtin.nmber.int$);\n\n // p.key will be CODED and p.keyCode will be this value\n mod.SHIFT = Sk.builtin.assk$(16, Sk.builtin.nmber.int$);\n mod.CONTROL = Sk.builtin.assk$(17, Sk.builtin.nmber.int$);\n mod.ALT = Sk.builtin.assk$(18, Sk.builtin.nmber.int$);\n mod.CAPSLK = Sk.builtin.assk$(20, Sk.builtin.nmber.int$);\n mod.PGUP = Sk.builtin.assk$(33, Sk.builtin.nmber.int$);\n mod.PGDN = Sk.builtin.assk$(34, Sk.builtin.nmber.int$);\n mod.END = Sk.builtin.assk$(35, Sk.builtin.nmber.int$);\n mod.HOME = Sk.builtin.assk$(36, Sk.builtin.nmber.int$);\n mod.LEFT = Sk.builtin.assk$(37, Sk.builtin.nmber.int$);\n mod.UP = Sk.builtin.assk$(38, Sk.builtin.nmber.int$);\n mod.RIGHT = Sk.builtin.assk$(39, Sk.builtin.nmber.int$);\n mod.DOWN = Sk.builtin.assk$(40, Sk.builtin.nmber.int$);\n mod.F1 = Sk.builtin.assk$(112, Sk.builtin.nmber.int$);\n mod.F2 = Sk.builtin.assk$(113, Sk.builtin.nmber.int$);\n mod.F3 = Sk.builtin.assk$(114, Sk.builtin.nmber.int$);\n mod.F4 = Sk.builtin.assk$(115, Sk.builtin.nmber.int$);\n mod.F5 = Sk.builtin.assk$(116, Sk.builtin.nmber.int$);\n mod.F6 = Sk.builtin.assk$(117, Sk.builtin.nmber.int$);\n mod.F7 = Sk.builtin.assk$(118, Sk.builtin.nmber.int$);\n mod.F8 = Sk.builtin.assk$(119, Sk.builtin.nmber.int$);\n mod.F9 = Sk.builtin.assk$(120, Sk.builtin.nmber.int$);\n mod.F10 = Sk.builtin.assk$(121, Sk.builtin.nmber.int$);\n mod.F11 = Sk.builtin.assk$(122, Sk.builtin.nmber.int$);\n mod.F12 = Sk.builtin.assk$(123, Sk.builtin.nmber.int$);\n mod.NUMLK = Sk.builtin.assk$(144, Sk.builtin.nmber.int$);\n mod.META = Sk.builtin.assk$(157, Sk.builtin.nmber.int$);\n mod.INSERT = Sk.builtin.assk$(155, Sk.builtin.nmber.int$);\n\n // PJS defined constants\n mod.SINCOS_LENGTH = Sk.builtin.assk$(720, Sk.builtin.nmber.int$);\n mod.PRECISIONB = Sk.builtin.assk$(15, Sk.builtin.nmber.int$);\n mod.PRECISIONF = Sk.builtin.assk$(1 << 15, Sk.builtin.nmber.int$);\n mod.PREC_MAXVAL = Sk.builtin.assk$((1 << 15) - 1, Sk.builtin.nmber.int$);\n mod.PREC_ALPHA_SHIFT = Sk.builtin.assk$(24 - 15, Sk.builtin.nmber.int$);\n mod.PREC_RED_SHIFT = Sk.builtin.assk$(16 - 15, Sk.builtin.nmber.int$);\n mod.NORMAL_MODE_AUTO = Sk.builtin.assk$(0, Sk.builtin.nmber.int$);\n mod.NORMAL_MODE_SHAPE = Sk.builtin.assk$(1, Sk.builtin.nmber.int$);\n mod.NORMAL_MODE_VERTEX = Sk.builtin.assk$(2, Sk.builtin.nmber.int$);\n mod.MAX_LIGHTS = Sk.builtin.assk$(8, Sk.builtin.nmber.int$);\n\n // 2D - Primitives\n mod.line = new Sk.builtin.func(function (x1, y1, x2, y2) {\n mod.processing.line(x1.v, y1.v, x2.v, y2.v);\n });\n\n mod.ellipse = new Sk.builtin.func(function (x, y, r1, r2) {\n mod.processing.ellipse(x.v, y.v, r1.v, r2.v);\n\n });\n\n mod.text = new Sk.builtin.func(function (theText, x, y) {\n mod.processing.text(theText.v, x.v, y.v);\n });\n\n mod.point = new Sk.builtin.func(function (x1, y1) {\n mod.processing.point(x1.v, y1.v);\n });\n\n mod.arc = new Sk.builtin.func(function (x, y, width, height, start, stop) {\n mod.processing.arc(x.v, y.v, width.v, height.v, start.v, stop.v);\n });\n\n mod.quad = new Sk.builtin.func(function (x1, y1, x2, y2, x3, y3, x4, y4) {\n mod.processing.quad(x1.v, y1.v, x2.v, y2.v, x3.v, y3.v, x4.v, y4.v);\n });\n\n mod.rect = new Sk.builtin.func(function (x, y, width, height, radius) {\n var rad;\n if (typeof(radius) === \"undefined\") {\n mod.processing.rect(x.v, y.v, width.v, height.v);\n } else {\n mod.processing.rect(x.v, y.v, width.v, height.v, radius.v);\n }\n });\n\n mod.triangle = new Sk.builtin.func(function (x1, y1, x2, y2, x3, y3) {\n mod.processing.triangle(x1.v, y1.v, x2.v, y2.v, x3.v, y3.v);\n });\n\n mod.bezier = new Sk.builtin.func(function (x1, y1, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) {\n if (typeof(a7) === \"undefined\") {\n\t // bezier(x1, y1, cx1, cy1, cx2, cy2, x2, y2);\n mod.processing.bezier(x1.v, y1.v, a1.v, a2.v, a3.v, a4.v, a5.v, a6.v);\n\t} else {\n\t // bezier(x1, y1, z1, cx1, cy1, cz1, cx2, cy2, cz2, x2, y2, z2);\n mod.processing.bezier(x1.v, y1.v, a1.v, a2.v, a3.v, a4.v, a5.v, a6.v, a7.v, a8.v, a9.v, a10.v);\n\t}\n });\n\n mod.alpha = new Sk.builtin.func(function (r, g, b) {\n // r will be either:\n // a number in which case the fill will be grayscale\n // a color object\n // g, and b may be undefined. If they hold values it will\n // be assumed that we have an r,g,b color tuple\n if (typeof(g) === \"undefined\") {\n return Sk.builtin.assk$(mod.processing.alpha(r.v), Sk.builtin.nmber.float$);\n } else if (typeof(b) === \"undefined\") {\n return Sk.builtin.assk$(mod.processing.alpha(r.v, g.v), Sk.builtin.nmber.float$);\n } else {\n return Sk.builtin.assk$(mod.processing.alpha(r.v, g.v, b.v), Sk.builtin.nmber.float$);\n\t}\n });\n\n mod.ambient = new Sk.builtin.func(function (r, g, b) {\n\t// ambient(gray)\n\t// ambient(red, green blue)\n // r will be either:\n // a number in which case the fill will be grayscale\n // a color object\n // g, and b may be undefined. If they hold values it will\n // be assumed that we have an r,g,b color tuple\n if (typeof(g) === \"undefined\") {\n mod.processing.ambient(r.v);\n } else if (typeof(b) === \"undefined\") {\n mod.processing.ambient(r.v, g.v);\n } else {\n mod.processing.ambient(r.v, g.v, b.v);\n\t}\n });\n\n mod.ambientLight = new Sk.builtin.func(function (v1, v2, v3, x, y, z) {\n\t// ambientLight(v1,v2,v3)\n\t// ambientLight(v1,v2,v3,x,y,z)\n if (typeof(x) === \"undefined\") {\n mod.processing.ambientLight(v1.v, v2.v, v3.v);\n } else if (typeof(y) === \"undefined\") {\n mod.processing.ambientLight(v1.v, v2.v, v3.v, x.v);\n } else if (typeof(z) === \"undefined\") {\n mod.processing.ambientLight(v1.v, v2.v, v3.v, x.v, y.v);\n } else {\n mod.processing.ambientLight(v1.v, v2.v, v3.v, x.v, y.v, z.v);\n\t}\n });\n\n mod.beginCamera = new Sk.builtin.func(function () {\n\tmod.processing.beginCamera();\n });\n\n mod.beginShape = new Sk.builtin.func(function (mode) {\n if (typeof(mode) === \"undefined\") {\n mode = mod.POLYGON;\n }\n mod.processing.beginShape(mode.v);\n });\n\n mod.bezierDetail = new Sk.builtin.func(function (resolution) {\n\t// Sets the resolution at which Beziers display. The default\n\t// value is 20. This function is only useful when using the\n\t// P3D or OPENGL renderer as the default (JAVA2D) renderer\n\t// does not use this information.\n if (typeof(resolution) !== \"undefined\") {\n resolution = resolution.v;\n } else {\n resolution = 20;\n\t}\n mod.processing.bezierDetail(resolution);\n });\n\n mod.bezierPoint = new Sk.builtin.func(function (a,b,c,d,t) {\n mod.processing.bezierPoint(a.v,b.v,c.v,d.v,t.v);\n });\n\n mod.bezierTangent = new Sk.builtin.func(function (a,b,c,d,t) {\n\tmod.processing.bezierTangent(a.v,b.v,c.v,d.v,t.v);\n });\n\n mod.bezierVertex = new Sk.builtin.func(function (v1, v2, v3, v4, v5, v6,\n\t\t\t\t\t\t v7, v8, v9) {\n\t// bezierVertex(cx1, cy1, cx2, cy2, x, y)\n\t// bezierVertex(cx1, cy1, cz1, cx2, cy2, cz2, x, y, z)\n if (typeof(v7) === \"undefined\") {\n\t mod.processing.bezierVertex(v1.v, v2.v, v3.v, v4.v, v5.v, v6.v);\n\t} else if (typeof(v8) === \"undefined\") {\n\t mod.processing.bezierVertex(v1.v, v2.v, v3.v, v4.v, v5.v, v6.v,\n\t\t\t\t\tv7.v);\n\t} else if (typeof(v9) === \"undefined\") {\n\t mod.processing.bezierVertex(v1.v, v2.v, v3.v, v4.v, v5.v, v6.v,\n\t\t\t\t\tv7.v, v8.v);\n\t} else {\n\t mod.processing.bezierVertex(v1.v, v2.v, v3.v, v4.v, v5.v, v6.v,\n\t\t\t\t\tv7.v, v8.v, v9.v);\n\t}\n });\n\n mod.blend = new Sk.builtin.func(function (v1, v2, v3, v4, v5,\n\t\t\t\t\t v6, v7, v8, v9, v10) {\n\tif (other instanceof Sk.builtin.nmber) {\n\t // blend(x, y,width,height,dx, dy,dwidth,dheight,MODE)\n\t mod.processing.blend(v1.v, v2.v, v3.v, v4.v, v5.v,\n\t\t\t\t v6.v, v7.v, v8.v, v9.v);\n\t} else {\n\t // blend(srcImg,x,y, width, height,dx,dy, dwidth, dheight,MODE)\n\t mod.processing.blend(v1.v, v2.v, v3.v, v4.v, v5.v,\n\t\t\t\t v6.v, v7.v, v8.v, v9.v, v10.v);\n\t}\n });\n\n mod.blendColor = new Sk.builtin.func(function (c1, c2, mode) {\n\t// blendColor(c1,c2,MODE)\n var c = Sk.misceval.callsim(mod.color,\n\t\t\t\t Sk.builtin.assk$(0, Sk.builtin.nmber.int$),\n\t\t\t\t Sk.builtin.assk$(0, Sk.builtin.nmber.int$),\n\t\t\t\t Sk.builtin.assk$(0, Sk.builtin.nmber.int$));\n\tc.v = mod.processing.blendColor(c1.v, c2.v, mode.v);\n\treturn c;\n });\n\n mod.brightness = new Sk.builtin.func(function (r, g, b) {\n if (typeof(g) === \"undefined\") {\n\t return Sk.builtin.assk$(mod.processing.brightness(r.v),\n\t\t\t\t Sk.builtin.nmber.float$);\n } else if (typeof(b) === \"undefined\") {\n\t return Sk.builtin.assk$(mod.processing.brightness(r.v, g.v),\n\t\t\t\t Sk.builtin.nmber.float$);\n } else {\n\t return Sk.builtin.assk$(mod.processing.brightness(r.v, g.v, b.v),\n\t\t\t\t Sk.builtin.nmber.float$);\n\t}\n });\n\n mod.camera = new Sk.builtin.func(function (eyeX, eyeY, eyeZ,\n\t\t\t\t\t centerX, centerY, centerZ,\n\t\t\t\t\t upX, upY, upZ) {\n\t// camera()\n\t// camera(eyeX, eyeY, eyeZ,centerX, centerY, centerZ,upX, upY, upZ)\n if (typeof(eyeX) === \"undefined\") {\n\t mod.processing.camera();\n\t} else {\n\t mod.processing.camera(eyeX.v, eyeY.v, eyeZ.v,\n\t\t\t\t centerX.v, centerY.v, centerZ.v,\n\t\t\t\t upX.v, upY.v, upZ.v);\n\t}\n });\n\n mod.constrain = new Sk.builtin.func(function (value, min, max) {\n\treturn Sk.builtin.assk$(mod.processing.constrain(value.v, min.v, max.v),\n\t\t\t\tSk.builtin.nmber.float$);\n });\n\n mod.copy = new Sk.builtin.func(function (v1, v2, v3, v4, v5,\n\t\t\t\t\t v6, v7, v8, v9) {\n\tif (other instanceof Sk.builtin.nmber) {\n\t // copy(x, y,width,height,dx, dy,dwidth,dheight)\n\t mod.processing.copy(v1.v, v2.v, v3.v, v4.v, v5.v,\n\t\t\t\tv6.v, v7.v, v8.v);\n\t} else {\n\t // copy(srcImg,x,y, width, height,dx,dy, dwidth, dheight)\n\t mod.processing.copy(v1.v, v2.v, v3.v, v4.v, v5.v,\n\t\t\t\tv6.v, v7.v, v8.v, v9.v);\n\t}\n });\n\n mod.createFont = new Sk.builtin.func(function (name, size, smooth, charset) {\n\t// createFont(name, size)\n\t// createFont(name, size, smooth)\n\t// createFont(name, size, smooth, charset)\n\tvar font = Sk.misceval.callsim(mod.PFont);\n if (typeof(smooth) === \"undefined\") {\n\t font.v = mod.processing.createFont(name.v, size.v);\n\t} else if (typeof(charset) === \"undefined\") {\n\t font.v = mod.processing.createFont(name.v, size.v, smooth.v);\n\t} else {\n\t font.v = mod.processing.createFont(name.v, size.v, smooth.v, charset.v);\n\t}\n\treturn font;\n });\n\n mod.createGraphics = new Sk.builtin.func(function (width, height, renderer, filename) {\n\t// createGraphics(width, height, renderer)\n\t// createGraphics(width, height, renderer, filename)\n\tvar graphics = Sk.misceval.callsim(mod.PGraphics);\n if (typeof(filename) === \"undefined\") {\n\t graphics.v = mod.processing.createGraphics(width.v, height.v, renderer.v);\n\t} else {\n\t graphics.v = mod.processing.createGraphics(width.v, height.v, renderer.v, filename.v);\n\t}\n\treturn graphics;\n });\n\n mod.createImage = new Sk.builtin.func(function (width, height, format) {\n\tvar image = Sk.misceval.callsim(mod.PImage);\n\timage.v = mod.processing.createImage(width.v, height.v, format.v);\n\treturn image;\n });\n\n mod.cursor = new Sk.builtin.func(function (v, x, y) {\n\t// cursor()\n\t// cursor(MODE)\n\t// cursor(image,x,y)\n if (typeof(v) === \"undefined\") {\n\t mod.processing.cursor();\n\t} else if (typeof(x) === \"undefined\") {\n\t mod.processing.cursor(v.v);\n\t} else if (typeof(y) === \"undefined\") {\n\t mod.processing.cursor(v.v, x.v);\n\t} else {\n\t mod.processing.cursor(v.v, x.v, y.v);\n\t}\n });\n\n mod.curve = new Sk.builtin.func(function (v1, v2, v3, v4,\n\t\t\t\t\t v5, v6, v7, v8,\n\t\t\t\t\t v9, v10, v11, v12) {\n\t// curve(x1, y1, x2, y2, x3, y3, x4, y4);\n\t// curve(x1, y1, z1, x2, y2, z2, x3, y3, z3, x4, y4, z4);\n if (typeof(v9) === \"undefined\") {\n\t mod.processing.curve(v1.v, v2.v, v3.v, v4.v,\n\t\t\t\t v5.v, v6.v, v7.v, v8.v);\n\t} else if (typeof(v10) === \"undefined\") {\n\t mod.processing.curve(v1.v, v2.v, v3.v, v4.v,\n\t\t\t\t v5.v, v6.v, v7.v, v8.v,\n\t\t\t\t v9.v);\n\t} else if (typeof(v11) === \"undefined\") {\n\t mod.processing.curve(v1.v, v2.v, v3.v, v4.v,\n\t\t\t\t v5.v, v6.v, v7.v, v8.v,\n\t\t\t\t v9.v, v10.v);\n\t} else if (typeof(v12) === \"undefined\") {\n\t mod.processing.curve(v1.v, v2.v, v3.v, v4.v,\n\t\t\t\t v5.v, v6.v, v7.v, v8.v,\n\t\t\t\t v9.v, v10.v, v11.v);\n\t} else {\n\t mod.processing.curve(v1.v, v2.v, v3.v, v4.v,\n\t\t\t\t v5.v, v6.v, v7.v, v8.v,\n\t\t\t\t v9.v, v10.v, v11.v, v12.v);\n\t}\n });\n\n mod.curveDetail = new Sk.builtin.func(function (detail) {\n\t// curveDetail(detail)\n\tmod.processing.curveDetail(detail.v);\n });\n\n mod.curvePoint = new Sk.builtin.func(function (a,b,c,d,t) {\n\t// curvePoint(a,b,c,d,t)\n\tmod.processing.curvePoint(a.v,b.v,c.v,d.v,t.v);\n });\n\n mod.curveTangent = new Sk.builtin.func(function (a,b,c,d,t) {\n\t// curveTangent(a,b,c,d,t)\n\tmod.processing.curveTangent(a.v,b.v,c.v,d.v,t.v);\n });\n\n mod.curveTightness = new Sk.builtin.func(function (squishy) {\n\t// curveTightness(squishy)\n\tmod.processing.curveTightness(squishy.v);\n });\n\n mod.curveVertex = new Sk.builtin.func(function (x, y, z) {\n\t// curveVertex(x, y) \n\t// curveVertex(x, y, z)\n if (typeof(z) === \"undefined\") {\n\t mod.processing.curveVertex(x.v, y.v);\n\t} else {\n\t mod.processing.curveVertex(x.v, y.v, z.v);\n\t}\n });\n\n mod.day = new Sk.builtin.func(function () {\n\treturn Sk.builtin.assk$(mod.processing.day(), Sk.builtin.nmber.int$);\n });\n\n mod.degrees = new Sk.builtin.func(function (angle) {\n\t// degrees(angle)\n\treturn Sk.builtin.assk$(mod.processing.degrees(angle.v), \n\t\t\t\tSk.builtin.nmber.float$);\n });\n\n mod.directionalLight = new Sk.builtin.func(function (v1,v2,v3,nx,ny,nz) {\n\t// directionalLight(v1,v2,v3,nx,ny,nz)\n\tmod.processing.directionalLight(v1.v,v2.v,v3.v,nx.v,ny.v,nz.v);\n });\n\n mod.dist = new Sk.builtin.func(function (x1, y1, z1, x2, y2, z2) {\n\t// dist(x1, y1, x2, y2)\n\t// dist(x1, y1, z1, x2, y2, z2)\n if (typeof(y2) === \"undefined\") {\n\t return Sk.builtin.assk$(mod.processing.dist(x1.v, y1.v, z1.v, x2.v),\n\t\t\t\t Sk.builtin.nmber.float$);\n\t} else if (typeof(z2) === \"undefined\") {\n\t return Sk.builtin.assk$(mod.processing.dist(x1.v, y1.v, z1.v, x2.v, y2.v),\n\t\t\t\t Sk.builtin.nmber.float$);\n\t} else {\n\t return Sk.builtin.assk$(mod.processing.dist(x1.v, y1.v, z1.v, x2.v, y2.v, z2.v),\n\t\t\t\t Sk.builtin.nmber.float$);\n\t}\n });\n\n mod.emissive = new Sk.builtin.func(function (v1, v2, v3) {\n\t// emissive(gray)\n\t// emissive(color)\n\t// emissive(v1,v2,v3)\n if (typeof(v2) === \"undefined\") {\n\t mod.processing.emissive(v1.v);\n\t} else if (typeof(v3) === \"undefined\") {\n\t mod.processing.emissive(v1.v, v2.v);\n\t} else {\n\t mod.processing.emissive(v1.v, v2.v, v3.v);\n\t}\n });\n\n mod.endCamera = new Sk.builtin.func(function () {\n\t// endCamera()\n\tmod.processing.endCamera();\n });\n\n mod.endShape = new Sk.builtin.func(function (mode) {\n\t// endShape()\n\t// endShape(MODE)\n if (typeof(mode) === \"undefined\") {\n\t mod.processing.endShape();\n\t} else {\n\t mod.processing.endShape(mode.v);\n\t}\n });\n\n mod.filter = new Sk.builtin.func(function (mode, srcImg) {\n\t// filter(MODE)\n\t// filter(MODE, srcImg)\n if (typeof(srcImg) === \"undefined\") {\n\t mod.processing.filter(mode.v);\n\t} else {\n\t mod.processing.filter(mode.v, srcImg.v);\n\t}\n });\n\n mod.frustum = new Sk.builtin.func(function (left, right, bottom, top, near, far) {\n\t// frustum(left, right, bottom,top, near, far)\n\tmod.processing.frustum(left, right, bottom, top, near, far);\n });\n\n mod.hint = new Sk.builtin.func(function (item) {\n\t// hint(item)\n\tmod.processing.hint(item);\n });\n\n mod.hour = new Sk.builtin.func(function () {\n\treturn Sk.builtin.assk$(mod.processing.hour(), Sk.builtin.nmber.int$);\n });\n\n mod.hue = new Sk.builtin.func(function (color) {\n\t// hue(color)\n\treturn Sk.builtin.assk$(mod.processing.hue(color.v),\n\t\t\t\tSk.builtin.nmber.float$);\n });\n\n mod.imageMode = new Sk.builtin.func(function (mode) {\n\tmod.processing.imageMode(mode.v);\n });\n\n mod.lerp = new Sk.builtin.func(function (value1, value2, amt) {\n\t// lerp(value1, value2, amt)\n\t// returns float\n\treturn Sk.builtin.assk$(mod.processing.lerp(value1.v, value2.v, amt.v),\n\t\t\t\tSk.builtin.nmber.float$);\n });\n\n mod.lerpColor = new Sk.builtin.func(function (c1, c2, amt) {\n\t// lerpColor(c1, c2, amt)\n\t// returns color\n var c = Sk.misceval.callsim(mod.color,\n\t\t\t\t Sk.builtin.assk$(0, Sk.builtin.nmber.int$),\n\t\t\t\t Sk.builtin.assk$(0, Sk.builtin.nmber.int$),\n\t\t\t\t Sk.builtin.assk$(0, Sk.builtin.nmber.int$));\n\tc.v = mod.processing.lerpColor(c1.v, c2.v, amt.v);\n\treturn c;\n });\n\n mod.lightFalloff = new Sk.builtin.func(function (constant, linear, quadratic) {\n\t// lightFalloff(constant,linear,quadratic)\n\tmod.processing.lightFalloff(constant.v, linear.v, quadratic.v);\n });\n\n mod.lights = new Sk.builtin.func(function () {\n\tmod.processing.lights();\n });\n\n mod.lightSpecular = new Sk.builtin.func(function (v1, v2, v3) {\n\t// lightSpecular(v1,v2,v3)\n\tmod.processing.lightSpecular(v1.v, v2.v, v3.v);\n });\n\n mod.loadBytes = new Sk.builtin.func(function (filename) {\n\t// loadBytes(filename)\n\t// returns byte[]\n\treturn new Sk.builtin.list(mod.processing.loadBytes(filename.v));\n });\n\n mod.loadFont = new Sk.builtin.func(function (fontname) {\n\t// loadFont(fontname)\n\t// returns font\n\tvar font = Sk.misceval.callsim(mod.PFont);\n\tfont.v = mod.processing.loadFont(fontname.v);\n\treturn font;\n });\n\n mod.loadShape = new Sk.builtin.func(function (filename) {\n\t// loadShape(filename)\n\t// returns shape\n\tvar shape = Sk.misceval.callsim(mod.PShapeSVG, \n\t\t\t\t\tnew Sk.builtin.str(\"string\"),\n\t\t\t\t\tfilename);\n\treturn shape;\n });\n\n mod.loadStrings = new Sk.builtin.func(function (filename) {\n\t// loadStrings(filename)\n\t// returns string []\n\treturn new Sk.builtin.list(mod.processing.loadStrings(filename.v));\n });\n\n mod.mag = new Sk.builtin.func(function (a, b, c) {\n\t// mag(a,b)\n\t// mag(a,b,c)\n\t// returns magnitude as float\n if (typeof(c) === \"undefined\") {\n\t return Sk.builtin.assk$(mod.processing.mag(a.v, b.v),\n\t\t\t\t Sk.builtin.nmber.float$);\n } else {\n\t return Sk.builtin.assk$(mod.processing.mag(a.v, b.v, c.v),\n\t\t\t\t Sk.builtin.nmber.float$);\n\t}\n });\n\n mod.map = new Sk.builtin.func(function (value,low1,high1,low2,high2) {\n\t// map(value,low1,high1,low2,high2)\n\t// returns float\n\treturn Sk.builtin.assk$(mod.processing.map(value.v,low1.v,high1.v,\n\t\t\t\t\t\t low2.v,high2.v),\n\t\t\t\tSk.builtin.nmber.float$);\n });\n\n mod.millis = new Sk.builtin.func(function () {\n\treturn Sk.builtin.assk$(mod.processing.millis(), Sk.builtin.nmber.int$);\n });\n\n mod.minute = new Sk.builtin.func(function () {\n\treturn Sk.builtin.assk$(mod.processing.minute(), Sk.builtin.nmber.int$);\n });\n\n mod.modelX = new Sk.builtin.func(function (x, y, z) {\n\t// modelX(x,y,z)\n\t// returns float\n\treturn Sk.builtin.assk$(mod.processing.modelX(x.v, y.v, z.v),\n\t\t\t\tSk.builtin.nmber.float$);\n });\n\n mod.modelY = new Sk.builtin.func(function (x, y, z) {\n\t// modelY(x,y,z)\n\t// returns float\n\treturn Sk.builtin.assk$(mod.processing.modelY(x.v, y.v, z.v),\n\t\t\t\tSk.builtin.nmber.float$);\n });\n\n mod.modelZ = new Sk.builtin.func(function (x, y, z) {\n\t// modelZ(x,y,z)\n\t// returns float\n\treturn Sk.builtin.assk$(mod.processing.modelZ(x.v, y.v, z.v),\n\t\t\t\tSk.builtin.nmber.float$);\n });\n\n mod.month = new Sk.builtin.func(function () {\n\treturn Sk.builtin.assk$(mod.processing.month(), Sk.builtin.nmber.int$);\n });\n\n mod.noCursor = new Sk.builtin.func(function () {\n\tmod.processing.noCursor();\n });\n\n mod.noise = new Sk.builtin.func(function (x, y, z) {\n\t// noise(x)\n\t// noise(x, y)\n\t// noise(x, y, z)\n\t// returns float\n if (typeof(y) === \"undefined\") {\n\t return Sk.builtin.assk$(mod.processing.noise(x.v),\n\t\t\t\t Sk.builtin.nmber.float$);\n } else if (typeof(z) === \"undefined\") {\n\t return Sk.builtin.assk$(mod.processing.noise(x.v, y.v),\n\t\t\t\t Sk.builtin.nmber.float$);\n } else {\n\t return Sk.builtin.assk$(mod.processing.noise(x.v, y.v, z.v),\n\t\t\t\t Sk.builtin.nmber.float$);\n\t}\n });\n\n mod.noiseDetail = new Sk.builtin.func(function (octaves, falloff) {\n\t// noiseDetail(octaves);\n\t// noiseDetail(octaves,falloff);\n\tmod.processing.noiseDetail(octaves.v, falloff.v);\n });\n\n mod.noiseSeed = new Sk.builtin.func(function (value) {\n\t// noiseSeed(value); int\n\t// returns float\n\treturn Sk.builtin.assk$(mod.processing.noiseSeed(value.v),\n\t\t\t\tSk.builtin.nmber.float$);\n });\n\n mod.noLights = new Sk.builtin.func(function () {\n\tmod.processing.noLights();\n });\n\n mod.norm = new Sk.builtin.func(function (value, low, high) {\n\t// norm(value, low, high)\n\t// returns float\n\treturn Sk.builtin.assk$(mod.processing.norm(value.v, low.v, high.v),\n\t\t\t\tSk.builtin.nmber.float$);\n });\n\n mod.normal = new Sk.builtin.func(function (nx, ny, nz) {\n\t// normal(nx,ny,nz)\n\t// returns None\n\tmod.processing.normal(nx.v, ny.v, nz.v);\n });\n\n mod.noTint = new Sk.builtin.func(function () {\n\tmod.processing.noTint();\n });\n\n mod.ortho = new Sk.builtin.func(function (left, right, bottom, top, near, far) {\n\t// ortho(left, right, bottom,top, near,far)\n\t// returns None\n\tmod.processing.ortho(left.v, right.v, bottom.v, top.v, near.v, far.v);\n });\n\n mod.perspective = new Sk.builtin.func(function (fov, aspect, zNear, zFar) {\n\t// perspective()\n\t// perspective(fov, aspect, zNear, zFar)\n\t// returns None\n if (typeof(fov) === \"undefined\") {\n\t mod.processing.perspective();\n } else if (typeof(aspect) === \"undefined\") {\n\t mod.processing.perspective(fov.v);\n } else if (typeof(zNear) === \"undefined\") {\n\t mod.processing.perspective(fov.v, aspect.v);\n } else if (typeof(zFar) === \"undefined\") {\n\t mod.processing.perspective(fov.v, aspect.v, zNear.v);\n } else {\n\t mod.processing.perspective(fov.v, aspect.v, zNear.v, zFar.v);\n\t}\n });\n\n mod.pointLight = new Sk.builtin.func(function (v1,v2,v3,nx,ny,nz) {\n\t// pointLight(v1,v2,v3,nx,ny,nz)\n\t// returns None\n\tmod.processing.pointLight(v1.v,v2.v,v3.v,nx.v,ny.v,nz.v);\n });\n\n mod.printCamera = new Sk.builtin.func(function () {\n\t// printCamera()\n\t// returns None\n\tmod.processing.printCamera();\n });\n\n mod.println = new Sk.builtin.func(function (data) {\n\t// println(data)\n\tmod.processing.println(data.v);\n });\n\n mod.printProjection = new Sk.builtin.func(function () {\n\t// printProjection()\n\t// returns None\n\tmod.processing.printProjection();\n });\n\n mod.radians = new Sk.builtin.func(function (angle) {\n\t// radians(angle)\n\t// returns int or float\n\treturn Sk.builtin.assk$(mod.processing.radians(angle.v),\n\t\t\t\tSk.builtin.nmber.float$);\n });\n\n mod.randomSeed = new Sk.builtin.func(function (value) {\n\t// noiseSeed(value);\n\t// returns float\n\treturn Sk.builtin.assk$(mod.processing.randomSeed(value.v),\n\t\t\t\tSk.builtin.nmber.float$);\n });\n\n mod.random = new Sk.builtin.func(function (v1, v2) {\n\t// random();\n\t// random(high);\n\t// random(low, high);\n\t// returns float\n if (typeof(v1) === \"undefined\") {\n\t return Sk.builtin.assk$(mod.processing.random(),\n\t\t\t\t Sk.builtin.nmber.float$);\n } else if (typeof(v2) === \"undefined\") {\n\t return Sk.builtin.assk$(mod.processing.random(v1.v),\n\t\t\t\t Sk.builtin.nmber.float$);\n } else {\n\t return Sk.builtin.assk$(mod.processing.random(v1.v, v2.v),\n\t\t\t\t Sk.builtin.nmber.float$);\n\t}\n });\n\n mod.requestImage = new Sk.builtin.func(function (filename, extension) {\n\t// requestImage(filename)\n\t// requestImage(filename, extension)\n\tvar image = Sk.misceval.callsim(mod.PImage);\n if (typeof(extension) === \"undefined\") {\n\t image.v = mod.processing.requestImage(filename.v);\n } else {\n\t image.v = mod.processing.requestImage(filename.v, extension.v);\n\t}\n\treturn image;\n });\n\n mod.saturation = new Sk.builtin.func(function (color) {\n\t// saturation(color)\n\t// returns float\n\treturn Sk.builtin.assk$(mod.processing.saturation(color.v),\n\t\t\t\tSk.builtin.nmber.float$);\n });\n\n mod.save = new Sk.builtin.func(function (filename) {\n\t// save(filename)\n\t// returns None\n\tmod.processing.save(filename.v);\n });\n\n mod.saveFrame = new Sk.builtin.func(function (filename) {\n\t// saveFrame()\n\t// saveFrame(filename-####.ext)\n\t// returns None\n if (typeof(filename) === \"undefined\") {\n\t mod.processing.saveFrame();\n } else {\n\t mod.processing.saveFrame(filename.v);\n\t}\n });\n\n mod.saveStrings = new Sk.builtin.func(function (filename, strings) {\n\t// saveStrings(filename,strings)\n\tmod.processing.saveStrings(filename.v, strings.v);\n });\n\n mod.screenX = new Sk.builtin.func(function (x, y, z) {\n\t// screenX(x,y,z)\n\t// returns float\n\treturn Sk.builtin.assk$(mod.processing.screenX(x.v, y.v, z.v),\n\t\t\t\tSk.builtin.nmber.float$);\n });\n\n mod.screenY = new Sk.builtin.func(function (x, y, z) {\n\t// screenY(x,y,z)\n\t// returns float\n\treturn Sk.builtin.assk$(mod.processing.screenY(x.v, y.v, z.v),\n\t\t\t\tSk.builtin.nmber.float$);\n });\n\n mod.screenZ = new Sk.builtin.func(function (x, y, z) {\n\t// screenZ(x,y,z)\n\t// returns float\n\treturn Sk.builtin.assk$(mod.processing.screenZ(x.v, y.v, z.v),\n\t\t\t\tSk.builtin.nmber.float$);\n });\n\n mod.second = new Sk.builtin.func(function () {\n\treturn Sk.builtin.assk$(mod.processing.second(), Sk.builtin.nmber.int$);\n });\n\n mod.shape = new Sk.builtin.func(function (sh, x, y, width, height) {\n\t// shape(sh)\n\t// shape(sh,x,y)\n\t// shape(sh,x,y,width,height)\n\t// returns?\n if (typeof(x) === \"undefined\") {\n\t mod.processing.shape(sh.v);\n } else if (typeof(y) === \"undefined\") {\n\t mod.processing.shape(sh.v,x.v);\n } else if (typeof(width) === \"undefined\") {\n\t mod.processing.shape(sh.v,x.v,y.v);\n } else if (typeof(height) === \"undefined\") {\n\t mod.processing.shape(sh.v,x.v,y.v,width.v);\n } else {\n\t mod.processing.shape(sh.v,x.v,y.v,width.v,height.v);\n\t}\n });\n\n mod.shapeMode = new Sk.builtin.func(function (mode) {\n\t// shapeMode(MODE)\n\tmod.processing.shapeMode(mode.v);\n });\n\n mod.shininess = new Sk.builtin.func(function (shine) {\n\t// shininess(shine)\n\t// returns None\n\tmod.processing.shininess(shine.v);\n });\n\n mod.specular = new Sk.builtin.func(function (v1,v2,v3) {\n\t// specular(gray)\n\t// specular(color)\n\t// specular(v1,v2,v3)\n if (typeof(v2) === \"undefined\") {\n\t mod.processing.specular(v1.v);\n } else if (typeof(v3) === \"undefined\") {\n\t mod.processing.specular(v1.v,v2.v);\n } else {\n\t mod.processing.specular(v1.v,v2.v,v3.v);\n\t}\n });\n\n mod.spotLight = new Sk.builtin.func(function (v1,v2,v3,nx,ny,nz,angle,concentration) {\n\t// spotLight(v1,v2,v3,nx,ny,nz,angle,concentration)\n\t// returns None\n\tmod.processing.spotLight(v1.v,v2.v,v3.v,nx.v,ny.v,nz.v,angle.v,concentration.v);\n });\n\n mod.sq = new Sk.builtin.func(function (value) {\n\t// sq(value)\n\t// returns squared number\n\treturn Sk.builtin.assk$(mod.processing.sq(value),\n\t\t\t\tSk.builtin.nmber.float$);\n });\n\n mod.status = new Sk.builtin.func(function (text) {\n\t// status(text)\n\tmod.processing.status(text.v);\n });\n\n mod.textAlign = new Sk.builtin.func(function (align, yalign) {\n\t// textAlign(ALIGN)\n\t// textAlign(ALIGN, YALIGN)\n\t// returns None\n if (typeof(yalign) === \"undefined\") {\n\t mod.processing.textAlign(align.v);\n } else {\n\t mod.processing.textAlign(align.v, yalign.v);\n\t}\n });\n\n mod.textAscent = new Sk.builtin.func(function () {\n\t// returns float\n\treturn Sk.builtin.assk$(mod.processing.textAscent(),\n\t\t\t\tSk.builtin.nmber.float$);\n });\n\n mod.textDescent = new Sk.builtin.func(function () {\n\t// returns float\n\treturn Sk.builtin.assk$(mod.processing.textDescent(),\n\t\t\t\tSk.builtin.nmber.float$);\n });\n\n mod.textFont = new Sk.builtin.func(function (font, size) {\n\t// textFont(font)\n\t// textFont(font, size)\n if (typeof(size) === \"undefined\") {\n\t mod.processing.textFont(font.v);\n } else {\n\t mod.processing.textFont(font.v, size.v);\n\t}\n });\n\n mod.textLeading = new Sk.builtin.func(function (dist) {\n\t// textLeading(dist)\n\t// returns None\n\tmod.processing.textLeading(dist.v);\n });\n\n mod.textMode = new Sk.builtin.func(function (mode) {\n\t// textMode(MODE)\n\t// returns None\n\tmod.processing.textMode(mode.v);\n });\n\n mod.textSize = new Sk.builtin.func(function (size) {\n\t// textSize(size)\n\t// returns None\n\tmod.processing.textSize(size.v);\n });\n\n mod.texture = new Sk.builtin.func(function (img) {\n\t// texture(img)\n\t// returns None\n\tmod.processing.texture(img.v);\n });\n\n mod.textureMode = new Sk.builtin.func(function (mode) {\n\t// textureMode(MODE)\n\t// returns None\n\tmod.processing.textureMode(mode.v);\n });\n\n mod.textWidth = new Sk.builtin.func(function (data) {\n\t// textWidth(data)\n\t// returns float\n\treturn Sk.builtin.assk$(mod.processing.textWidth(data.v),\n\t\t\t\tSk.builtin.nmber.float$);\n });\n\n mod.tint = new Sk.builtin.func(function (v1, v2, v3, v4) {\n\t// tint(gray)\n\t// tint(gray, alpha)\n\t// tint(value1, value2, value3)\n\t// tint(value1, value2, value3, alpha)\n\t// tint(color)\n\t// tint(color, alpha)\n\t// tint(hex)\n\t// tint(hex, alpha)\n if (typeof(v2) === \"undefined\") {\n\t mod.processing.tint(v1.v);\n } else if (typeof(v3) === \"undefined\") {\n\t mod.processing.tint(v1.v, v2.v);\n } else if (typeof(v4) === \"undefined\") {\n\t mod.processing.tint(v1.v, v2.v, v3.v);\n } else {\n\t mod.processing.tint(v1.v, v2.v, v3.v, v4.v);\n\t}\n });\n\n mod.updatePixels = new Sk.builtin.func(function () {\n\t// updatePixels()\n\tmod.processing.updatePixels();\n });\n\n mod.vertex = new Sk.builtin.func(function (x, y, z, u, v) {\n\t// vertex(x, y); \n\t// vertex(x, y, z); \n\t// vertex(x, y, u, v); \n\t// vertex(x, y, z, u, v);\n if (typeof(z) === \"undefined\") {\n\t mod.processing.vertex(x.v, y.v);\n } else if (typeof(u) === \"undefined\") {\n\t mod.processing.vertex(x.v, y.v, z.v);\n } else if (typeof(v) === \"undefined\") {\n\t mod.processing.vertex(x.v, y.v, z.v, u.v);\n } else {\n\t mod.processing.vertex(x.v, y.v, z.v, u.v, v.v);\n\t}\n });\n\n mod.year = new Sk.builtin.func(function () {\n\treturn Sk.builtin.assk$(mod.processing.year(), Sk.builtin.nmber.int$);\n });\n\n // 3D Primitives\n\n mod.box = new Sk.builtin.func(function(size) {\n mod.processing.box(size.v);\n });\n\n mod.sphere = new Sk.builtin.func(function(radius) {\n mod.processing.sphere(radius.v);\n });\n\n mod.sphereDetail = new Sk.builtin.func(function(res,vres) {\n if (typeof(vres) === \"undefined\") {\n mod.processing.sphereDetail(res.v);\n }\n else {\n mod.processing.sphereDetail(res.v, vres.v);\n }\n });\n\n // Color\n mod.background = new Sk.builtin.func(function (r, g, b) {\n\n if (typeof(g) !== \"undefined\") {\n g = g.v;\n }\n if (typeof(b) !== \"undefined\") {\n b = b.v;\n }\n\n mod.processing.background(r.v, g, b);\n\n });\n\n mod.fill = new Sk.builtin.func(function (r, g, b) {\n // r will be either:\n // a number in which case the fill will be grayscale\n // a color object\n // g, and b may be undefined. If they hold values it will\n // be assumed that we have an r,g,b color tuple\n if (typeof(g) !== \"undefined\") {\n g = g.v;\n }\n if (typeof(b) !== \"undefined\") {\n b = b.v;\n }\n\n mod.processing.fill(r.v, g, b);\n\n });\n\n\n mod.stroke = new Sk.builtin.func(function (r, g, b) {\n\n if (typeof(g) !== \"undefined\") {\n g = g.v;\n }\n if (typeof(b) !== \"undefined\") {\n b = b.v;\n }\n\n mod.processing.stroke(r.v, g, b);\n\n });\n\n mod.noStroke = new Sk.builtin.func(function () {\n mod.processing.noStroke();\n });\n\n\n mod.colorMode = new Sk.builtin.func(function (model, maxV) {\n if (typeof(maxV) === \"undefined\") {\n maxV = 255;\n }\n else {\n maxV = maxV.v;\n }\n mod.processing.colorMode(model.v, maxV);\n });\n\n mod.noFill = new Sk.builtin.func(function () {\n mod.processing.noFill();\n });\n\n\n // Environment\n\n mod.loop = new Sk.builtin.func(function () {\n if (mod.processing === null) {\n throw new Sk.builtin.Exception(\"loop() should be called after run()\");\n }\n looping = true;\n mod.processing.loop();\n });\n\n mod.noLoop = new Sk.builtin.func(function () {\n if (mod.processing === null) {\n throw new Sk.builtin.Exception(\"noLoop() should be called after run()\");\n }\n looping = false;\n mod.processing.noLoop();\n });\n\n // NOTE: difference with ProcessingJS\n // frameRate is only a function, not a variable: \n // use environment.frameRate for value\n mod.frameRate = new Sk.builtin.func(function (fr) {\n mod.processing.frameRate(fr.v);\n });\n\n // NOTE: difference with ProcessingJS\n // Use mouse.pressed rather than mousePressed\n\n // NOTE: difference with ProcessingJS\n // Use environment.keyPressed rather than keyPressed\n\n // NOTE: difference with ProcessingJS\n // Use environment.frameCount \n\n // NOTE: difference with ProcessingJS\n // Use environment.frameCount\n \n // NOTE: difference with ProcessingJS\n // Use environment.online\n\n // NOTE: difference with ProcessingJS\n // Use environment.focused\n\n mod.width = Sk.builtin.assk$(100, Sk.builtin.nmber.int$);\n mod.height = Sk.builtin.assk$(100, Sk.builtin.nmber.int$);\n\n mod.size = new Sk.builtin.func(function (w, h, mode) {\n if (typeof(mode) === \"undefined\") {\n mode = mod.P2D;\n }\n mod.processing.size(w.v, h.v, mode.v);\n\tmod.width = Sk.builtin.assk$(mod.processing.width, Sk.builtin.nmber.int$);\n\tmod.height = Sk.builtin.assk$(mod.processing.height, Sk.builtin.nmber.int$);\n });\n\n mod.exitp = new Sk.builtin.func(function (h, w) {\n mod.processing.exit();\n });\n\n // NOTE: difference with ProcessingJS\n // Use mouseX() or mouse.x rather than mouseX\n mod.mouseX = new Sk.builtin.func(function () {\n return Sk.builtin.assk$(mod.processing.mouseX, Sk.builtin.nmber.int$);\n });\n\n // NOTE: difference with ProcessingJS\n // Use mouseY() or mouse.y rather than mouseY\n mod.mouseY = new Sk.builtin.func(function () {\n return Sk.builtin.assk$(mod.processing.mouseY, Sk.builtin.nmber.int$);\n });\n\n // NOTE: difference with ProcessingJS\n // Use pmouseX() or mouse.px rather than pmouseX\n mod.pmouseX = new Sk.builtin.func(function () {\n return Sk.builtin.assk$(mod.processing.pmouseX, Sk.builtin.nmber.int$);\n });\n\n // NOTE: difference with ProcessingJS\n // Use pmouseY() or mouse.py rather than pmouseY\n mod.pmouseY = new Sk.builtin.func(function () {\n return Sk.builtin.assk$(mod.processing.pmouseY, Sk.builtin.nmber.int$);\n });\n\n // Attributes\n mod.rectMode = new Sk.builtin.func(function (mode) {\n mod.processing.rectMode(mode.v);\n });\n\n mod.strokeWeight = new Sk.builtin.func(function (wt) {\n mod.processing.strokeWeight(wt.v);\n\n });\n\n mod.smooth = new Sk.builtin.func(function () {\n mod.processing.smooth();\n });\n\n mod.noSmooth = new Sk.builtin.func(function () {\n mod.processing.noSmooth();\n });\n\n mod.ellipseMode = new Sk.builtin.func(function (mode) {\n mod.processing.ellipseMode(mode.v);\n });\n\n mod.strokeCap = new Sk.builtin.func(function (mode) {\n mod.processing.strokeCap(mode.v);\n });\n\n mod.strokeJoin = new Sk.builtin.func(function (mode) {\n mod.processing.strokeJoin(mode.v);\n });\n\n\n // Transforms\n mod.rotate = new Sk.builtin.func(function (rads) {\n // rotation in radians\n mod.processing.rotate(rads.v);\n });\n\n mod.rotateX = new Sk.builtin.func(function(rads) {\n mod.processing.rotateX(rads.v);\n });\n\n mod.rotateY = new Sk.builtin.func(function(rads) {\n mod.processing.rotateY(rads.v);\n });\n\n mod.rotateZ = new Sk.builtin.func(function(rads) {\n mod.processing.rotateZ(rads.v);\n });\n\n mod.scale = new Sk.builtin.func(function (sx, sy, sz) {\n if (typeof(sy) === \"undefined\") {\n sy = 1.0;\n } else {\n sy = sy.v;\n }\n if (typeof(sz) === \"undefined\") {\n sz = 1.0;\n } else {\n sz = sz.v;\n }\n mod.processing.scale(sx.v, sy, sz);\n });\n\n mod.translate = new Sk.builtin.func(function (sx, sy, sz) {\n if (typeof(sy) === \"undefined\") {\n sy = 1.0;\n } else {\n sy = sy.v;\n }\n if (typeof(sz) === \"undefined\") {\n sz = 1.0;\n } else {\n sz = sz.v;\n }\n mod.processing.translate(sx.v, sy, sz);\n });\n\n mod.popMatrix = new Sk.builtin.func(function() {\n mod.processing.popMatrix();\n });\n\n mod.pushMatrix = new Sk.builtin.func(function() {\n mod.processing.pushMatrix();\n });\n\n mod.applyMatrix = new Sk.builtin.func(function() {\n var args = Array.prototype.slice.call(arguments, 0, 16),\n i;\n\n for (i = 0; i < args.length; i++) {\n args[i] = typeof(args[i]) === \"undefined\" ? 0.0 : args[i].v;\n }\n\n mod.processing.applyMatrix.apply(mod.processing, args);\n });\n\n mod.resetMatrix = new Sk.builtin.func(function() {\n mod.processing.resetMatrix();\n });\n\n mod.printMatrix = new Sk.builtin.func(function() {\n return Sk.ffi.remapToPy(mod.processing.printMatrix());\n });\n\n // //////////////////////////////////////////////////////////////////////\n // Run\n // \n // Create the processing context and setup of calls to setup, draw etc.\n //\n //\n // ////////////////////////////////////////////////////////////////////// \n mod.run = new Sk.builtin.func(function () {\n function sketchProc (processing) {\n mod.processing = processing;\n\n // processing.setup = function() {\n // if Sk.globals[\"setup\"]\n // Sk.misceval.callsim(Sk.globals[\"setup\"])\n // }\n\n\n // FIXME if no Sk.globals[\"draw\"], then no need for this\n processing.draw = function () {\n // if there are pending image loads then just use the natural looping calls to \n // retry until all the images are loaded. If noLoop was called in setup then make\n // sure to revert to that after all the images in hand.\n var wait = false;\n for (var i in imList) {\n if (imList[i].width === 0) {\n wait = true;\n }\n }\n if (wait === true) {\n if (looping === true) {\n return;\n }\n else {\n processing.loop();\n return;\n }\n\n } else {\n if (looping === false) {\n processing.noLoop();\n }\n }\n\n mod.frameCount = processing.frameCount;\n if (Sk.globals[\"draw\"]) {\n Sk.misceval.callsim(Sk.globals[\"draw\"]);\n\t\t}\n };\n\n var callBacks = [\"setup\", \"mouseMoved\", \"mouseClicked\", \"mouseDragged\", \"mouseMoved\", \"mouseOut\",\n \"mouseOver\", \"mousePressed\", \"mouseReleased\", \"keyPressed\", \"keyReleased\", \"keyTyped\"\n ];\n for (var cb in callBacks) {\n if (Sk.globals[callBacks[cb]]) {\n processing[callBacks[cb]] = new Function(\"Sk.misceval.callsim(Sk.globals['\" + callBacks[cb] + \"']);\");\n }\n }\n }\n\n var canvas = document.getElementById(Sk.canvas);\n if (canvas.tagName !== \"CANVAS\") {\n var mydiv = canvas;\n canvas = document.createElement('canvas');\n while (mydiv.firstChild) {\n mydiv.removeChild(mydiv.firstChild);\n }\n mydiv.appendChild(canvas);\n }\n window.$(canvas).show();\n window.Processing.logger = { log : function(message) {\n Sk.misceval.print_(message);\n }};\n mod.p = new window.Processing(canvas, sketchProc);\n\n\n });\n\n mouseClass = function ($gbl, $loc) {\n\n $loc.__getattr__ = new Sk.builtin.func(function (self, key) {\n\t key = Sk.ffi.remapToJs(key);\n if (key === \"x\") {\n return new Sk.builtin.nmber(mod.processing.mouseX);\n }\n else if (key === \"y\") {\n return new Sk.builtin.nmber(mod.processing.mouseY);\n }\n else if (key === \"px\") {\n return new Sk.builtin.nmber(mod.processing.pmouseX);\n }\n else if (key === \"py\") {\n return new Sk.builtin.nmber(mod.processing.pmouseY);\n }\n else if (key === \"pressed\") {\n return new Sk.builtin.bool(mod.processing.__mousePressed);\n }\n else if (key === \"button\") {\n return new Sk.builtin.nmber(mod.processing.mouseButton);\n }\n });\n\n };\n\n\n mod.Mouse = Sk.misceval.buildClass(mod, mouseClass, \"Mouse\", []);\n\n mod.mouse = Sk.misceval.callsim(mod.Mouse);\n\n keyboardClass = function ($gbl, $loc) {\n\n $loc.__getattr__ = new Sk.builtin.func(function (self, key) {\n\t key = Sk.ffi.remapToJs(key);\n if (key === \"key\") {\n return new Sk.builtin.str(mod.processing.key.toString());\n }\n else if (key === \"keyCode\") {\n return new Sk.builtin.nmber(mod.processing.keyCode);\n }\n else if (key === \"keyPressed\") {\n return new Sk.builtin.str(mod.processing.keyPressed);\n } // todo bool\n });\n\n };\n\n mod.Keyboard = Sk.misceval.buildClass(mod, keyboardClass, \"Keyboard\", []);\n\n mod.keyboard = Sk.misceval.callsim(mod.Keyboard);\n\n\n environmentClass = function ($gbl, $loc) {\n\n $loc.__getattr__ = new Sk.builtin.func(function (self, key) {\n\t key = Sk.ffi.remapToJs(key);\n if (key === \"frameCount\") {\n return new Sk.builtin.nmber(mod.processing.frameCount);\n }\n else if (key === \"frameRate\") {\n return new Sk.builtin.nmber(mod.processing.frameRate);\n }\n else if (key === \"height\") {\n return new Sk.builtin.nmber(mod.processing.height);\n }\n else if (key === \"width\") {\n return new Sk.builtin.nmber(mod.processing.width);\n }\n else if (key === \"online\") {\n return new Sk.builtin.bool(mod.processing.online);\n }\n else if (key === \"focused\") {\n return new Sk.builtin.bool(mod.processing.focused);\n }\n });\n\n };\n\n mod.Environment = Sk.misceval.buildClass(mod, environmentClass, \"Environment\", []);\n\n mod.environment = Sk.misceval.callsim(mod.Environment);\n\n screenClass = function ($gbl, $loc) {\n\n $loc.__init__ = new Sk.builtin.func(function (self) {\n self.pixels = null;\n });\n\n $loc.__getattr__ = new Sk.builtin.func(function (self, key) {\n\t key = Sk.ffi.remapToJs(key);\n if (key === \"height\") {\n return new Sk.builtin.nmber(mod.processing.height);\n }\n else if (key === \"width\") {\n return new Sk.builtin.nmber(mod.processing.width);\n }\n else if (key === \"pixels\") {\n if (self.pixels == null) {\n self.pixels = new Sk.builtin.list(mod.processing.pixels.toArray());\n }\n }\n return self.pixels;\n });\n\n };\n\n mod.Screen = Sk.misceval.buildClass(mod, screenClass, \"Screen\", []);\n\n mod.screen = Sk.misceval.callsim(mod.Screen);\n\n mod.loadPixels = new Sk.builtin.func(function () {\n mod.processing.loadPixels();\n });\n\n\n colorClass = function ($gbl, $loc) {\n /* images are loaded async.. so its best to preload them */\n $loc.__init__ = new Sk.builtin.func(function (self, val1, val2, val3, alpha) {\n if (typeof(val2) !== \"undefined\") {\n val2 = val2.v;\n }\n if (typeof(val3) !== \"undefined\") {\n val3 = val3.v;\n }\n if (typeof(alpha) !== \"undefined\") {\n alpha = alpha.v;\n }\n self.v = mod.processing.color(val1.v, val2, val3, alpha);\n });\n\n };\n\n mod.color = Sk.misceval.buildClass(mod, colorClass, \"color\", []);\n\n mod.red = new Sk.builtin.func(function (clr) {\n return Sk.builtin.assk$(mod.processing.red(clr.v), Sk.builtin.nmber.int$);\n });\n\n mod.green = new Sk.builtin.func(function (clr) {\n return Sk.builtin.assk$(mod.processing.green(clr.v), Sk.builtin.nmber.int$);\n });\n\n mod.blue = new Sk.builtin.func(function (clr) {\n return Sk.builtin.assk$(mod.processing.blue(clr.v), Sk.builtin.nmber.int$);\n });\n\n // Image class and functions\n //\n imageClass = function ($gbl, $loc) {\n /* images are loaded async.. so its best to preload them */\n $loc.__init__ = new Sk.builtin.func(function (self, arg1, arg2, arg3) {\n\t // PImage()\n\t // PImage(img)\n\t // PImage(width,height)\n\t // PImage(width,height,format)\n\t if (typeof(arg1) === \"undefined\") {\n\t\tself.v = new mod.processing.PImage();\n\t } else if (typeof(arg2) === \"undefined\") {\n\t\tself.v = new mod.processing.PImage(arg1.v);\n\t } else if (typeof(arg3) === \"undefined\") {\n\t\tself.v = new mod.processing.PImage(arg1.v, arg2.v);\n\t } else {\n\t\tself.v = new mod.processing.PImage(arg1.v, arg2.v, arg3.v);\n\t }\n });\n\n $loc.__getattr__ = new Sk.builtin.func(function (self, key) {\n\t key = Sk.ffi.remapToJs(key);\n if (key === \"width\") {\n return new Sk.builtin.nmber(self.v.width);\n }\n if (key === \"height\") {\n return new Sk.builtin.nmber(self.v.height);\n }\n });\n\n };\n\n mod.loadImage = new Sk.builtin.func(function (imfile) {\n var i = mod.processing.loadImage(imfile.v);\n imList.push(i);\n\tvar image = Sk.misceval.callsim(mod.PImage);\n\timage.v = i;\n return image;\n });\n\n mod.image = new Sk.builtin.func(function (im, x, y, w, h) {\n\t// image(img, x, y)\n\t// image(img, x, y, width, height)\n\tif (typeof(w) === \"undefined\") {\n mod.processing.image(im.v, x.v, y.v);\n\t} else {\n mod.processing.image(im.v, x.v, y.v, w.v, h.v);\n }\n });\n\n mod.get = new Sk.builtin.func(function (x, y) {\n var clr = mod.processing.get(x.v, y.v);\n return Sk.misceval.callsim(mod.color,\n Sk.builtin.assk$(mod.processing.red(clr), Sk.builtin.nmber.int$),\n Sk.builtin.assk$(mod.processing.green(clr), Sk.builtin.nmber.int$),\n Sk.builtin.assk$(mod.processing.blue(clr), Sk.builtin.nmber.int$));\n });\n\n mod.set = new Sk.builtin.func(function (x, y, color) {\n mod.processing.set(x.v, y.v, color.v);\n });\n\n // --- classes\n\n vectorClass = function ($gbl, $loc) {\n $loc.__init__ = new Sk.builtin.func(function (self, x, y, z) {\n\t // PVector()\n\t // PVector(x,y)\n\t // PVector(x,y,z)\n if (typeof(x) === \"undefined\") {\n\t\tself.v = new mod.processing.PVector();\n } else if (typeof(z) === \"undefined\") {\n\t\tself.v = new mod.processing.PVector(x.v, y.v);\n } else {\n\t\tself.v = new mod.processing.PVector(x.v, y.v, z.v);\n\t }\n });\n\n $loc.__getattr__ = new Sk.builtin.func(function (self, key) {\n\t key = Sk.ffi.remapToJs(key);\n if (key === \"x\") {\n return new Sk.builtin.nmber(self.v.x);\n } else if (key === \"y\") {\n return new Sk.builtin.nmber(self.v.y);\n } else if (key === \"z\") {\n return new Sk.builtin.nmber(self.v.z);\n\t }\n\t});\n\t \n $loc.get = new Sk.builtin.func(function (self) {\n\t // get() Gets a copy of the vector\n var new_vec = Sk.misceval.callsim(mod.PVector);\n\t new_vec.v = self.v.get();\n\t return new_vec;\n\t});\n\t\n\t$loc.set = new Sk.builtin.func(function (self, x, y, x) {\n\t // set() Sets the x, y, z component of the vector\n\t if (typeof(z) === \"undefined\") {\n\t\tself.v.set(x.v, y.v);\n\t } else {\n\t\tself.v.set(x.v, y.v, z.v);\n\t }\n\t});\n\n\t$loc.mag = new Sk.builtin.func(function (self) {\n\t // mag() Calculates the magnitude (length) of the vector\n\t // and returns the result as a float\n\t return new Sk.builtin.nmber(self.v.mag());\n\t});\n\n\t$loc.add = new Sk.builtin.func(function (self, vec) {\n\t // add()\tAdds one vector to another\n var new_vec = Sk.misceval.callsim(mod.PVector);\n\t new_vec.v = self.v.add(vec.v);\n\t return new_vec;\n\t});\n\n\t$loc.sub = new Sk.builtin.func(function (self, vec) {\n\t // sub()\tSubtracts one vector from another\n var new_vec = Sk.misceval.callsim(mod.PVector);\n\t new_vec.v = self.v.sub(vec.v);\n\t return new_vec;\n\t});\n\n\t$loc.mult = new Sk.builtin.func(function (self, vec) {\n\t // mult()\tMultiplies the vector by a scalar\n var new_vec = Sk.misceval.callsim(mod.PVector);\n\t new_vec.v = self.v.mult(vec.v);\n\t return new_vec;\n\t});\n\n\t$loc.div = new Sk.builtin.func(function (self, vec) {\n\t // div()\tDivides the vector by a scalar\n var new_vec = Sk.misceval.callsim(mod.PVector);\n\t new_vec.v = self.v.dic(vec.v);\n\t return new_vec;\n\t});\n\n\t$loc.dist = new Sk.builtin.func(function (self, vec) {\n\t // dist()\tCalculate the Euclidean distance between two points\n\t return new Sk.builtin.nmber(self.v.dist(vec.v));\n\t});\n\n\t$loc.dot = new Sk.builtin.func(function (self, v1, v2, v3) {\n\t // dot()\tCalculates the dot product\n\t // returns float\n\t // vec.dot(x,y,z)\n\t // vec.dot(v)\t \n\t if (typeof(v2) === 'undefined') {\n\t\treturn new Sk.builtin.nmber(self.v.dot(v1.v));\n\t } else {\n\t\treturn new Sk.builtin.nmber(self.v.dot(v1.v, v2.v, v3.v));\n\t }\n\t});\n\n\t$loc.cross = new Sk.builtin.func(function (self, vec) {\n\t // cross()\tCalculates the cross product\n var new_vec = Sk.misceval.callsim(mod.PVector);\n\t new_vec.v = self.v.cross(vec.v);\n\t return new_vec;\n\t});\n\n\t$loc.normalize = new Sk.builtin.func(function (self) {\n\t // normalize()\tNormalizes the vector\n\t self.v.normalize(vec.v);\n\t});\n\n\t$loc.limit = new Sk.builtin.func(function (self, value) {\n\t // limit()\tLimits the magnitude of the vector\n\t self.v.limit(value.v);\n\t});\n\n\t$loc.angleBetween = new Sk.builtin.func(function (self, vec) {\n\t // angleBetween()\tCalculates the angle between two vectors\n\t return new Sk.builtin.nmber(self.v.angleBetween(vec.v));\n\t});\n\n\t$loc.array = new Sk.builtin.func(function (self) {\n\t // array()\t\n\t return new Sk.builtin.list(self.v.array());\n\t});\n };\n\n fontClass = function ($gbl, $loc) {\n $loc.__init__ = new Sk.builtin.func(function (self, input) {\n\t // PFont()\n\t // PFont(input)\n if (typeof(input) === \"undefined\") {\n\t\tself.v = new mod.processing.PFont();\n } else {\n\t\tself.v = new mod.processing.PVector(input.v);\n\t }\n });\n\n $loc.list = new Sk.builtin.func(function (self) {\n\t // font.list()\n\t return new Sk.builtin.list(self.v.list());\n\t});\n };\n\n graphicsClass = function ($gbl, $loc) {\n $loc.__init__ = new Sk.builtin.func(function (self, x, y, z) {\n\t // PGraphics()\n\t // PGraphics(width,height)\n\t // PGraphics(width,height,applet)\n if (typeof(x) === \"undefined\") {\n\t\tself.v = new mod.processing.PVector();\n } else if (typeof(z) === \"undefined\") {\n\t\tself.v = new mod.processing.PVector(x.v, y.v);\n } else {\n\t\tself.v = new mod.processing.PVector(x.v, y.v, z.v);\n\t }\n });\n\n $loc.beginDraw = new Sk.builtin.func(function (self) {\n\t self.v.beginDraw();\n\t});\n\n $loc.endDraw = new Sk.builtin.func(function (self) {\n\t self.v.endDraw();\n\t});\n };\n \n shapeClass = function ($gbl, $loc) {\n $loc.__init__ = new Sk.builtin.func(function (self, arg1, arg2, arg3) {\n\t if (typeof(arg1) === \"undefined\") {\n\t\t// special version for Skulpt\n\t\tself.v = null;\n\t\t// Will fill in manually in getChild()\n\t } else if (typeof(arg2) === \"undefined\") {\n\t\tself.v = new mod.processing.PShapeSVG(arg1.v);\n\t } else if (typeof(arg3) === \"undefined\") {\n\t\tself.v = new mod.processing.PShapeSVG(arg1.v, arg2.v);\n\t } else {\n\t\tself.v = new mod.processing.PShapeSVG(arg1.v, arg2.v, arg3.v);\n\t }\n });\n\n $loc.__getattr__ = new Sk.builtin.func(function (self, key) {\n\t key = Sk.ffi.remapToJs(key);\n if (key === \"width\") {\n return new Sk.builtin.nmber(self.v.width);\n } else if (key === \"height\") {\n return new Sk.builtin.nmber(self.v.height);\n\t }\n\t});\n\n $loc.isVisible = new Sk.builtin.func(function (self) {\n\t // isVisible() Returns a boolean value \"true\" if the image is set to be visible, \"false\" if not\n\t return new Sk.builtin.bool(self.v.isVisible());\n\t});\n\n $loc.setVisible = new Sk.builtin.func(function (self, value) {\n\t // setVisible() Sets the shape to be visible or invisible\n\t self.v.setVisible(value.v);\n\t});\n\n $loc.disableStyle = new Sk.builtin.func(function (self) {\n\t // disableStyle() Disables the shape's style data and uses Processing styles\n\t self.v.disableStyle();\n\t});\n\n $loc.enableStyle = new Sk.builtin.func(function (self) {\n\t // enableStyle() Enables the shape's style data and ignores the Processing styles\n\t self.v.enableStyle();\n\t});\n\n $loc.getChild = new Sk.builtin.func(function (self, shape) {\n\t // getChild() Returns a child element of a shape as a PShapeSVG object\n\t var child = self.v.getChild(shape.v);\n\t if (child != null) {\n\t\t// special method for Skulpt:\n\t\tvar new_shape = Sk.misceval.callsim(mod.PShapeSVG);\n\t\t// Now fill in value:\n\t\tnew_shape.v = child;\n\t\treturn new_shape;\n\t } else {\n\t\treturn null;\n\t }\n\t});\n\n $loc.translate = new Sk.builtin.func(function (self, x, y, z) {\n\t // translate() Displaces the shape\n\t // sh.translate(x,y)\n\t // sh.translate(x,y,z)\n if (typeof(z) === \"undefined\") {\n\t\tself.v.translate(x.v, y.v);\n\t } else {\n\t\tself.v.translate(x.v, y.v, z.v);\n\t }\n\t});\n\n $loc.rotate = new Sk.builtin.func(function (self, angle) {\n\t // rotate() Rotates the shape\n\t self.v.rotate(angle.v);\n\t});\n\n $loc.rotateX = new Sk.builtin.func(function (self, angle) {\n\t // rotateX() Rotates the shape around the x-axis\n\t self.v.rotateX(angle.v);\n\t});\n\n $loc.rotateY = new Sk.builtin.func(function (self) {\n\t // rotateY() Rotates the shape around the y-axis\n\t self.v.rotateY(angle.v);\n\t});\n\n $loc.rotateZ = new Sk.builtin.func(function (self) {\n\t // rotateZ() Rotates the shape around the z-axis\n\t self.v.rotateZ(angle.v);\n\t});\n\n $loc.scale = new Sk.builtin.func(function (self, x, y, z) {\n\t // scale() Increases and decreases the size of a shape\n\t // sh.scale(size)\n\t // sh.scale(x,y)\n\t // sh.scale(x,y,z)\n if (typeof(y) === \"undefined\") {\n\t\tself.v.scale(x.v);\n\t } else if (typeof(z) === \"undefined\") {\n\t\tself.v.scale(x.v, y.v);\n\t } else {\n\t\tself.v.scale(x.v, y.v, z.v);\n\t }\n\t});\n };\n\n mod.PFont = Sk.misceval.buildClass(mod, fontClass, \"PFont\", []);\n mod.PGraphics = Sk.misceval.buildClass(mod, graphicsClass, \"PGraphics\", []);\n mod.PShapeSVG = Sk.misceval.buildClass(mod, shapeClass, \"PShapeSVG\", []);\n mod.PVector = Sk.misceval.buildClass(mod, vectorClass, \"PVector\", []);\n mod.PImage = Sk.misceval.buildClass(mod, imageClass, \"PImage\", []);\n\n return mod;\n};\n", "src/lib/sre_constants.py": "raise NotImplementedError(\"sre_constants is not yet implemented in Skulpt\")\n", "src/lib/atexit.py": "raise NotImplementedError(\"atexit is not yet implemented in Skulpt\")\n", "src/lib/compileall.py": "raise NotImplementedError(\"compileall is not yet implemented in Skulpt\")\n", "src/lib/symtable.py": "raise NotImplementedError(\"symtable is not yet implemented in Skulpt\")\n", "src/lib/getopt.py": "raise NotImplementedError(\"getopt is not yet implemented in Skulpt\")\n", "src/lib/warnings.py": "raise NotImplementedError(\"warnings is not yet implemented in Skulpt\")\n", "src/lib/cookielib.py": "raise NotImplementedError(\"cookielib is not yet implemented in Skulpt\")\n", "src/lib/timeit.py": "raise NotImplementedError(\"timeit is not yet implemented in Skulpt\")\n", "src/lib/pythonds/basic/deque.py": "# Bradley N. Miller, David L. Ranum\n# Introduction to Data Structures and Algorithms in Python\n# Copyright 2005\n# \n#deque.py\r\n\r\n\r\nclass Deque:\r\n def __init__(self):\r\n self.items = []\r\n\r\n def isEmpty(self):\r\n return self.items == []\r\n\r\n def addFront(self, item):\r\n self.items.append(item)\r\n\r\n def addRear(self, item):\r\n self.items.insert(0,item)\r\n\r\n def removeFront(self):\r\n return self.items.pop()\r\n\r\n def removeRear(self):\r\n return self.items.pop(0)\r\n\r\n def size(self):\r\n return len(self.items)\r\n", "src/lib/random.js": "/*\n I've wrapped Makoto Matsumoto and Takuji Nishimura's code in a namespace\n so it's better encapsulated. Now you can have multiple random number generators\n and they won't stomp all over eachother's state.\n\n If you want to use this as a substitute for Math.random(), use the random()\n method like so:\n\n var m = new MersenneTwister();\n var randomNumber = m.random();\n\n You can also call the other genrand_{foo}() methods on the instance.\n\n If you want to use a specific seed in order to get a repeatable random\n sequence, pass an integer into the constructor:\n\n var m = new MersenneTwister(123);\n\n and that will always produce the same random sequence.\n\n Sean McCullough (banksean@gmail.com)\n */\n\n/* \n A C-program for MT19937, with initialization improved 2002/1/26.\n Coded by Takuji Nishimura and Makoto Matsumoto.\n\n Before using, initialize the state by using init_genrand(seed)\n or init_by_array(init_key, key_length).\n\n Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,\n All rights reserved.\n\n Redistribution and use in source and binary forms, with or without\n modification, are permitted provided that the following conditions\n are met:\n\n 1. Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in the\n documentation and/or other materials provided with the distribution.\n\n 3. The names of its contributors may not be used to endorse or promote\n products derived from this software without specific prior written\n permission.\n\n THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\n Any feedback is very welcome.\n http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html\n email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space)\n */\n\nvar MersenneTwister = function (seed) {\n if (seed == undefined) {\n seed = new Date().getTime();\n }\n /* Period parameters */\n this.N = 624;\n this.M = 397;\n this.MATRIX_A = 0x9908b0df;\n /* constant vector a */\n this.UPPER_MASK = 0x80000000;\n /* most significant w-r bits */\n this.LOWER_MASK = 0x7fffffff;\n /* least significant r bits */\n\n this.mt = new Array(this.N);\n /* the array for the state vector */\n this.mti = this.N + 1;\n /* mti==N+1 means mt[N] is not initialized */\n\n this.init_genrand(seed);\n}\n\n/* initializes mt[N] with a seed */\nMersenneTwister.prototype.init_genrand = function (s) {\n this.mt[0] = s >>> 0;\n for (this.mti = 1; this.mti < this.N; this.mti++) {\n var s = this.mt[this.mti - 1] ^ (this.mt[this.mti - 1] >>> 30);\n this.mt[this.mti] = (((((s & 0xffff0000) >>> 16) * 1812433253) << 16) + (s & 0x0000ffff) * 1812433253)\n + this.mti;\n /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */\n /* In the previous versions, MSBs of the seed affect */\n /* only MSBs of the array mt[]. */\n /* 2002/01/09 modified by Makoto Matsumoto */\n this.mt[this.mti] >>>= 0;\n /* for >32 bit machines */\n }\n}\n\n/* initialize by an array with array-length */\n/* init_key is the array for initializing keys */\n/* key_length is its length */\n/* slight change for C++, 2004/2/26 */\nMersenneTwister.prototype.init_by_array = function (init_key, key_length) {\n var i, j, k;\n this.init_genrand(19650218);\n i = 1;\n j = 0;\n k = (this.N > key_length ? this.N : key_length);\n for (; k; k--) {\n var s = this.mt[i - 1] ^ (this.mt[i - 1] >>> 30)\n this.mt[i] = (this.mt[i] ^ (((((s & 0xffff0000) >>> 16) * 1664525) << 16) + ((s & 0x0000ffff) * 1664525)))\n + init_key[j] + j;\n /* non linear */\n this.mt[i] >>>= 0;\n /* for WORDSIZE > 32 machines */\n i++;\n j++;\n if (i >= this.N) {\n this.mt[0] = this.mt[this.N - 1];\n i = 1;\n }\n if (j >= key_length) {\n j = 0;\n }\n }\n for (k = this.N - 1; k; k--) {\n var s = this.mt[i - 1] ^ (this.mt[i - 1] >>> 30);\n this.mt[i] = (this.mt[i] ^ (((((s & 0xffff0000) >>> 16) * 1566083941) << 16) + (s & 0x0000ffff) * 1566083941))\n - i;\n /* non linear */\n this.mt[i] >>>= 0;\n /* for WORDSIZE > 32 machines */\n i++;\n if (i >= this.N) {\n this.mt[0] = this.mt[this.N - 1];\n i = 1;\n }\n }\n\n this.mt[0] = 0x80000000;\n /* MSB is 1; assuring non-zero initial array */\n}\n\n/* generates a random number on [0,0xffffffff]-interval */\nMersenneTwister.prototype.genrand_int32 = function () {\n var y;\n var mag01 = new Array(0x0, this.MATRIX_A);\n /* mag01[x] = x * MATRIX_A for x=0,1 */\n\n if (this.mti >= this.N) { /* generate N words at one time */\n var kk;\n\n if (this.mti == this.N + 1) /* if init_genrand() has not been called, */\n {\n this.init_genrand(5489);\n }\n /* a default initial seed is used */\n\n for (kk = 0; kk < this.N - this.M; kk++) {\n y = (this.mt[kk] & this.UPPER_MASK) | (this.mt[kk + 1] & this.LOWER_MASK);\n this.mt[kk] = this.mt[kk + this.M] ^ (y >>> 1) ^ mag01[y & 0x1];\n }\n for (; kk < this.N - 1; kk++) {\n y = (this.mt[kk] & this.UPPER_MASK) | (this.mt[kk + 1] & this.LOWER_MASK);\n this.mt[kk] = this.mt[kk + (this.M - this.N)] ^ (y >>> 1) ^ mag01[y & 0x1];\n }\n y = (this.mt[this.N - 1] & this.UPPER_MASK) | (this.mt[0] & this.LOWER_MASK);\n this.mt[this.N - 1] = this.mt[this.M - 1] ^ (y >>> 1) ^ mag01[y & 0x1];\n\n this.mti = 0;\n }\n\n y = this.mt[this.mti++];\n\n /* Tempering */\n y ^= (y >>> 11);\n y ^= (y << 7) & 0x9d2c5680;\n y ^= (y << 15) & 0xefc60000;\n y ^= (y >>> 18);\n\n return y >>> 0;\n}\n\n/* generates a random number on [0,0x7fffffff]-interval */\nMersenneTwister.prototype.genrand_int31 = function () {\n return (this.genrand_int32() >>> 1);\n}\n\n/* generates a random number on [0,1]-real-interval */\nMersenneTwister.prototype.genrand_real1 = function () {\n return this.genrand_int32() * (1.0 / 4294967295.0);\n /* divided by 2^32-1 */\n}\n\n/* generates a random number on [0,1)-real-interval */\nMersenneTwister.prototype.random = function () {\n return this.genrand_int32() * (1.0 / 4294967296.0);\n /* divided by 2^32 */\n}\n\n/* generates a random number on (0,1)-real-interval */\nMersenneTwister.prototype.genrand_real3 = function () {\n return (this.genrand_int32() + 0.5) * (1.0 / 4294967296.0);\n /* divided by 2^32 */\n}\n\n/* generates a random number on [0,1) with 53-bit resolution*/\nMersenneTwister.prototype.genrand_res53 = function () {\n var a = this.genrand_int32() >>> 5, b = this.genrand_int32() >>> 6;\n return(a * 67108864.0 + b) * (1.0 / 9007199254740992.0);\n}\n\n/* These real versions are due to Isaku Wada, 2002/01/09 added */\n\n\nvar $builtinmodule = function (name) {\n\n var mod = {};\n\n var myGenerator = new MersenneTwister();\n\n mod.seed = new Sk.builtin.func(function (x) {\n Sk.builtin.pyCheckArgs(\"seed\", arguments, 0, 1);\n x = Sk.builtin.asnum$(x);\n\n if (arguments.length > 0) {\n myGenerator = new MersenneTwister(x);\n }\n else {\n myGenerator = new MersenneTwister();\n }\n\n return Sk.builtin.none.none$;\n });\n\n mod.random = new Sk.builtin.func(function () {\n Sk.builtin.pyCheckArgs(\"random\", arguments, 0, 0);\n\n return new Sk.builtin.nmber(myGenerator.genrand_res53(), Sk.builtin.nmber.float$);\n });\n\n var toInt = function (num) {\n return num | 0;\n };\n\n var randrange = function (start, stop, step) {\n // Ported from CPython 2.7\n var width, n, ret;\n\n if (!Sk.builtin.checkInt(start)) {\n throw new Sk.builtin.ValueError(\"non-integer first argument for randrange()\");\n }\n ;\n\n if (stop === undefined) {\n // Random in [0, start)\n ret = toInt(myGenerator.genrand_res53() * start);\n return new Sk.builtin.nmber(ret, Sk.builtin.nmber.int$);\n }\n ;\n\n if (!Sk.builtin.checkInt(stop)) {\n throw new Sk.builtin.ValueError(\"non-integer stop for randrange()\");\n }\n ;\n\n if (step === undefined) {\n step = 1;\n }\n ;\n\n width = stop - start;\n\n if ((step == 1) && (width > 0)) {\n // Random in [start, stop), must use toInt on product for correct results with negative ranges\n ret = start + toInt(myGenerator.genrand_res53() * width);\n return new Sk.builtin.nmber(ret, Sk.builtin.nmber.int$);\n }\n ;\n\n if (step == 1) {\n throw new Sk.builtin.ValueError(\"empty range for randrange() (\" + start + \", \" + stop + \", \" + width + \")\");\n }\n ;\n\n if (!Sk.builtin.checkInt(step)) {\n throw new Sk.builtin.ValueError(\"non-integer step for randrange()\");\n }\n ;\n\n if (step > 0) {\n n = toInt((width + step - 1) / step);\n } else if (step < 0) {\n n = toInt((width + step + 1) / step);\n } else {\n throw new Sk.builtin.ValueError(\"zero step for randrange()\");\n }\n ;\n\n if (n <= 0) {\n throw new Sk.builtin.ValueError(\"empty range for randrange()\");\n }\n ;\n\n // Random in range(start, stop, step)\n ret = start + (step * toInt(myGenerator.genrand_res53() * n));\n return new Sk.builtin.nmber(ret, Sk.builtin.nmber.int$);\n };\n\n mod.randint = new Sk.builtin.func(function (a, b) {\n Sk.builtin.pyCheckArgs(\"randint\", arguments, 2, 2);\n\n a = Sk.builtin.asnum$(a);\n b = Sk.builtin.asnum$(b);\n return randrange(a, b + 1);\n });\n\n mod.randrange = new Sk.builtin.func(function (start, stop, step) {\n Sk.builtin.pyCheckArgs(\"randrange\", arguments, 1, 3);\n\n start = Sk.builtin.asnum$(start);\n stop = Sk.builtin.asnum$(stop);\n step = Sk.builtin.asnum$(step);\n return randrange(start, stop, step);\n });\n \n mod.uniform = new Sk.builtin.func(function (a, b) {\n Sk.builtin.pyCheckArgs(\"uniform\", arguments, 2, 2);\n\n a = Sk.builtin.asnum$(a);\n b = Sk.builtin.asnum$(b);\n var rnd = myGenerator.genrand_res53();\n c = a + rnd * (b - a)\n return new Sk.builtin.nmber(c, Sk.builtin.nmber.float$);\n });\n\n mod.choice = new Sk.builtin.func(function (seq) {\n Sk.builtin.pyCheckArgs(\"choice\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"seq\", \"sequence\", Sk.builtin.checkSequence(seq));\n\n if (seq.sq$length !== undefined) {\n var r = toInt(myGenerator.genrand_res53() * seq.sq$length());\n return seq.mp$subscript(r);\n } else {\n throw new Sk.builtin.TypeError(\"object has no length\");\n }\n });\n\n mod.shuffle = new Sk.builtin.func(function (x) {\n Sk.builtin.pyCheckArgs(\"shuffle\", arguments, 1, 1);\n Sk.builtin.pyCheckType(\"x\", \"sequence\", Sk.builtin.checkSequence(x));\n\n if (x.sq$length !== undefined) {\n if (x.mp$ass_subscript !== undefined) {\n for (var i = x.sq$length() - 1; i > 0; i -= 1) {\n var r = toInt(myGenerator.genrand_res53() * (i + 1));\n var tmp = x.mp$subscript(r);\n x.mp$ass_subscript(r, x.mp$subscript(i));\n x.mp$ass_subscript(i, tmp);\n }\n ;\n } else {\n throw new Sk.builtin.TypeError(\"object is immutable\");\n }\n ;\n } else {\n throw new Sk.builtin.TypeError(\"object has no length\");\n }\n ;\n\n return Sk.builtin.none.none$;\n });\n\n return mod;\n}\n", "src/lib/pprint.py": "raise NotImplementedError(\"pprint is not yet implemented in Skulpt\")\n", "src/lib/mutex.py": "raise NotImplementedError(\"mutex is not yet implemented in Skulpt\")\n", "src/lib/xml/sax/__init__.py": "raise NotImplementedError(\"sax is not yet implemented in Skulpt\")\n", "src/lib/mimetypes.py": "raise NotImplementedError(\"mimetypes is not yet implemented in Skulpt\")\n", "src/lib/aifc.py": "raise NotImplementedError(\"aifc is not yet implemented in Skulpt\")\n", "src/lib/unittest/__init__.py": "__author__ = 'bmiller'\n'''\nThis is the start of something that behaves like\nthe unittest module from cpython.\n\n'''\n\n\nclass TestCase:\n def __init__(self):\n self.numPassed = 0\n self.numFailed = 0\n self.assertPassed = 0\n self.assertFailed = 0\n self.verbose = True\n self.tlist = []\n testNames = {}\n for name in dir(self):\n if name[:4] == 'test' and name not in testNames:\n self.tlist.append(getattr(self,name))\n testNames[name]=True\n\n def setup(self):\n pass\n\n def tearDown(self):\n pass\n def cleanName(self,funcName):\n # work around skulpts lack of an __name__ \n funcName = str(funcName)\n funcName = funcName[13:]\n funcName = funcName[:funcName.find('<')-3]\n return funcName\n \n def main(self):\n\n for func in self.tlist:\n if self.verbose:\n print 'Running %s' % self.cleanName(func)\n try:\n self.setup()\n self.assertPassed = 0\n self.assertFailed = 0\n func()\n self.tearDown()\n if self.assertFailed == 0:\n self.numPassed += 1\n else:\n self.numFailed += 1\n print 'Tests failed in %s ' % self.cleanName(func)\n except Exception as e:\n self.assertFailed += 1\n self.numFailed += 1\n print 'Test threw exception in %s (%s)' % (self.cleanName(func), e)\n self.showSummary()\n\n def assertEqual(self, actual, expected, feedback=\"\"):\n res = actual==expected\n self.appendResult(res,str(actual)+' to be equal to ',expected, feedback)\n\n def assertNotEqual(self, actual, expected, feedback=\"\"):\n res = actual != expected\n self.appendResult(res,str(actual)+' to not equal ',expected,feedback)\n\n def assertTrue(self,x, feedback=\"\"):\n res = bool(x) is True\n self.appendResult(res,str(x)+' to be ',True,feedback)\n\n def assertFalse(self,x, feedback=\"\"):\n res = not bool(x)\n self.appendResult(res,str(x)+' to be ',False,feedback)\n\n def assertIs(self,a,b, feedback=\"\"):\n res = a is b\n self.appendResult(res,str(a)+' to be the same object as ',b,feedback)\n\n def assertIsNot(self,a,b, feedback=\"\"):\n res = a is not b\n self.appendResult(res,str(a)+' to not be the same object as ',b,feedback)\n\n def assertIsNone(self,x, feedback=\"\"):\n res = x is None\n self.appendResult(res,x,None,feedback)\n\n def assertIsNotNone(self,x, feedback=\"\"):\n res = x is not None\n self.appendResult(res,str(x)+' to not be ',None,feedback)\n\n def assertIn(self,a,b, feedback=\"\"):\n res = a in b\n self.appendResult(res,str(a)+' to be in ',b,feedback)\n\n def assertNotIn(self,a,b, feedback=\"\"):\n res = a not in b\n self.appendResult(res,str(a)+' to not be in ',b,feedback)\n\n def assertIsInstance(self,a,b, feedback=\"\"):\n res = isinstance(a,b)\n self.appendResult(res,str(a)+' to be an instance of ',b,feedback)\n\n def assertNotIsInstance(self,a,b, feedback=\"\"):\n res = not isinstance(a,b)\n self.appendResult(res,str(a)+' to not be an instance of ',b,feedback)\n\n def assertAlmostEqual(self, a, b, places=7, feedback=\"\"):\n res = round(a-b, places) == 0\n self.appendResult(res,str(a)+' to equal ',b,feedback)\n\n def assertNotAlmostEqual(self, a, b, places=7, feedback=\"\"):\n res = round(a-b, places) != 0\n self.appendResult(res,str(a)+' to not equal ',b,feedback)\n\n def assertGreater(self,a,b, feedback=\"\"):\n res = a > b\n self.appendResult(res,str(a)+' to be greater than ',b,feedback)\n\n def assertGreaterEqual(self,a,b, feedback=\"\"):\n res = a >= b\n self.appendResult(res,str(a)+' to be greater than or equal to ',b,feedback)\n\n def assertLess(self,a,b, feedback=\"\"):\n res = a < b\n self.appendResult(res,str(a)+' to be less than ',b,feedback)\n\n def assertLessEqual(self,a,b, feedback=\"\"):\n res = a <= b\n self.appendResult(res,str(a)+' to be less than or equal to ',b,feedback)\n\n def appendResult(self,res,actual,expected,feedback):\n if res:\n msg = 'Pass'\n self.assertPassed += 1\n else:\n msg = 'Fail: expected %s got %s ' % (str(actual),str(expected)) + feedback\n print msg\n self.assertFailed += 1\n\n def assertRaises(self, exception, callable=None, *args, **kwds):\n # with is currently not supported hence we just try and catch\n if callable is None:\n raise NotImplementedError(\"assertRaises does currently not support assert contexts\")\n if kwds:\n raise NotImplementedError(\"assertRaises does currently not support **kwds\")\n\n res = False\n actualerror = str(exception())\n try:\n callable(*args)\n except exception as ex:\n res = True\n except Exception as inst:\n actualerror = str(inst)\n print(\"ACT = \", actualerror, str(exception()))\n else:\n actualerror = \"No Error\"\n\n self.appendResult(res, str(exception()), actualerror, \"\")\n \n def fail(self, msg=None):\n if msg is None:\n msg = 'Fail'\n else:\n msg = 'Fail: ' + msg\n print msg\n self.assertFailed += 1\n\n def showSummary(self):\n pct = self.numPassed / (self.numPassed+self.numFailed) * 100\n print \"Ran %d tests, passed: %d failed: %d\\n\" % (self.numPassed+self.numFailed,\n self.numPassed, self.numFailed)\n\n\n\ndef main(verbose=False, names=None):\n glob = globals() # globals() still needs work\n if names == None:\n names = glob\n for name in names:\n if issubclass(glob[name],TestCase):\n try:\n tc = glob[name]()\n tc.verbose = verbose\n tc.main()\n except:\n print(\"Uncaught Error in: \", name)\n\n", "src/lib/idlelib/__init__.py": "raise NotImplementedError(\"idlelib is not yet implemented in Skulpt\")\n", "src/lib/formatter.py": "raise NotImplementedError(\"formatter is not yet implemented in Skulpt\")\n", "src/lib/tabnanny.py": "raise NotImplementedError(\"tabnanny is not yet implemented in Skulpt\")\n", "src/lib/urllib/__init__.js": "var $builtinmodule = function (name) {\n var urllib = {};\n\n return urllib;\n};\n", "src/lib/base64.py": "raise NotImplementedError(\"base64 is not yet implemented in Skulpt\")\n", "src/lib/sqlite3/__init__.py": "", "src/lib/abc.py": "raise NotImplementedError(\"abc is not yet implemented in Skulpt\")\n", "src/lib/string.py": "raise NotImplementedError(\"string is not yet implemented in Skulpt\")\n", "src/builtin/this.py": "s = \"\"\"Gur Mra bs Clguba, ol Gvz Crgref\n\nOrnhgvshy vf orggre guna htyl.\nRkcyvpvg vf orggre guna vzcyvpvg.\nFvzcyr vf orggre guna pbzcyrk.\nPbzcyrk vf orggre guna pbzcyvpngrq.\nSyng vf orggre guna arfgrq.\nFcnefr vf orggre guna qrafr.\nErnqnovyvgl pbhagf.\nFcrpvny pnfrf nera'g fcrpvny rabhtu gb oernx gur ehyrf.\nNygubhtu cenpgvpnyvgl orngf chevgl.\nReebef fubhyq arire cnff fvyragyl.\nHayrff rkcyvpvgyl fvyraprq.\nVa gur snpr bs nzovthvgl, ershfr gur grzcgngvba gb thrff.\nGurer fubhyq or bar-- naq cersrenoyl bayl bar --boivbhf jnl gb qb vg.\nNygubhtu gung jnl znl abg or boivbhf ng svefg hayrff lbh'er Qhgpu.\nAbj vf orggre guna arire.\nNygubhtu arire vf bsgra orggre guna *evtug* abj.\nVs gur vzcyrzragngvba vf uneq gb rkcynva, vg'f n onq vqrn.\nVs gur vzcyrzragngvba vf rnfl gb rkcynva, vg znl or n tbbq vqrn.\nAnzrfcnprf ner bar ubaxvat terng vqrn -- yrg'f qb zber bs gubfr!\"\"\"\n\nd = {}\nfor c in (65, 97):\n for i in range(26):\n d[chr(i+c)] = chr((i+13) % 26 + c)\n\nprint \"\".join([d.get(c, c) for c in s])\n", "src/lib/token.py": "raise NotImplementedError(\"token is not yet implemented in Skulpt\")\n", "src/lib/multiprocessing/dummy/__init__.py": "raise NotImplementedError(\"dummy is not yet implemented in Skulpt\")\n", "src/lib/xml/__init__.py": "raise NotImplementedError(\"xml is not yet implemented in Skulpt\")\n", "src/lib/pythonds/trees/binheap.py": "# Bradley N. Miller, David L. Ranum\n# Introduction to Data Structures and Algorithms in Python\n# Copyright 2005\n# \n\n# this heap takes key value pairs, we will assume that the keys are integers\nclass BinHeap:\n def __init__(self):\n self.heapList = [0]\n self.currentSize = 0\n\n\n def buildHeap(self,alist):\n i = len(alist) // 2\n self.currentSize = len(alist)\n self.heapList = [0] + alist[:]\n print(len(self.heapList), i)\n while (i > 0):\n print(self.heapList, i)\n self.percDown(i)\n i = i - 1\n print(self.heapList,i)\n \n def percDown(self,i):\n while (i * 2) <= self.currentSize:\n mc = self.minChild(i)\n if self.heapList[i] > self.heapList[mc]:\n tmp = self.heapList[i]\n self.heapList[i] = self.heapList[mc]\n self.heapList[mc] = tmp\n i = mc\n \n def minChild(self,i):\n if i * 2 + 1 > self.currentSize:\n return i * 2\n else:\n if self.heapList[i * 2] < self.heapList[i * 2 + 1]:\n return i * 2\n else:\n return i * 2 + 1\n\n def percUp(self,i):\n while i // 2 > 0:\n if self.heapList[i] < self.heapList[i//2]:\n tmp = self.heapList[i // 2]\n self.heapList[i // 2] = self.heapList[i]\n self.heapList[i] = tmp\n i = i // 2\n \n def insert(self,k):\n self.heapList.append(k)\n self.currentSize = self.currentSize + 1\n self.percUp(self.currentSize)\n\n def delMin(self):\n retval = self.heapList[1]\n self.heapList[1] = self.heapList[self.currentSize]\n self.currentSize = self.currentSize - 1\n self.heapList.pop()\n self.percDown(1)\n return retval\n \n def isEmpty(self):\n if currentSize == 0:\n return True\n else:\n return False\n", "src/lib/copy_reg.py": "raise NotImplementedError(\"copy_reg is not yet implemented in Skulpt\")\n", "src/lib/distutils/__init__.py": "raise NotImplementedError(\"distutils is not yet implemented in Skulpt\")\n", "src/lib/pty.py": "raise NotImplementedError(\"pty is not yet implemented in Skulpt\")\n", "src/lib/urllib2.py": "raise NotImplementedError(\"urllib2 is not yet implemented in Skulpt\")\n", "src/lib/Queue.py": "raise NotImplementedError(\"Queue is not yet implemented in Skulpt\")\n", "src/lib/time.js": "/*\n implementation of the Python time package.\n\n For higher res time we could use following apart from new Date:\n window.performance.now()\n\n notes:\n - struct_time is a named tuple that has extra methods: 'n_fields', 'n_sequence_fields', 'n_unnamed_fields',\n */\n\nvar $builtinmodule = function (name) {\n var mod = {};\n\n var struct_time_fields = ['tm_year', 'tm_mon', 'tm_mday', 'tm_hour', 'tm_min', 'tm_sec', 'tm_wday', 'tm_yday', 'tm_isdst'];\n\n var struct_time_f = Sk.builtin.make_structseq('time', 'struct_time', struct_time_fields);\n mod.struct_time = struct_time_f;\n\n mod.time = new Sk.builtin.func(function () {\n var res = new Date().getTime();\n if (performance && performance.now)\n {\n res = res + performance.now() % 1;\n }\n return Sk.builtin.assk$(res / 1000, undefined);\n });\n\n // This is an experimental implementation of time.sleep(), using suspensions\n mod.sleep = new Sk.builtin.func(function(delay) {\n var susp = new Sk.misceval.Suspension();\n susp.resume = function() { return Sk.builtin.none.none$; }\n susp.data = {type: \"Sk.promise\", promise: new Promise(function(resolve) {\n if (typeof setTimeout === \"undefined\") {\n // We can't sleep (eg test environment), so resume immediately\n resolve();\n } else {\n setTimeout(resolve, Sk.ffi.remapToJs(delay)*1000);\n }\n })};\n return susp;\n });\n\n function isLeapYear(year) {\n if((year & 3) != 0) return false;\n return ((year % 100) != 0 || (year % 400) == 0);\n };\n\n function getDayOfYear(date,utc) {\n utc = utc || false;\n var dayCount = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];\n var mn = utc ? date.getUTCMonth() : date.getMonth();\n var dn = utc ? date.getUTCDate() : date.getDate();\n var dayOfYear = dayCount[mn] + dn;\n if(mn > 1 && isLeapYear(utc ? date.getUTCFullYear() : date.getFullYear())) dayOfYear++;\n return dayOfYear;\n }\n\n function stdTimezoneOffset() {\n var jan = new Date(2002, 0, 1);\n var jul = new Date(2002, 6, 1);\n return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());\n }\n\n function altTimezoneOffset() {\n var jan = new Date(2002, 0, 1);\n var jul = new Date(2002, 6, 1);\n return Math.min(jan.getTimezoneOffset(), jul.getTimezoneOffset());\n } \n\n function dst(date) {\n return date.getTimezoneOffset() < stdTimezoneOffset();\n }\n\n function timeZoneName(date) {\n return /\\((.*)\\)/.exec(date.toString())[1];\n }\n\n function timeZoneNames() {\n var jan = new Date(2002, 0, 1);\n var jul = new Date(2002, 6, 1); \n if (dst(jan)) {\n return [Sk.builtin.str(timeZoneName(jul)), Sk.builtin.str(timeZoneName(jan))];\n } else {\n return [Sk.builtin.str(timeZoneName(jan)), Sk.builtin.str(timeZoneName(jul))];\n }\n }\n\n function date_to_struct_time(date, utc) {\n utc = utc || false;\n // y, m, d, hh, mm, ss, weekday, jday, dst\n return new struct_time_f(\n [\n Sk.builtin.assk$(utc ? date.getUTCFullYear() : date.getFullYear()), \n Sk.builtin.assk$((utc ? date.getUTCMonth() : date.getMonth()) + 1), // want January == 1\n Sk.builtin.assk$(utc ? date.getUTCDate() : date.getDate()), \n Sk.builtin.assk$(utc ? date.getUTCHours() : date.getHours()), \n Sk.builtin.assk$(utc ? date.getUTCMinutes() : date.getMinutes()), \n Sk.builtin.assk$(utc ? date.getUTCSeconds() : date.getSeconds()), \n Sk.builtin.assk$(((utc ? date.getUTCDay() : date.getDay()) + 6) % 7), // Want Monday == 0\n Sk.builtin.assk$(getDayOfYear(date, utc)), // Want January, 1 == 1\n Sk.builtin.assk$(utc ? 0 : (dst(date) ? 1 : 0)) // 1 for DST /0 for non-DST /-1 for unknown\n ]\n );\n }\n\n function localtime_f(secs) {\n Sk.builtin.pyCheckArgs(\"localtime\", arguments, 0, 1);\n var d = new Date();\n if (secs) {\n Sk.builtin.pyCheckType(\"secs\", \"number\", Sk.builtin.checkNumber(secs));\n var seconds = Sk.builtin.asnum$(secs);\n d.setTime(seconds * 1000);\n }\n return date_to_struct_time(d);\n }\n mod.localtime = new Sk.builtin.func(localtime_f);\n\n mod.gmtime = new Sk.builtin.func(function(secs) {\n Sk.builtin.pyCheckArgs(\"localtime\", arguments, 0, 1);\n var d = new Date();\n if (secs) {\n Sk.builtin.pyCheckType(\"secs\", \"number\", Sk.builtin.checkNumber(secs));\n var seconds = Sk.builtin.asnum$(secs);\n d.setTime(seconds * 1000);\n }\n return date_to_struct_time(d, true);\n });\n\n var monthnames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\n var daynames = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\n\n function pad2(str)\n {\n if (str.length < 2)\n {\n return \"0\" + str;\n }\n return str;\n }\n\n function pad4(str)\n {\n while (str.length < 4)\n {\n str = \"0\" + str;\n }\n return str;\n }\n\n /*\n Convert a tuple or struct_time representing a time as returned by gmtime() or localtime() to a 24-character \n string of the following form: 'Sun Jun 20 23:21:05 1993'. If t is not provided, the current time as returned \n by localtime() is used. Locale information is not used by asctime(). \n */\n function asctime(time) {\n if (!time || Sk.builtin.checkNone(time))\n {\n time = localtime_f();\n } else if (!(time instanceof struct_time_f)) {\n time = new struct_time_f(time);\n }\n if (time instanceof Sk.builtin.tuple && time.v.length == 9)\n {\n // todo: test validity??\n var parts = [];\n parts.push(daynames[Sk.builtin.asnum$(time.v[6])]);\n parts.push(monthnames[Sk.builtin.asnum$(time.v[1])]); \n parts.push(pad2(Sk.builtin.asnum$(time.v[2]).toString()));\n parts.push(\n pad2(Sk.builtin.asnum$(time.v[3]).toString()) + \":\" +\n pad2(Sk.builtin.asnum$(time.v[4]).toString()) + \":\" +\n pad2(Sk.builtin.asnum$(time.v[5]).toString())\n );\n parts.push(pad4(Sk.builtin.asnum$(time.v[0]).toString()));\n\n return Sk.builtin.str(parts.join(\" \"));\n }\n }\n\n mod.asctime = new Sk.builtin.func(function(secs) {\n return asctime(secs);\n });\n\n /*\n Convert a time expressed in seconds since the epoch to a string representing local time. If secs is not\n provided or None, the current time as returned by time() is used. ctime(secs) is equivalent to \n asctime(localtime(secs)). Locale information is not used by ctime().\n */\n mod.ctime = new Sk.builtin.func(function(secs) {\n return asctime(localtime_f(secs));\n });\n\n /*\n This is the inverse function of localtime(). Its argument is the struct_time or full 9-tuple (since the \n dst flag is needed; use -1 as the dst flag if it is unknown) which expresses the time in local time, not UTC.\n It returns a floating point number, for compatibility with time(). If the input value cannot be represented as\n a valid time, either OverflowError or ValueError will be raised (which depends on whether the invalid value is \n caught by Python or the underlying C libraries). The earliest date for which it can generate a time is \n platform-dependent. \n */\n mod.mktime = new Sk.builtin.func(function(time) {\n if (time instanceof Sk.builtin.tuple && time.v.length == 9)\n {\n var d = new Date();\n d.setFullYear(Sk.builtin.asnum$(time.v[0]));\n d.setMonth(Sk.builtin.asnum$(time.v[1])-1);\n d.setDate(Sk.builtin.asnum$(time.v[2]));\n d.setHours(Sk.builtin.asnum$(time.v[3]));\n d.setMinutes(Sk.builtin.asnum$(time.v[4]));\n d.setSeconds(Sk.builtin.asnum$(time.v[5]));\n return Sk.builtin.assk$(d.getTime() / 1000, undefined);\n }\n });\n\n /*\n The offset of the local (non-DST) timezone, in seconds west of UTC (negative in most of Western Europe, \n positive in the US, zero in the UK).\n */\n mod.timezone = Sk.builtin.assk$(stdTimezoneOffset() * 60, Sk.builtin.nmber.int$);\n\n /*\n The offset of the local DST timezone, in seconds west of UTC, if one is defined. This is negative if the\n local DST timezone is east of UTC (as in Western Europe, including the UK). Only use this if daylight is nonzero.\n */\n mod.altzone = Sk.builtin.assk$(altTimezoneOffset() * 60, Sk.builtin.nmber.int$);\n\n /*\n Nonzero if a DST timezone is defined.\n */\n mod.daylight = Sk.builtin.assk$(dst(new Date()) ? 1 : 0, Sk.builtin.nmber.int$);\n\n /*\n A tuple of two strings: the first is the name of the local non-DST timezone, the second is the name of the local \n DST timezone. If no DST timezone is defined, the second string should not be used.\n */\n mod.tzname = Sk.builtin.tuple(timeZoneNames());\n\n mod.clock = new Sk.builtin.func(function() {\n var res = 0.0;\n if (performance && performance.now)\n {\n res = performance.now() / 1000;\n } else {\n res = new Date().getTime() / 1000;\n }\n return Sk.builtin.assk$(res, Sk.builtin.nmber.float$);\n });\n\n /*\n %a Locale\u2019s abbreviated weekday name. \n %A Locale\u2019s full weekday name. \n %b Locale\u2019s abbreviated month name. \n %B Locale\u2019s full month name. \n %c Locale\u2019s appropriate date and time representation. \n %d Day of the month as a decimal number [01,31]. \n %H Hour (24-hour clock) as a decimal number [00,23]. \n %I Hour (12-hour clock) as a decimal number [01,12]. \n %j Day of the year as a decimal number [001,366]. \n %m Month as a decimal number [01,12]. \n %M Minute as a decimal number [00,59]. \n %p Locale\u2019s equivalent of either AM or PM. (1)\n %S Second as a decimal number [00,61]. (2)\n %U Week number of the year (Sunday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Sunday are considered to be in week 0. (3)\n %w Weekday as a decimal number [0(Sunday),6]. \n %W Week number of the year (Monday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Monday are considered to be in week 0. (3)\n %x Locale\u2019s appropriate date representation. \n %X Locale\u2019s appropriate time representation. \n %y Year without century as a decimal number [00,99]. \n %Y Year with century as a decimal number. \n %Z Time zone name (no characters if no time zone exists). \n %% A literal '%' character. \n */\n // accept2dyear\n mod.accept2year = function accept2year() {\n throw new Sk.builtin.NotImplementedError(\"accept2year is not implemented\")\n };\n\n // strftime()\n mod.strftime = function strftime() {\n throw new Sk.builtin.NotImplementedError(\"strftime is not implemented\")\n };\n\n // strptime()\n mod.strptime = function strptime() {\n throw new Sk.builtin.NotImplementedError(\"strptime is not implemented\")\n };\n\n // tzset()\n mod.tzset = function tzset() {\n throw new Sk.builtin.NotImplementedError(\"tzset is not implemented\")\n };\n\n return mod;\n};\n", "src/lib/xml/parsers/__init__.py": "raise NotImplementedError(\"parsers is not yet implemented in Skulpt\")\n", "src/lib/sndhdr.py": "raise NotImplementedError(\"sndhdr is not yet implemented in Skulpt\")\n", "src/lib/codeop.py": "raise NotImplementedError(\"codeop is not yet implemented in Skulpt\")\n", "src/lib/getpass.py": "raise NotImplementedError(\"getpass is not yet implemented in Skulpt\")\n", "src/lib/anydbm.py": "raise NotImplementedError(\"anydbm is not yet implemented in Skulpt\")\n", "src/lib/urlparse.py": "raise NotImplementedError(\"urlparse is not yet implemented in Skulpt\")\n", "src/lib/htmllib.py": "raise NotImplementedError(\"htmllib is not yet implemented in Skulpt\")\n", "src/lib/fnmatch.py": "raise NotImplementedError(\"fnmatch is not yet implemented in Skulpt\")\n", "src/lib/tty.py": "raise NotImplementedError(\"tty is not yet implemented in Skulpt\")\n", "src/lib/HTMLParser.py": "raise NotImplementedError(\"HTMLParser is not yet implemented in Skulpt\")\n", "src/lib/calendar.py": "raise NotImplementedError(\"calendar is not yet implemented in Skulpt\")\n", "src/lib/compiler/__init__.py": "raise NotImplementedError(\"compiler is not yet implemented in Skulpt\")\n", "src/lib/pydoc.py": "raise NotImplementedError(\"pydoc is not yet implemented in Skulpt\")\n", "src/lib/multifile.py": "raise NotImplementedError(\"multifile is not yet implemented in Skulpt\")\n", "src/lib/lib2to3/pgen2/__init__.py": "raise NotImplementedError(\"pgen2 is not yet implemented in Skulpt\")\n", "src/lib/dbhash.py": "raise NotImplementedError(\"dbhash is not yet implemented in Skulpt\")\n", "src/lib/ihooks.py": "raise NotImplementedError(\"ihooks is not yet implemented in Skulpt\")\n", "src/lib/lib2to3/tests/__init__.py": "raise NotImplementedError(\"tests is not yet implemented in Skulpt\")\n", "src/lib/genericpath.py": "raise NotImplementedError(\"genericpath is not yet implemented in Skulpt\")\n", "src/lib/webgl/matrix4.js": "// more from 'tdl'\nvar $builtinmodule = function(name)\n{\n var mod = {};\n\n var temp0v3_ = new Float32Array(3);\n var temp1v3_ = new Float32Array(3);\n var temp2v3_ = new Float32Array(3);\n\n var temp0v4_ = new Float32Array(4);\n var temp1v4_ = new Float32Array(4);\n var temp2v4_ = new Float32Array(4);\n\n var temp0m4_ = new Float32Array(16);\n var temp1m4_ = new Float32Array(16);\n var temp2m4_ = new Float32Array(16);\n\n var normalize = function(dst, a) {\n var n = 0.0;\n var aLength = a.length;\n for (var i = 0; i < aLength; ++i)\n n += a[i] * a[i];\n n = Math.sqrt(n);\n if (n > 0.00001) {\n for (var i = 0; i < aLength; ++i)\n dst[i] = a[i] / n;\n } else {\n for (var i = 0; i < aLength; ++i)\n dst[i] = 0;\n }\n return dst;\n };\n\n var cross = function(dst, a, b) {\n dst[0] = a[1] * b[2] - a[2] * b[1];\n dst[1] = a[2] * b[0] - a[0] * b[2];\n dst[2] = a[0] * b[1] - a[1] * b[0];\n return dst;\n };\n\n var subVector = function(dst, a, b) {\n var aLength = a.length;\n for (var i = 0; i < aLength; ++i)\n dst[i] = a[i] - b[i];\n return dst;\n };\n\n var dot = function(a, b) {\n return (a[0] * b[0]) + (a[1] * b[1]) + (a[2] * b[2]);\n };\n\n mod.lookAt = new Sk.builtin.func(function(view, eye, target, up)\n {\n var t0 = temp0v3_;\n var t1 = temp1v3_;\n var t2 = temp2v3_;\n\n var vz = normalize(t0, subVector(t0, eye.v, target.v));\n var vx = normalize(t1, cross(t1, up.v, vz));\n var vy = cross(t2, vz, vx);\n\n var dst = view.v;\n dst[ 0] = vx[0];\n dst[ 1] = vy[0];\n dst[ 2] = vz[0];\n dst[ 3] = 0;\n dst[ 4] = vx[1];\n dst[ 5] = vy[1];\n dst[ 6] = vz[1];\n dst[ 7] = 0;\n dst[ 8] = vx[2];\n dst[ 9] = vy[2];\n dst[10] = vz[2];\n dst[11] = 0;\n dst[12] = -dot(vx, eye.v);\n dst[13] = -dot(vy, eye.v);\n dst[14] = -dot(vz, eye.v);\n dst[15] = 1;\n\n return view;\n });\n\n mod.perspective = new Sk.builtin.func(function(proj, angle, aspect, near, far)\n {\n var f = Math.tan(Math.PI * 0.5 - 0.5 * (angle * Math.PI / 180));\n var rangeInv = 1.0 / (near - far);\n\n var dst = proj.v;\n\n dst[0] = f / aspect;\n dst[1] = 0;\n dst[2] = 0;\n dst[3] = 0;\n\n dst[4] = 0;\n dst[5] = f;\n dst[6] = 0;\n dst[7] = 0;\n\n dst[8] = 0;\n dst[9] = 0;\n dst[10] = (near + far) * rangeInv;\n dst[11] = -1;\n\n dst[12] = 0;\n dst[13] = 0;\n dst[14] = near * far * rangeInv * 2;\n dst[15] = 0;\n\n return proj;\n });\n\n // builds, not appending\n mod.rotationY = new Sk.builtin.func(function(target, angle)\n {\n var dst = target.v;\n var c = Math.cos(angle * Math.PI / 180);\n var s = Math.sin(angle * Math.PI / 180);\n\n dst[ 0] = c;\n dst[ 1] = 0;\n dst[ 2] = -s;\n dst[ 3] = 0;\n dst[ 4] = 0;\n dst[ 5] = 1;\n dst[ 6] = 0;\n dst[ 7] = 0;\n dst[ 8] = s;\n dst[ 9] = 0;\n dst[10] = c;\n dst[11] = 0;\n dst[12] = 0;\n dst[13] = 0;\n dst[14] = 0;\n dst[15] = 1;\n\n return target;\n });\n\n mod.identity = new Sk.builtin.func(function(target)\n {\n var dst = target.v;\n dst[ 0] = 1;\n dst[ 1] = 0;\n dst[ 2] = 0;\n dst[ 3] = 0;\n dst[ 4] = 0;\n dst[ 5] = 1;\n dst[ 6] = 0;\n dst[ 7] = 0;\n dst[ 8] = 0;\n dst[ 9] = 0;\n dst[10] = 1;\n dst[11] = 0;\n dst[12] = 0;\n dst[13] = 0;\n dst[14] = 0;\n dst[15] = 1;\n return target;\n });\n\n // row major\n mod.mul = new Sk.builtin.func(function(target, x, y)\n {\n var dst = target.v;\n var a = x.v;\n var b = y.v;\n var a00 = a[0];\n var a01 = a[1];\n var a02 = a[2];\n var a03 = a[3];\n var a10 = a[ 4 + 0];\n var a11 = a[ 4 + 1];\n var a12 = a[ 4 + 2];\n var a13 = a[ 4 + 3];\n var a20 = a[ 8 + 0];\n var a21 = a[ 8 + 1];\n var a22 = a[ 8 + 2];\n var a23 = a[ 8 + 3];\n var a30 = a[12 + 0];\n var a31 = a[12 + 1];\n var a32 = a[12 + 2];\n var a33 = a[12 + 3];\n var b00 = b[0];\n var b01 = b[1];\n var b02 = b[2];\n var b03 = b[3];\n var b10 = b[ 4 + 0];\n var b11 = b[ 4 + 1];\n var b12 = b[ 4 + 2];\n var b13 = b[ 4 + 3];\n var b20 = b[ 8 + 0];\n var b21 = b[ 8 + 1];\n var b22 = b[ 8 + 2];\n var b23 = b[ 8 + 3];\n var b30 = b[12 + 0];\n var b31 = b[12 + 1];\n var b32 = b[12 + 2];\n var b33 = b[12 + 3];\n dst[ 0] = a00 * b00 + a01 * b10 + a02 * b20 + a03 * b30;\n dst[ 1] = a00 * b01 + a01 * b11 + a02 * b21 + a03 * b31;\n dst[ 2] = a00 * b02 + a01 * b12 + a02 * b22 + a03 * b32;\n dst[ 3] = a00 * b03 + a01 * b13 + a02 * b23 + a03 * b33;\n dst[ 4] = a10 * b00 + a11 * b10 + a12 * b20 + a13 * b30;\n dst[ 5] = a10 * b01 + a11 * b11 + a12 * b21 + a13 * b31;\n dst[ 6] = a10 * b02 + a11 * b12 + a12 * b22 + a13 * b32;\n dst[ 7] = a10 * b03 + a11 * b13 + a12 * b23 + a13 * b33;\n dst[ 8] = a20 * b00 + a21 * b10 + a22 * b20 + a23 * b30;\n dst[ 9] = a20 * b01 + a21 * b11 + a22 * b21 + a23 * b31;\n dst[10] = a20 * b02 + a21 * b12 + a22 * b22 + a23 * b32;\n dst[11] = a20 * b03 + a21 * b13 + a22 * b23 + a23 * b33;\n dst[12] = a30 * b00 + a31 * b10 + a32 * b20 + a33 * b30;\n dst[13] = a30 * b01 + a31 * b11 + a32 * b21 + a33 * b31;\n dst[14] = a30 * b02 + a31 * b12 + a32 * b22 + a33 * b32;\n dst[15] = a30 * b03 + a31 * b13 + a32 * b23 + a33 * b33;\n return target;\n });\n\n mod.invert = new Sk.builtin.func(function(target, mat)\n {\n var dst = target.v;\n var m = mat.v;\n var m00 = m[0 * 4 + 0];\n var m01 = m[0 * 4 + 1];\n var m02 = m[0 * 4 + 2];\n var m03 = m[0 * 4 + 3];\n var m10 = m[1 * 4 + 0];\n var m11 = m[1 * 4 + 1];\n var m12 = m[1 * 4 + 2];\n var m13 = m[1 * 4 + 3];\n var m20 = m[2 * 4 + 0];\n var m21 = m[2 * 4 + 1];\n var m22 = m[2 * 4 + 2];\n var m23 = m[2 * 4 + 3];\n var m30 = m[3 * 4 + 0];\n var m31 = m[3 * 4 + 1];\n var m32 = m[3 * 4 + 2];\n var m33 = m[3 * 4 + 3];\n var tmp_0 = m22 * m33;\n var tmp_1 = m32 * m23;\n var tmp_2 = m12 * m33;\n var tmp_3 = m32 * m13;\n var tmp_4 = m12 * m23;\n var tmp_5 = m22 * m13;\n var tmp_6 = m02 * m33;\n var tmp_7 = m32 * m03;\n var tmp_8 = m02 * m23;\n var tmp_9 = m22 * m03;\n var tmp_10 = m02 * m13;\n var tmp_11 = m12 * m03;\n var tmp_12 = m20 * m31;\n var tmp_13 = m30 * m21;\n var tmp_14 = m10 * m31;\n var tmp_15 = m30 * m11;\n var tmp_16 = m10 * m21;\n var tmp_17 = m20 * m11;\n var tmp_18 = m00 * m31;\n var tmp_19 = m30 * m01;\n var tmp_20 = m00 * m21;\n var tmp_21 = m20 * m01;\n var tmp_22 = m00 * m11;\n var tmp_23 = m10 * m01;\n\n var t0 = (tmp_0 * m11 + tmp_3 * m21 + tmp_4 * m31) -\n (tmp_1 * m11 + tmp_2 * m21 + tmp_5 * m31);\n var t1 = (tmp_1 * m01 + tmp_6 * m21 + tmp_9 * m31) -\n (tmp_0 * m01 + tmp_7 * m21 + tmp_8 * m31);\n var t2 = (tmp_2 * m01 + tmp_7 * m11 + tmp_10 * m31) -\n (tmp_3 * m01 + tmp_6 * m11 + tmp_11 * m31);\n var t3 = (tmp_5 * m01 + tmp_8 * m11 + tmp_11 * m21) -\n (tmp_4 * m01 + tmp_9 * m11 + tmp_10 * m21);\n\n var d = 1.0 / (m00 * t0 + m10 * t1 + m20 * t2 + m30 * t3);\n\n dst[ 0] = d * t0;\n dst[ 1] = d * t1;\n dst[ 2] = d * t2;\n dst[ 3] = d * t3;\n dst[ 4] = d * ((tmp_1 * m10 + tmp_2 * m20 + tmp_5 * m30) -\n (tmp_0 * m10 + tmp_3 * m20 + tmp_4 * m30));\n dst[ 5] = d * ((tmp_0 * m00 + tmp_7 * m20 + tmp_8 * m30) -\n (tmp_1 * m00 + tmp_6 * m20 + tmp_9 * m30));\n dst[ 6] = d * ((tmp_3 * m00 + tmp_6 * m10 + tmp_11 * m30) -\n (tmp_2 * m00 + tmp_7 * m10 + tmp_10 * m30));\n dst[ 7] = d * ((tmp_4 * m00 + tmp_9 * m10 + tmp_10 * m20) -\n (tmp_5 * m00 + tmp_8 * m10 + tmp_11 * m20));\n dst[ 8] = d * ((tmp_12 * m13 + tmp_15 * m23 + tmp_16 * m33) -\n (tmp_13 * m13 + tmp_14 * m23 + tmp_17 * m33));\n dst[ 9] = d * ((tmp_13 * m03 + tmp_18 * m23 + tmp_21 * m33) -\n (tmp_12 * m03 + tmp_19 * m23 + tmp_20 * m33));\n dst[10] = d * ((tmp_14 * m03 + tmp_19 * m13 + tmp_22 * m33) -\n (tmp_15 * m03 + tmp_18 * m13 + tmp_23 * m33));\n dst[11] = d * ((tmp_17 * m03 + tmp_20 * m13 + tmp_23 * m23) -\n (tmp_16 * m03 + tmp_21 * m13 + tmp_22 * m23));\n dst[12] = d * ((tmp_14 * m22 + tmp_17 * m32 + tmp_13 * m12) -\n (tmp_16 * m32 + tmp_12 * m12 + tmp_15 * m22));\n dst[13] = d * ((tmp_20 * m32 + tmp_12 * m02 + tmp_19 * m22) -\n (tmp_18 * m22 + tmp_21 * m32 + tmp_13 * m02));\n dst[14] = d * ((tmp_18 * m12 + tmp_23 * m32 + tmp_15 * m02) -\n (tmp_22 * m32 + tmp_14 * m02 + tmp_19 * m12));\n dst[15] = d * ((tmp_22 * m22 + tmp_16 * m02 + tmp_21 * m12) -\n (tmp_20 * m12 + tmp_23 * m22 + tmp_17 * m02));\n return target;\n });\n\n mod.transpose = new Sk.builtin.func(function(target, mat)\n {\n var dst = target.v;\n var m = mat.v;\n for (var j = 0; j < 4; ++j) {\n for (var i = 0; i < 4; ++i)\n dst[j * 4 + i] = m[i * 4 + j];\n }\n return dst;\n });\n\n return mod;\n};\n", "src/lib/webgl/__init__.js": "var $builtinmodule = function(name)\n{\n var mod = {};\n\n var makeFailHTML = function(msg) {\n return '' +\n '' +\n '
' +\n '
' +\n '
' + msg + '
' +\n '
' +\n '
';\n };\n\n var GET_A_WEBGL_BROWSER = '' +\n 'This page requires a browser that supports WebGL.
' +\n 'Click here to upgrade your browser.';\n\n var NEED_HARDWARE = '' +\n \"It doesn't appear your computer can support WebGL.
\" +\n 'Click here for more information.';\n \n var create3DContext = function(canvas) {\n var names = [\"webgl\", \"experimental-webgl\", \"webkit-3d\", \"moz-webgl\"];\n var gl = null;\n for (var ii = 0; ii < names.length; ++ii) {\n try {\n gl = canvas.getContext(names[ii]);\n }\n catch(e) {\n }\n if (gl) {\n break;\n }\n }\n if (gl) {\n // Disallow selection by default. This keeps the cursor from changing to an\n // I-beam when the user clicks and drags. It's easier on the eyes.\n function returnFalse() {\n return false;\n }\n\n canvas.onselectstart = returnFalse;\n canvas.onmousedown = returnFalse;\n }\n return gl;\n };\n\n var setupWebGL = function(canvasContainerId, opt_canvas) {\n var container = document.getElementById(canvasContainerId);\n var context;\n if (!opt_canvas) {\n opt_canvas = container.getElementsByTagName(\"canvas\")[0];\n }\n if (!opt_canvas) {\n // this browser doesn't support the canvas tag at all. Not even 2d.\n container.innerHTML = makeFailHTML(GET_A_WEBGL_BROWSER);\n return;\n }\n\n var gl = create3DContext(opt_canvas);\n if (!gl) {\n // TODO(gman): fix to official way to detect that it's the user's machine, not the browser.\n var browserStrings = navigator.userAgent.match(/(\\w+\\/.*? )/g);\n var browsers = {};\n try {\n for (var b = 0; b < browserStrings.length; ++b) {\n var parts = browserStrings[b].match(/(\\w+)/g);\n var bb = [];\n for (var ii = 1; ii < parts.length; ++ii) {\n bb.push(parseInt(parts[ii]));\n }\n browsers[parts[0]] = bb;\n }\n }\n catch (e) {\n }\n if (browsers.Chrome &&\n (browsers.Chrome[0] > 7 ||\n (browsers.Chrome[0] == 7 && browsers.Chrome[1] > 0) ||\n (browsers.Chrome[0] == 7 && browsers.Chrome[1] == 0 && browsers.Chrome[2] >= 521))) {\n container.innerHTML = makeFailHTML(NEED_HARDWARE);\n }\n else {\n container.innerHTML = makeFailHTML(GET_A_WEBGL_BROWSER);\n }\n }\n return gl;\n };\n\n /**\n * The Context encapsulates the underlying WebGL native JavaScript API.\n */\n mod.Context = Sk.misceval.buildClass(mod, function($gbl, $loc) {\n $loc.__init__ = new Sk.builtin.func(\n function(self, canvasid) {\n var canvas = document.getElementById(canvasid.v);\n var gl = setupWebGL(canvasid.v, canvas)\n if (!gl) {\n throw new Error(\"Your browser does not appear to support WebGL.\");\n }\n\n self.gl = gl;\n\n // Copy symbolic constants and functions from native WebGL, encapsulating where necessary. \n for (var k in gl.__proto__) {\n if (typeof gl.__proto__[k] === 'number') {\n Sk.abstr.objectSetItem(self['$d'], new Sk.builtin.str(k), gl.__proto__[k]);\n }\n else if (typeof gl.__proto__[k] === \"function\") {\n switch(k) {\n case 'bufferData': {\n }\n break;\n case 'clearColor': {\n }\n break;\n case 'drawArrays': {\n }\n break;\n case 'getAttribLocation': {\n }\n break;\n case 'getUniformLocation': {\n }\n break;\n case 'shaderSource': {\n }\n break;\n case 'uniformMatrix4fv': {\n }\n break;\n case 'vertexAttribPointer': {\n }\n break;\n case 'viewport': {\n }\n break;\n default: {\n (function(key) {\n Sk.abstr.objectSetItem(self['$d'], new Sk.builtin.str(k), new Sk.builtin.func(function() {\n var f = gl.__proto__[key];\n return f.apply(gl, arguments);\n }));\n }(k));\n }\n }\n }\n }\n\n gl.clearColor(100.0/255.0, 149.0/255.0, 237.0/255.0, 1.0);\n gl.clear(gl.COLOR_BUFFER_BIT);\n }\n );\n\n $loc.tp$getattr = Sk.builtin.object.prototype.GenericGetAttr;\n\n $loc.bufferData = new Sk.builtin.func(\n function(self, target, data, usage) {\n self.gl.bufferData(target, data.v, usage);\n }\n );\n\n $loc.clearColor = new Sk.builtin.func(\n function(self, red, green, blue, alpha) {\n self.gl.clearColor(Sk.builtin.asnum$(red), Sk.builtin.asnum$(green), Sk.builtin.asnum$(blue), Sk.builtin.asnum$(alpha));\n }\n );\n\n $loc.getAttribLocation = new Sk.builtin.func(\n function(self, program, name) {\n return self.gl.getAttribLocation(program, name.v);\n }\n );\n\n $loc.getUniformLocation = new Sk.builtin.func(\n function(self, program, name) {\n return self.gl.getUniformLocation(program, name.v);\n }\n );\n\n $loc.shaderSource = new Sk.builtin.func(\n function(self, shader, src) {\n self.gl.shaderSource(shader, src.v);\n }\n );\n\n $loc.drawArrays = new Sk.builtin.func(\n function(self, mode, first, count) {\n self.gl.drawArrays(Sk.builtin.asnum$(mode), Sk.builtin.asnum$(first), Sk.builtin.asnum$(count));\n }\n );\n\n $loc.vertexAttribPointer = new Sk.builtin.func(\n function(self, index, size, type, normalized, stride, dunno) {\n self.gl.vertexAttribPointer(index, Sk.builtin.asnum$(size), Sk.builtin.asnum$(type), normalized, Sk.builtin.asnum$(stride), Sk.builtin.asnum$(dunno));\n }\n );\n\n $loc.viewport = new Sk.builtin.func(\n function(self, x, y, width, height) {\n self.gl.viewport(Sk.builtin.asnum$(x), Sk.builtin.asnum$(y), Sk.builtin.asnum$(width), Sk.builtin.asnum$(height));\n }\n );\n\n $loc.uniformMatrix4fv = new Sk.builtin.func(\n function(self, location, transpose, values) {\n// console.log(\"location \" + (typeof location));\n// console.log(\"transpose \" + (typeof transpose));\n// console.log(\"values.v \" + (typeof values.v));\n self.gl.uniformMatrix4fv(Sk.builtin.asnum$(location), transpose, values.v);\n }\n );\n\n $loc.setDrawFunc = new Sk.builtin.func(function(self, func) {\n var startTime = (new Date()).getTime();\n var intervalId = setInterval(\n function() {\n Sk.misceval.callsim(func, self, (new Date()).getTime() - startTime);\n }, 1000.0 / 60.0); // 60 fps\n });\n\n }, 'Context', []);\n\n mod.Float32Array = Sk.misceval.buildClass(mod, function($gbl, $loc) {\n $loc.__init__ = new Sk.builtin.func(function(self, data) {\n if (typeof data === \"number\") {\n self.v = new Float32Array(data);\n }\n else {\n self.v = new Float32Array(Sk.ffi.remapToJs(data));\n }\n });\n\n $loc.__repr__ = new Sk.builtin.func(function(self) {\n var copy = [];\n for (var i = 0; i < self.v.length; ++i) {\n copy.push(self.v[i]);\n }\n return new Sk.builtin.str(\"[\" + copy.join(', ') + \"]\");\n });\n }, 'Float32Array', []);\n\n /**\n * A 4x4 (mutable) matrix suitable for OpenGL.\n *\n * Mutability is chosen for performance.\n * The inderlying implementation is Float32Array.\n * The indexing of the elements is\n * 0 4 8 12\n * 1 5 9 13\n * 2 6 10 14\n * 3 7 11 15\n */\n mod.Matrix4x4 = Sk.misceval.buildClass(mod, function($gbl, $loc) {\n $loc.__init__ = new Sk.builtin.func(function(self, data) {\n self.v = new Float32Array(Sk.ffi.remapToJs(data));\n });\n\n $loc.identity = new Sk.builtin.func(\n function(self) {\n\n var m = self.v;\n\n m[0] = 1;\n m[1] = 0;\n m[2] = 0;\n m[3] = 0;\n\n m[4] = 0;\n m[5] = 1;\n m[6] = 0;\n m[7] = 0;\n\n m[8] = 0;\n m[9] = 0;\n m[10] = 1;\n m[11] = 0;\n\n m[12] = 0;\n m[13] = 0;\n m[14] = 0;\n m[15] = 1;\n }\n );\n\n $loc.perspective = new Sk.builtin.func(\n function(self, fov, aspect, near, far) {\n \n var t = Math.tan(Math.PI * 0.5 - 0.5 * (Sk.builtin.asnum$(fov) * Math.PI / 180));\n var a = Sk.builtin.asnum$(aspect)\n var n = Sk.builtin.asnum$(near)\n var f = Sk.builtin.asnum$(far)\n var k = 1.0 / (n - f);\n\n var m = self.v;\n\n m[0] = t / a;\n m[1] = 0;\n m[2] = 0;\n m[3] = 0;\n\n m[4] = 0;\n m[5] = t;\n m[6] = 0;\n m[7] = 0;\n\n m[8] = 0;\n m[9] = 0;\n m[10] = (n + f) * k;\n m[11] = -1;\n\n m[12] = 0;\n m[13] = 0;\n m[14] = n * f * k * 2;\n m[15] = 0;\n }\n );\n\n $loc.translate = new Sk.builtin.func(\n function(self, translation) {\n\n var m = self.v;\n var t = Sk.ffi.remapToJs(translation);\n\n m[0] = 1;\n m[1] = 0;\n m[2] = 0;\n m[3] = 0;\n\n m[4] = 0;\n m[5] = 1;\n m[6] = 0;\n m[7] = 0;\n\n m[8] = 0;\n m[9] = 0;\n m[10] = 1;\n m[11] = 0;\n\n m[12] = t[0];\n m[13] = t[1];\n m[14] = t[2];\n m[15] = 1;\n }\n );\n\n $loc.__repr__ = new Sk.builtin.func(function(self) {\n var copy = [];\n for (var i = 0; i < self.v.length; ++i) {\n copy.push(self.v[i]);\n }\n return new Sk.builtin.str(\"[\" + copy.join(', ') + \"]\");\n });\n }, 'Matrix4x4', []);\n\n return mod;\n};", "src/lib/sets.py": "raise NotImplementedError(\"sets is not yet implemented in Skulpt\")\n", "src/lib/modulefinder.py": "raise NotImplementedError(\"modulefinder is not yet implemented in Skulpt\")\n", "src/lib/config/__init__.py": "raise NotImplementedError(\"config is not yet implemented in Skulpt\")\n", "src/lib/decimal.py": "raise NotImplementedError(\"decimal is not yet implemented in Skulpt\")\n", "src/lib/pythonds/trees/balance.py": "#!/bin/env python3.1\n# Bradley N. Miller, David L. Ranum\n# Introduction to Data Structures and Algorithms in Python\n# Copyright 2005, 2010\n# \n\nfrom .bst import BinarySearchTree, TreeNode\n\nclass AVLTree(BinarySearchTree):\n '''\n Author: Brad Miller\n Date: 1/15/2005\n Description: Imlement a binary search tree with the following interface\n functions: \n __contains__(y) <==> y in x\n __getitem__(y) <==> x[y]\n __init__()\n __len__() <==> len(x)\n __setitem__(k,v) <==> x[k] = v\n clear()\n get(k)\n has_key(k)\n items() \n keys() \n values()\n put(k,v)\n '''\n\n\n def _put(self,key,val,currentNode):\n if key < currentNode.key:\n if currentNode.hasLeftChild():\n self._put(key,val,currentNode.leftChild)\n else:\n currentNode.leftChild = TreeNode(key,val,parent=currentNode)\n self.updateBalance(currentNode.leftChild)\n else:\n if currentNode.hasRightChild():\n self._put(key,val,currentNode.rightChild)\n else:\n currentNode.rightChild = TreeNode(key,val,parent=currentNode)\n self.updateBalance(currentNode.rightChild) \n\n def updateBalance(self,node):\n if node.balanceFactor > 1 or node.balanceFactor < -1:\n self.rebalance(node)\n return\n if node.parent != None:\n if node.isLeftChild():\n node.parent.balanceFactor += 1\n elif node.isRightChild():\n node.parent.balanceFactor -= 1\n\n if node.parent.balanceFactor != 0:\n self.updateBalance(node.parent)\n\n def rebalance(self,node):\n if node.balanceFactor < 0:\n if node.rightChild.balanceFactor > 0:\n # Do an LR Rotation\n self.rotateRight(node.rightChild)\n self.rotateLeft(node)\n else:\n # single left\n self.rotateLeft(node)\n elif node.balanceFactor > 0:\n if node.leftChild.balanceFactor < 0:\n # Do an RL Rotation\n self.rotateLeft(node.leftChild)\n self.rotateRight(node)\n else:\n # single right\n self.rotateRight(node)\n\n def rotateLeft(self,rotRoot):\n newRoot = rotRoot.rightChild\n rotRoot.rightChild = newRoot.leftChild\n if newRoot.leftChild != None:\n newRoot.leftChild.parent = rotRoot\n newRoot.parent = rotRoot.parent\n if rotRoot.isRoot():\n self.root = newRoot\n else:\n if rotRoot.isLeftChild():\n rotRoot.parent.leftChild = newRoot\n else:\n rotRoot.parent.rightChild = newRoot\n newRoot.leftChild = rotRoot\n rotRoot.parent = newRoot\n rotRoot.balanceFactor = rotRoot.balanceFactor + 1 - min(newRoot.balanceFactor, 0)\n newRoot.balanceFactor = newRoot.balanceFactor + 1 + max(rotRoot.balanceFactor, 0)\n\n\n def rotateRight(self,rotRoot):\n newRoot = rotRoot.leftChild\n rotRoot.leftChild = newRoot.rightChild\n if newRoot.rightChild != None:\n newRoot.rightChild.parent = rotRoot\n newRoot.parent = rotRoot.parent\n if rotRoot.isRoot():\n self.root = newRoot\n else:\n if rotRoot.isRightChild():\n rotRoot.parent.rightChild = newRoot\n else:\n rotRoot.parent.leftChild = newRoot\n newRoot.rightChild = rotRoot\n rotRoot.parent = newRoot\n rotRoot.balanceFactor = rotRoot.balanceFactor - 1 - max(newRoot.balanceFactor, 0)\n newRoot.balanceFactor = newRoot.balanceFactor - 1 + min(rotRoot.balanceFactor, 0)\n \n", "src/lib/urllib/request/__init__.js": "var $builtinmodule = function (name) {\n var request = {};\n\n\n //~ Classes .................................................................\n\n // Response class\n //\n // Response objects are returned by the request, get, post, etc.\n // methods, allowing the user to access the response text, status\n // code, and other information.\n\n // ------------------------------------------------------------\n var response = function ($gbl, $loc) {\n\n // ------------------------------------------------------------\n $loc.__init__ = new Sk.builtin.func(function (self, xhr) {\n self.data$ = xhr.responseText;\n self.lineList = self.data$.split(\"\\n\");\n self.lineList = self.lineList.slice(0, -1);\n for (var i = 0; i < self.lineList.length; i++) {\n self.lineList[i] = self.lineList[i] + '\\n';\n }\n self.currentLine = 0;\n self.pos$ = 0;\n });\n\n\n // ------------------------------------------------------------\n $loc.__str__ = new Sk.builtin.func(function (self) {\n return Sk.ffi.remapToPy('');\n });\n\n\n // ------------------------------------------------------------\n $loc.__iter__ = new Sk.builtin.func(function (self) {\n var allLines = self.lineList;\n\n return Sk.builtin.makeGenerator(function () {\n if (this.$index >= this.$lines.length) {\n return undefined;\n }\n return new Sk.builtin.str(this.$lines[this.$index++]);\n }, {\n $obj : self,\n $index: 0,\n $lines: allLines\n });\n });\n\n\n // ------------------------------------------------------------\n $loc.read = new Sk.builtin.func(function (self, size) {\n if (self.closed) {\n throw new Sk.builtin.ValueError(\"I/O operation on closed file\");\n }\n var len = self.data$.length;\n if (size === undefined) {\n size = len;\n }\n var ret = new Sk.builtin.str(self.data$.substr(self.pos$, size));\n self.pos$ += size;\n if (self.pos$ >= len) {\n self.pos$ = len;\n }\n return ret;\n });\n\n\n // ------------------------------------------------------------\n $loc.readline = new Sk.builtin.func(function (self, size) {\n var line = \"\";\n if (self.currentLine < self.lineList.length) {\n line = self.lineList[self.currentLine];\n self.currentLine++;\n }\n return new Sk.builtin.str(line);\n });\n\n\n // ------------------------------------------------------------\n $loc.readlines = new Sk.builtin.func(function (self, sizehint) {\n var arr = [];\n for (var i = self.currentLine; i < self.lineList.length; i++) {\n arr.push(new Sk.builtin.str(self.lineList[i]));\n }\n return new Sk.builtin.list(arr);\n });\n\n };\n\n request.Response =\n Sk.misceval.buildClass(request, response, 'Response', []);\n\n\n //~ Module functions ........................................................\n\n // ------------------------------------------------------------\n /**\n * Constructs and sends a Request. Returns Response object.\n *\n * http://docs.python-requests.org/en/latest/api/#requests.request\n *\n * For now, this implementation doesn't actually construct a Request\n * object; it just makes the request through jQuery.ajax and then\n * constructs a Response.\n */\n request.urlopen = new Sk.builtin.func(function (url, data, timeout) {\n var xmlhttp = new XMLHttpRequest();\n xmlhttp.open(\"GET\", url.v, false);\n xmlhttp.send(null);\n\n return Sk.misceval.callsim(request.Response, xmlhttp)\n });\n\n\n return request;\n};\n", "src/lib/rlcompleter.py": "raise NotImplementedError(\"rlcompleter is not yet implemented in Skulpt\")\n", "src/lib/nntplib.py": "raise NotImplementedError(\"nntplib is not yet implemented in Skulpt\")\n", "src/lib/re.js": "var $builtinmodule = function (name) {\n var mod = {};\n\n // Constants (mostly unsupported)\n mod.I = 2;\n mod.IGNORECASE = 2;\n // mod.L = 4;\n // mod.LOCALE = 4;\n mod.M = 8;\n mod.MULTILINE = 8;\n // mod.S = 16;\n // mod.DOTALL = 16;\n // mod.U = 32;\n // mod.UNICODE = 32;\n // mod.X = 64;\n // mod.VERBOSE = 64;\n\n var validGroups = [\"(?:\", \"(?=\", \"(?!\"];\n\n var convert = function (pattern) {\n var newpattern;\n var match;\n var i;\n\n // Look for disallowed constructs\n match = pattern.match(/\\(\\?./g);\n if (match) {\n for (i = 0; i < match.length; i++) {\n if (validGroups.indexOf(match[i]) == -1) {\n throw new Sk.builtin.ValueError(\"Disallowed group in pattern: '\"\n + match[i] + \"'\");\n }\n ;\n }\n ;\n }\n ;\n\n newpattern = pattern.replace('/\\\\/g', '\\\\\\\\');\n newpattern = pattern.replace(/([^\\\\]){,(?![^\\[]*\\])/g, '$1{0,');\n\n return newpattern;\n };\n\n var getFlags = function (flags) {\n var jsflags = \"g\";\n if ((flags & mod.IGNORECASE) == mod.IGNORECASE) {\n jsflags += \"i\";\n }\n ;\n if ((flags & mod.MULTILINE) == mod.MULTILINE) {\n jsflags += \"m\";\n }\n ;\n return jsflags;\n };\n\n mod.split = Sk.nativejs.func(function split (pattern, string, maxsplit, flags) {\n Sk.builtin.pyCheckArgs(\"split\", arguments, 2, 4);\n if (!Sk.builtin.checkString(pattern)) {\n throw new Sk.builtin.TypeError(\"pattern must be a string\");\n }\n ;\n if (!Sk.builtin.checkString(string)) {\n throw new Sk.builtin.TypeError(\"string must be a string\");\n }\n ;\n if (maxsplit === undefined) {\n maxsplit = 0;\n }\n ;\n if (!Sk.builtin.checkNumber(maxsplit)) {\n throw new Sk.builtin.TypeError(\"maxsplit must be a number\");\n }\n ;\n if (flags === undefined) {\n flags = 0;\n }\n ;\n if (!Sk.builtin.checkNumber(flags)) {\n throw new Sk.builtin.TypeError(\"flags must be a number\");\n }\n ;\n\n maxsplit = Sk.builtin.asnum$(maxsplit);\n var pat = Sk.ffi.unwrapo(pattern);\n var str = Sk.ffi.unwrapo(string);\n\n // Convert pat from Python to Javascript regex syntax\n pat = convert(pat);\n //print(\"Pat: \" + pat);\n //print(\"Str: \" + str);\n\n var captured = !(pat.match(/^\\(.*\\)$/) === null);\n //print(\"Captured: \", captured);\n\n var jsflags = getFlags(flags);\n //print(\"Flags: \", jsflags);\n\n var regex = new RegExp(pat, jsflags);\n\n var result = [];\n var match;\n var index = 0;\n var splits = 0;\n while ((match = regex.exec(str)) != null) {\n //print(\"Matched '\" + match[0] + \"' at position \" + match.index + \n // \"; next search at \" + regex.lastIndex);\n if (match.index === regex.lastIndex) {\n // empty match\n break;\n }\n ;\n result.push(new Sk.builtin.str(str.substring(index, match.index)));\n if (captured) {\n // Add matching pattern, too\n result.push(new Sk.builtin.str(match[0]));\n }\n ;\n index = regex.lastIndex;\n splits += 1;\n if (maxsplit && (splits >= maxsplit)) {\n break;\n }\n ;\n }\n ;\n result.push(new Sk.builtin.str(str.substring(index)));\n\n return new Sk.builtin.list(result);\n });\n\n mod.findall = Sk.nativejs.func(function findall (pattern, string, flags) {\n Sk.builtin.pyCheckArgs(\"findall\", arguments, 2, 3);\n if (!Sk.builtin.checkString(pattern)) {\n throw new Sk.builtin.TypeError(\"pattern must be a string\");\n }\n ;\n if (!Sk.builtin.checkString(string)) {\n throw new Sk.builtin.TypeError(\"string must be a string\");\n }\n ;\n if (flags === undefined) {\n flags = 0;\n }\n ;\n if (!Sk.builtin.checkNumber(flags)) {\n throw new Sk.builtin.TypeError(\"flags must be a number\");\n }\n ;\n\n var pat = Sk.ffi.unwrapo(pattern);\n var str = Sk.ffi.unwrapo(string);\n\n // Convert pat from Python to Javascript regex syntax\n pat = convert(pat);\n //print(\"Pat: \" + pat);\n //print(\"Str: \" + str);\n\n var jsflags = getFlags(flags);\n //print(\"Flags: \", jsflags);\n\n var regex = new RegExp(pat, jsflags);\n\n if (pat.match(/\\$/)) {\n var newline_at_end = new RegExp(/\\n$/);\n if (str.match(newline_at_end)) {\n str = str.slice(0, -1);\n }\n }\n\n var result = [];\n var match;\n while ((match = regex.exec(str)) != null) {\n //print(\"Matched '\" + match[0] + \"' at position \" + match.index + \n // \"; next search at \" + regex.lastIndex);\n // print(\"match: \" + JSON.stringify(match));\n if (match.length < 2) {\n result.push(new Sk.builtin.str(match[0]));\n } else if (match.length == 2) {\n result.push(new Sk.builtin.str(match[1]));\n } else {\n var groups = [];\n for (var i = 1; i < match.length; i++) {\n groups.push(new Sk.builtin.str(match[i]));\n }\n ;\n result.push(new Sk.builtin.tuple(groups));\n }\n ;\n if (match.index === regex.lastIndex) {\n regex.lastIndex += 1;\n }\n ;\n }\n ;\n\n return new Sk.builtin.list(result);\n });\n\n\n var matchobj = function ($gbl, $loc) {\n $loc.__init__ = new Sk.builtin.func(function (self, thematch, pattern, string) {\n self.thematch = thematch;\n self.re = pattern;\n self.string = string;\n });\n\n $loc.groups = new Sk.builtin.func(function (self) {\n return new Sk.builtin.tuple(self.thematch.v.slice(1))\n });\n\n $loc.group = new Sk.builtin.func(function (self, grpnum) {\n if (grpnum === undefined) {\n grpnum = 0;\n }\n else {\n grpnum = Sk.builtin.asnum$(grpnum);\n }\n if (grpnum >= self.thematch.v.length) {\n throw new Sk.builtin.IndexError(\"Index out of range: \" + grpnum);\n }\n return self.thematch.v[grpnum]\n });\n\n }\n\n mod.MatchObject = Sk.misceval.buildClass(mod, matchobj, 'MatchObject', []);\n\n // Internal function to return a Python list of strings \n // From a JS regular expression string\n mod._findre = function (res, string) {\n res = res.replace(/([^\\\\]){,(?![^\\[]*\\])/g, '$1{0,');\n var re = eval(res);\n var patt = new RegExp('\\n$');\n if (string.v.match(patt)) {\n var matches = string.v.slice(0, -1).match(re);\n }\n else {\n var matches = string.v.match(re);\n }\n retval = new Sk.builtin.list();\n if (matches == null) {\n return retval;\n }\n for (var i = 0; i < matches.length; ++i) {\n var sitem = new Sk.builtin.str(matches[i]);\n retval.v.push(sitem);\n }\n return retval;\n }\n\n mod.search = new Sk.builtin.func(function (pattern, string, flags) {\n Sk.builtin.pyCheckArgs('search', arguments, 2, 3);\n if (!Sk.builtin.checkString(pattern)) {\n throw new Sk.builtin.TypeError(\"pattern must be a string\");\n }\n ;\n if (!Sk.builtin.checkString(string)) {\n throw new Sk.builtin.TypeError(\"string must be a string\");\n }\n ;\n if (flags === undefined) {\n flags = 0;\n }\n ;\n if (!Sk.builtin.checkNumber(flags)) {\n throw new Sk.builtin.TypeError(\"flags must be a number\");\n }\n ;\n var res = \"/\" + pattern.v.replace(/\\//g, \"\\\\/\") + \"/\";\n lst = mod._findre(res, string);\n if (lst.v.length < 1) {\n return Sk.builtin.none.none$;\n }\n var mob = Sk.misceval.callsim(mod.MatchObject, lst, pattern, string);\n return mob;\n });\n\n mod.match = new Sk.builtin.func(function (pattern, string, flags) {\n Sk.builtin.pyCheckArgs('match', arguments, 2, 3);\n if (!Sk.builtin.checkString(pattern)) {\n throw new Sk.builtin.TypeError(\"pattern must be a string\");\n }\n ;\n if (!Sk.builtin.checkString(string)) {\n throw new Sk.builtin.TypeError(\"string must be a string\");\n }\n ;\n if (flags === undefined) {\n flags = 0;\n }\n ;\n if (!Sk.builtin.checkNumber(flags)) {\n throw new Sk.builtin.TypeError(\"flags must be a number\");\n }\n ;\n var res = \"/^\" + pattern.v.replace(/\\//g, \"\\\\/\") + \"/\";\n lst = mod._findre(res, string);\n if (lst.v.length < 1) {\n return Sk.builtin.none.none$;\n }\n var mob = Sk.misceval.callsim(mod.MatchObject, lst, pattern, string);\n return mob;\n });\n\n return mod;\n}\n", "src/lib/opcode.py": "raise NotImplementedError(\"opcode is not yet implemented in Skulpt\")\n", "src/lib/mailbox.py": "raise NotImplementedError(\"mailbox is not yet implemented in Skulpt\")\n", "src/lib/xmlrpclib.py": "raise NotImplementedError(\"xmlrpclib is not yet implemented in Skulpt\")\n", "src/lib/UserList.py": "raise NotImplementedError(\"UserList is not yet implemented in Skulpt\")\n", "src/lib/webgl/math.js": "var $builtinmodule = function(name)\n{\n var mod = {};\n\n // todo; should probably put this in a math package\n mod.Mat44 = Sk.misceval.buildClass(mod, function($gbl, $loc)\n {\n $loc.__init__ = new Sk.builtin.func(function(self)\n {\n Sk.misceval.callsim($loc.loadIdentity, self);\n self.stack = [];\n });\n\n $loc.push = new Sk.builtin.func(function(self)\n {\n self.stack.push(self.elements.slice(0));\n });\n\n $loc.pop = new Sk.builtin.func(function(self)\n {\n self.elements = self.stack.pop();\n });\n\n $loc.loadIdentity = new Sk.builtin.func(function(self)\n {\n self.elements = [1.0, 0.0, 0.0, 0.0,\n 0.0, 1.0, 0.0, 0.0,\n 0.0, 0.0, 1.0, 0.0,\n 0.0, 0.0, 0.0, 1.0];\n });\n\n $loc.transform3 = new Sk.builtin.func(function(self, v)\n {\n var e = self.elements;\n return Sk.misceval.callsim(mod.Vec3,\n e[0] * v.x + e[4] * v.y + e[8] * v.z,\n e[1] * v.x + e[5] * v.y + e[9] * v.z,\n e[2] * v.x + e[6] * v.y + e[10] * v.z);\n });\n\n $loc.scale = new Sk.builtin.func(function(self, sx, sy, sz)\n {\n self.elements[0*4+0] *= sx;\n self.elements[0*4+1] *= sx;\n self.elements[0*4+2] *= sx;\n self.elements[0*4+3] *= sx;\n\n self.elements[1*4+0] *= sy;\n self.elements[1*4+1] *= sy;\n self.elements[1*4+2] *= sy;\n self.elements[1*4+3] *= sy;\n\n self.elements[2*4+0] *= sz;\n self.elements[2*4+1] *= sz;\n self.elements[2*4+2] *= sz;\n self.elements[2*4+3] *= sz;\n\n return self;\n });\n\n $loc.translate = new Sk.builtin.func(function(self, tx, ty, tz)\n {\n self.elements[3*4+0] += self.elements[0*4+0] * tx + self.elements[1*4+0] * ty + self.elements[2*4+0] * tz;\n self.elements[3*4+1] += self.elements[0*4+1] * tx + self.elements[1*4+1] * ty + self.elements[2*4+1] * tz;\n self.elements[3*4+2] += self.elements[0*4+2] * tx + self.elements[1*4+2] * ty + self.elements[2*4+2] * tz;\n self.elements[3*4+3] += self.elements[0*4+3] * tx + self.elements[1*4+3] * ty + self.elements[2*4+3] * tz;\n return self;\n });\n\n $loc.rotate = new Sk.builtin.func(function(self, angle, x, y, z)\n {\n var mag = Math.sqrt(x*x + y*y + z*z);\n var sinAngle = Math.sin(angle * Math.PI / 180.0);\n var cosAngle = Math.cos(angle * Math.PI / 180.0);\n\n if (mag > 0)\n {\n var xx, yy, zz, xy, yz, zx, xs, ys, zs;\n var oneMinusCos;\n var rotMat;\n\n x /= mag;\n y /= mag;\n z /= mag;\n\n xx = x * x;\n yy = y * y;\n zz = z * z;\n xy = x * y;\n yz = y * z;\n zx = z * x;\n xs = x * sinAngle;\n ys = y * sinAngle;\n zs = z * sinAngle;\n oneMinusCos = 1.0 - cosAngle;\n\n rotMat = Sk.misceval.callsim(mod.Mat44);\n\n rotMat.elements[0*4+0] = (oneMinusCos * xx) + cosAngle;\n rotMat.elements[0*4+1] = (oneMinusCos * xy) - zs;\n rotMat.elements[0*4+2] = (oneMinusCos * zx) + ys;\n rotMat.elements[0*4+3] = 0.0;\n\n rotMat.elements[1*4+0] = (oneMinusCos * xy) + zs;\n rotMat.elements[1*4+1] = (oneMinusCos * yy) + cosAngle;\n rotMat.elements[1*4+2] = (oneMinusCos * yz) - xs;\n rotMat.elements[1*4+3] = 0.0;\n\n rotMat.elements[2*4+0] = (oneMinusCos * zx) - ys;\n rotMat.elements[2*4+1] = (oneMinusCos * yz) + xs;\n rotMat.elements[2*4+2] = (oneMinusCos * zz) + cosAngle;\n rotMat.elements[2*4+3] = 0.0;\n\n rotMat.elements[3*4+0] = 0.0;\n rotMat.elements[3*4+1] = 0.0;\n rotMat.elements[3*4+2] = 0.0;\n rotMat.elements[3*4+3] = 1.0;\n\n rotMat = rotMat.multiply(self);\n self.elements = rotMat.elements;\n }\n return self;\n });\n\n $loc.multiply = new Sk.builtin.func(function(self, right)\n {\n var tmp = Sk.misceval.callsim(mod.Mat44);\n\n for (var i = 0; i < 4; i++)\n {\n tmp.elements[i*4+0] =\n (self.elements[i*4+0] * right.elements[0*4+0]) +\n (self.elements[i*4+1] * right.elements[1*4+0]) +\n (self.elements[i*4+2] * right.elements[2*4+0]) +\n (self.elements[i*4+3] * right.elements[3*4+0]) ;\n\n tmp.elements[i*4+1] =\n (self.elements[i*4+0] * right.elements[0*4+1]) +\n (self.elements[i*4+1] * right.elements[1*4+1]) +\n (self.elements[i*4+2] * right.elements[2*4+1]) +\n (self.elements[i*4+3] * right.elements[3*4+1]) ;\n\n tmp.elements[i*4+2] =\n (self.elements[i*4+0] * right.elements[0*4+2]) +\n (self.elements[i*4+1] * right.elements[1*4+2]) +\n (self.elements[i*4+2] * right.elements[2*4+2]) +\n (self.elements[i*4+3] * right.elements[3*4+2]) ;\n\n tmp.elements[i*4+3] =\n (self.elements[i*4+0] * right.elements[0*4+3]) +\n (self.elements[i*4+1] * right.elements[1*4+3]) +\n (self.elements[i*4+2] * right.elements[2*4+3]) +\n (self.elements[i*4+3] * right.elements[3*4+3]) ;\n }\n\n self.elements = tmp.elements;\n return self;\n });\n\n /* Following gluLookAt implementation is adapted from\n * the Mesa 3D Graphics library. http://www.mesa3d.org\n */\n // todo; rewrite this with proper vec/mat ops\n $loc.lookAt = new Sk.builtin.func(function(self, eyeX, eyeY, eyeZ,\n centerX, centerY, centerZ,\n upX, upY, upZ)\n {\n /* Z vector */\n var z = [\n eyeX - centerX,\n eyeY - centerY,\n eyeZ - centerZ\n ];\n var mag = Math.sqrt(z[0] * z[0] + z[1] * z[1] + z[2] * z[2]);\n if (mag)\n {\n z[0] /= mag;\n z[1] /= mag;\n z[2] /= mag;\n }\n\n /* Y vector */\n var y = [ upX, upY, upZ ];\n\n /* X vector = Y cross Z */\n var x = [];\n x[0] = y[1] * z[2] - y[2] * z[1];\n x[1] = -y[0] * z[2] + y[2] * z[0];\n x[2] = y[0] * z[1] - y[1] * z[0];\n\n /* Recompute Y = Z cross X */\n y[0] = z[1] * x[2] - z[2] * x[1];\n y[1] = -z[0] * x[2] + z[2] * x[0];\n y[2] = z[0] * x[1] - z[1] * x[0];\n\n /* mpichler, 19950515 */\n /* cross product gives area of parallelogram, which is < 1.0 for\n * non-perpendicular unit-length vectors; so normalize x, y here\n */\n\n mag = Math.sqrt(x[0] * x[0] + x[1] * x[1] + x[2] * x[2]);\n if (mag) {\n x[0] /= mag;\n x[1] /= mag;\n x[2] /= mag;\n }\n\n mag = Math.sqrt(y[0] * y[0] + y[1] * y[1] + y[2] * y[2]);\n if (mag) {\n y[0] /= mag;\n y[1] /= mag;\n y[2] /= mag;\n }\n\n var lookAt = Sk.misceval.callsim(mod.Mat44);\n lookAt.elements[0 * 4 + 0] = x[0];\n lookAt.elements[1 * 4 + 0] = x[1];\n lookAt.elements[2 * 4 + 0] = x[2];\n lookAt.elements[3 * 4 + 0] = 0.;\n lookAt.elements[0 * 4 + 1] = y[0];\n lookAt.elements[1 * 4 + 1] = y[1];\n lookAt.elements[2 * 4 + 1] = y[2];\n lookAt.elements[3 * 4 + 1] = 0.;\n lookAt.elements[0 * 4 + 2] = z[0];\n lookAt.elements[1 * 4 + 2] = z[1];\n lookAt.elements[2 * 4 + 2] = z[2];\n lookAt.elements[3 * 4 + 2] = 0.;\n lookAt.elements[0 * 4 + 3] = 0.;\n lookAt.elements[1 * 4 + 3] = 0.;\n lookAt.elements[2 * 4 + 3] = 0.;\n lookAt.elements[3 * 4 + 3] = 1.;\n\n // log(lookAt.elements);\n\n lookAt = lookAt.multiply(self);\n self.elements = lookAt.elements;\n self.translate(-eyeX, -eyeY, -eyeZ);\n\n // log(this.elements);\n\n return self;\n });\n },\n 'Mat44', []);\n\n // todo; should probably put this in a math package\n mod.Mat33 = Sk.misceval.buildClass(mod, function($gbl, $loc)\n {\n $loc.__init__ = new Sk.builtin.func(function(self)\n {\n Sk.misceval.callsim($loc.loadIdentity, self);\n });\n\n $loc.loadIdentity = new Sk.builtin.func(function(self)\n {\n self.elements = [1.0, 0.0, 0.0,\n 0.0, 1.0, 0.0,\n 0.0, 0.0, 1.0];\n });\n },\n 'Mat33', []);\n\n mod.Vec3 = Sk.misceval.buildClass(mod, function($gbl, $loc)\n {\n $loc.__init__ = new Sk.builtin.func(function(self, x, y, z)\n {\n self.x = x;\n self.y = y;\n self.z = z;\n });\n $loc.__sub__ = new Sk.builtin.func(function(self, other)\n {\n return Sk.misceval.callsim(mod.Vec3, self.x - other.x, self.y - other.y, self.z - other.z);\n });\n },\n 'Vec3', []);\n \n mod.cross = new Sk.builtin.func(function(v1, v2)\n {\n goog.asserts.assert(v1 instanceof mod.Vec3 && v2 instanceof mod.Vec3);\n return Sk.misceval.callsim(mod.Vec3,\n v1.y * v2.z - v1.z * v2.y,\n v1.z * v2.x - v1.x * v2.z,\n v1.x * v2.y - v1.y * v2.x);\n });\n\n return mod;\n};\n", "src/lib/toaiff.py": "raise NotImplementedError(\"toaiff is not yet implemented in Skulpt\")\n", "src/lib/__future__.py": "raise NotImplementedError(\"__future__ is not yet implemented in Skulpt\")\n", "src/lib/zipfile.py": "raise NotImplementedError(\"zipfile is not yet implemented in Skulpt\")\n", "src/lib/email/__init__.py": "raise NotImplementedError(\"email is not yet implemented in Skulpt\")\n", "src/lib/pythonds/__init__.py": "", "src/lib/dummy_thread.py": "raise NotImplementedError(\"dummy_thread is not yet implemented in Skulpt\")\n", "src/lib/webbrowser.py": "raise NotImplementedError(\"webbrowser is not yet implemented in Skulpt\")\n", "src/lib/ntpath.py": "raise NotImplementedError(\"ntpath is not yet implemented in Skulpt\")\n", "src/lib/pstats.py": "raise NotImplementedError(\"pstats is not yet implemented in Skulpt\")\n", "src/lib/io.py": "raise NotImplementedError(\"io is not yet implemented in Skulpt\")\n", "src/lib/webgl/models.js": "// most of this file is from/based on 'tdl'\n\nvar $builtinmodule = function(name)\n{\n var mod = {};\n\n var Buffer = function(array, opt_target) {\n var target = opt_target || gl.ARRAY_BUFFER;\n var buf = gl.createBuffer();\n this.target = target;\n this.buf = buf;\n this.set(array);\n this.numComponents_ = array.numComponents;\n this.numElements_ = array.numElements;\n this.totalComponents_ = this.numComponents_ * this.numElements_;\n if (array.buffer instanceof Float32Array) {\n this.type_ = gl.FLOAT;\n } else if (array.buffer instanceof Uint8Array) {\n this.type_ = gl.UNSIGNED_BYTE;\n } else if (array.buffer instanceof Int8Array) {\n this.type_ = gl._BYTE;\n } else if (array.buffer instanceof Uint16Array) {\n this.type_ = gl.UNSIGNED_SHORT;\n } else if (array.buffer instanceof Int16Array) {\n this.type_ = gl.SHORT;\n } else {\n throw(\"unhandled type:\" + (typeof array.buffer));\n }\n };\n\n Buffer.prototype.set = function(array) {\n gl.bindBuffer(this.target, this.buf);\n gl.bufferData(this.target, array.buffer, gl.STATIC_DRAW);\n }\n\n Buffer.prototype.type = function() {\n return this.type_;\n };\n\n Buffer.prototype.numComponents = function() {\n return this.numComponents_;\n };\n\n Buffer.prototype.numElements = function() {\n return this.numElements_;\n };\n\n Buffer.prototype.totalComponents = function() {\n return this.totalComponents_;\n };\n\n Buffer.prototype.buffer = function() {\n return this.buf;\n };\n\n Buffer.prototype.stride = function() {\n return 0;\n };\n\n Buffer.prototype.offset = function() {\n return 0;\n };\n\n\n\n mod.Model = Sk.misceval.buildClass(mod, function($gbl, $loc)\n {\n $loc.__init__ = new Sk.builtin.func(function(self, shader, arrays, textures)\n {\n self.buffers = {};\n var setBuffer = function(name, array)\n {\n var target = (name == 'indices') ? gl.ELEMENT_ARRAY_BUFFER : gl.ARRAY_BUFFER;\n b = self.buffers[name];\n if (!b)\n b = new Buffer(array, target);\n else\n b.set(array);\n self.buffers[name] = b;\n };\n for (name in arrays)\n setBuffer(name, arrays[name]);\n\n var textureUnits = {};\n var unit = 0;\n for (var texture in textures)\n {\n textureUnits[texture] = unit++;\n }\n\n self.mode = gl.TRIANGLES;\n self.textures = textures.v;\n self.textureUnits = textureUnits;\n self.shader = shader;\n });\n\n /**\n * Sets up the shared parts of drawing this model. Uses the\n * program, binds the buffers, sets the textures.\n *\n * @param {!Object.} uniforms An object of names to\n * values to set on this models uniforms.\n */\n $loc.drawPrep = new Sk.builtin.func(function(self, uniforms)\n {\n var shader = self.shader;\n var buffers = self.buffers;\n var textures = self.textures;\n\n uniforms = Sk.ffi.remapToJs(uniforms);\n\n Sk.misceval.callsim(shader.use, shader);\n\n for (var buffer in buffers) {\n var b = buffers[buffer];\n if (buffer == 'indices') {\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, b.buffer());\n } else {\n var attrib = shader.attrib[buffer];\n if (attrib) {\n attrib(b);\n }\n }\n }\n\n for (var texture in textures) {\n var unit = self.textureUnits[texture];\n shader.setUniform$impl(shader, textuer, unit);\n textures[texture].bindToUnit(unit);\n }\n\n for (var uniform in uniforms) {\n shader.setUniform$impl(shader, uniform, uniforms[uniform]);\n }\n });\n\n /**\n * Draws this model.\n *\n * After calling tdl.models.Model.drawPrep you can call this\n * function multiple times to draw this model.\n *\n * @param {!Object.} uniforms An object of names to\n * values to set on this models uniforms.\n */\n $loc.draw = new Sk.builtin.func(function(self, uniforms, opt_textures)\n {\n var shader = self.shader;\n uniforms = Sk.ffi.remapToJs(uniforms);\n for (uniform in uniforms) {\n shader.setUniform$impl(shader, uniform, uniforms[uniform]);\n }\n\n if (opt_textures) {\n for (var texture in opt_textures) {\n var unit = self.textureUnits[texture];\n shader.setUniform$impl(shader, texture, unit);\n opt_textures[texture].bindToUnit(unit);\n }\n }\n\n var buffers = self.buffers;\n gl.drawElements(self.mode, buffers.indices.totalComponents(), gl.UNSIGNED_SHORT, 0);\n });\n },\n 'Model', []);\n\n return mod;\n};\n", "src/lib/csv.py": "raise NotImplementedError(\"csv is not yet implemented in Skulpt\")\n", "src/lib/multiprocessing/__init__.py": "raise NotImplementedError(\"multiprocessing is not yet implemented in Skulpt\")\n", "src/lib/SimpleHTTPServer.py": "raise NotImplementedError(\"SimpleHTTPServer is not yet implemented in Skulpt\")\n", "src/lib/image.js": "var ImageMod; // the single identifier needed in the global scope\nvar $builtinmodule;\n\nif (!ImageMod) {\n ImageMod = {};\n ImageMod.canvasLib = [];\n}\n\n$builtinmodule = function (name) {\n var screen;\n var pixel;\n var eImage;\n var mod = {};\n var updateCanvasAndSuspend;\n var initializeImage;\n var checkPixelRange;\n var remapImageIdToURL;\n\n var image = function ($gbl, $loc) {\n initializeImage = function (self) {\n self.width = self.image.width;\n self.height = self.image.height;\n self.delay = 0;\n self.updateCount = 0;\n self.updateInterval = 1;\n self.lastx = 0;\n self.lasty = 0;\n self.canvas = document.createElement(\"canvas\");\n self.canvas.height = self.height;\n self.canvas.width = self.width;\n self.ctx = self.canvas.getContext(\"2d\");\n self.ctx.drawImage(self.image, 0, 0);\n self.imagedata = self.ctx.getImageData(0, 0, self.width, self.height);\n };\n\n\n $loc.__init__ = new Sk.builtin.func(function (self, imageId) {\n var susp;\n Sk.builtin.pyCheckArgs(\"__init__\", arguments, 2, 2);\n try {\n self.image = document.getElementById(Sk.ffi.remapToJs(imageId));\n initializeImage(self);\n } catch (e) {\n self.image = null;\n }\n if (self.image == null) {\n susp = new Sk.misceval.Suspension();\n susp.resume = function () {\n // Should the post image get stuff go here??\n if (susp.data[\"error\"]) {\n throw new Sk.builtin.IOError(susp.data[\"error\"].message);\n }\n };\n susp.data = {\n type: \"Sk.promise\",\n promise: new Promise(function (resolve, reject) {\n var newImg = new Image();\n newImg.crossOrigin = \"\";\n newImg.onerror = function () {\n reject(Error(\"Failed to load URL: \" + newImg.src));\n };\n newImg.onload = function () {\n self.image = this;\n initializeImage(self);\n resolve();\n };\n // look for mapping from imagename to url and possible an image proxy server\n newImg.src = remapImageIdToURL(imageId);\n }\n )\n };\n return susp;\n }\n\n });\n\n remapImageIdToURL = function (imageId) {\n // if imageId starts with http -- OK\n // if imageId is in Sk.imageMap -- look it up\n // if imageId is the name of an image file prepend http://host/app/book/_static/\n // if image proxy server is configured construct url for proxy\n // return the final URL\n var url;\n var ret;\n ret = Sk.ffi.remapToJs(imageId);\n url = document.createElement(\"a\");\n url.href = ret;\n if (window.location.host !== url.host) {\n ret = Sk.imageProxy + \"/\" + ret;\n }\n return ret;\n };\n\n checkPixelRange = function (self, x, y) {\n if (x < 0 || y < 0 || x >= self.width || y >= self.height) {\n throw new Sk.builtin.ValueError(\"Pixel index out of range.\");\n }\n };\n\n $loc.setDelay = new Sk.builtin.func(function (self, delay, interval) {\n var i;\n Sk.builtin.pyCheckArgs(\"setDelay\", arguments, 2, 3);\n self.delay = Sk.ffi.remapToJs(delay);\n i = Sk.builtin.asnum$(interval);\n if (!i) {\n self.updateInterval = 1;\n } else {\n self.updateInterval = i;\n }\n });\n\n\n //get a one-dimensional array of pixel objects - Zhu\n $loc.getPixels = new Sk.builtin.func(function (self) {\n var arr = [];//initial array\n var i;\n Sk.builtin.pyCheckArgs(\"getPixels\", arguments, 1, 1);\n\n for (i = 0; i < self.image.height * self.image.width; i++) {\n\n arr[i] = Sk.misceval.callsim(self.getPixel, self,\n i % self.image.width, Math.floor(i / self.image.width));\n }\n return new Sk.builtin.tuple(arr);\n });\n\n $loc.getPixel = new Sk.builtin.func(function (self, x, y) {\n var red;\n var blue;\n var green;\n var index;\n Sk.builtin.pyCheckArgs(\"getPixel\", arguments, 3, 3);\n x = Sk.builtin.asnum$(x);\n y = Sk.builtin.asnum$(y);\n checkPixelRange(self, x, y);\n index = (y * 4) * self.width + (x * 4);\n red = self.imagedata.data[index];\n green = self.imagedata.data[index + 1];\n blue = self.imagedata.data[index + 2];\n return Sk.misceval.callsim(mod.Pixel, red, green, blue, x, y);\n });\n\n updateCanvasAndSuspend = function (self, x, y) {\n var susp = new Sk.misceval.Suspension();\n susp.resume = function () {\n return Sk.builtin.none.none$;\n };\n susp.data = {\n type: \"Sk.promise\",\n promise: new Promise(function (resolve, reject) {\n self.updateCount++;\n if ((self.updateCount % self.updateInterval) === 0) {\n if (self.lastx + self.updateInterval >= self.width) {\n self.lastCtx.putImageData(self.imagedata, self.lastUlx, self.lastUly,\n 0, self.lasty, self.width, 2);\n } else if (self.lasty + self.updateInterval >= self.height) {\n self.lastCtx.putImageData(self.imagedata, self.lastUlx, self.lastUly,\n self.lastx, 0, 2, self.height);\n } else {\n self.lastCtx.putImageData(self.imagedata, self.lastUlx, self.lastUly,\n Math.min(x, self.lastx),\n Math.min(y, self.lasty),\n Math.max(Math.abs(x - self.lastx), 1),\n Math.max(Math.abs(y - self.lasty), 1));\n }\n self.lastx = x;\n self.lasty = y;\n if (self.delay > 0) {\n window.setTimeout(resolve, self.delay);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n })\n };\n return susp;\n };\n\n $loc.setPixel = new Sk.builtin.func(function (self, x, y, pix) {\n var index;\n Sk.builtin.pyCheckArgs(\"setPixel\", arguments, 4, 4);\n x = Sk.builtin.asnum$(x);\n y = Sk.builtin.asnum$(y);\n checkPixelRange(self, x, y);\n index = (y * 4) * self.width + (x * 4);\n self.imagedata.data[index] = Sk.builtin.asnum$(Sk.misceval.callsim(pix.getRed, pix));\n self.imagedata.data[index + 1] = Sk.builtin.asnum$(Sk.misceval.callsim(pix.getGreen, pix));\n self.imagedata.data[index + 2] = Sk.builtin.asnum$(Sk.misceval.callsim(pix.getBlue, pix));\n self.imagedata.data[index + 3] = 255;\n return updateCanvasAndSuspend(self, x, y);\n });\n\n // update the image with the pixel at the given count - Zhu\n $loc.setPixelAt = new Sk.builtin.func(function (self, count, pixel) {\n var x;\n var y;\n var index;\n Sk.builtin.pyCheckArgs(\"setPixelAt\", arguments, 3, 3);\n count = Sk.builtin.asnum$(count);\n x = count % self.image.width;\n y = Math.floor(count / self.image.width);\n checkPixelRange(self, x, y);\n index = (y * 4) * self.width + (x * 4);\n self.imagedata.data[index] = Sk.builtin.asnum$(Sk.misceval.callsim(pixel.getRed, pixel));\n self.imagedata.data[index + 1] = Sk.builtin.asnum$(Sk.misceval.callsim(pixel.getGreen, pixel));\n self.imagedata.data[index + 2] = Sk.builtin.asnum$(Sk.misceval.callsim(pixel.getBlue, pixel));\n self.imagedata.data[index + 3] = 255;\n return updateCanvasAndSuspend(self, x, y);\n });\n\n // new updatePixel that uses the saved x and y location in the pixel - Barb Ericson\n $loc.updatePixel = new Sk.builtin.func(function (self, pixel) {\n var x;\n var y;\n var index;\n Sk.builtin.pyCheckArgs(\"updatePixel\", arguments, 2, 2);\n x = Sk.builtin.asnum$(Sk.misceval.callsim(pixel.getX, pixel));\n y = Sk.builtin.asnum$(Sk.misceval.callsim(pixel.getY, pixel));\n checkPixelRange(self, x, y);\n index = (y * 4) * self.width + (x * 4);\n self.imagedata.data[index] = Sk.builtin.asnum$(Sk.misceval.callsim(pixel.getRed, pixel));\n self.imagedata.data[index + 1] = Sk.builtin.asnum$(Sk.misceval.callsim(pixel.getGreen, pixel));\n self.imagedata.data[index + 2] = Sk.builtin.asnum$(Sk.misceval.callsim(pixel.getBlue, pixel));\n self.imagedata.data[index + 3] = 255;\n return updateCanvasAndSuspend(self, x, y);\n });\n\n $loc.getHeight = new Sk.builtin.func(function (self) {\n Sk.builtin.pyCheckArgs(\"getHeight\", arguments, 1, 1);\n return new Sk.builtin.nmber(self.image.height, Sk.builtin.nmber.int$);\n });\n\n $loc.getWidth = new Sk.builtin.func(function (self, titlestring) {\n Sk.builtin.pyCheckArgs(\"getWidth\", arguments, 1, 1);\n return new Sk.builtin.nmber(self.image.width, Sk.builtin.nmber.int$);\n });\n\n $loc.draw = new Sk.builtin.func(function (self, win, ulx, uly) {\n var susp;\n Sk.builtin.pyCheckArgs(\"draw\", arguments, 2, 4);\n susp = new Sk.misceval.Suspension();\n susp.resume = function () {\n return Sk.builtin.none.none$;\n };\n susp.data = {\n type: \"Sk.promise\",\n promise: new Promise(function (resolve, reject) {\n var can;\n var ctx;\n win = Sk.builtin.asnum$(win);\n ulx = Sk.builtin.asnum$(ulx);\n uly = Sk.builtin.asnum$(uly);\n can = Sk.misceval.callsim(win.getWin, win);\n ctx = can.getContext(\"2d\");\n if (!ulx) {\n ulx = 0;\n uly = 0;\n }\n self.lastUlx = ulx;\n self.lastUly = uly;\n self.lastCtx = ctx; // save a reference to the context of the window the image was last drawn in\n //ctx.putImageData(self.imagedata,0,0,0,0,self.imagedata.width,self.imagedata.height);\n ctx.putImageData(self.imagedata, ulx, uly);\n\n if (self.delay > 0) {\n window.setTimeout(resolve, self.delay);\n } else {\n window.setTimeout(resolve, 200);\n }\n })\n };\n return susp;\n\n });\n\n // toList\n\n };\n\n mod.Image = Sk.misceval.buildClass(mod, image, \"Image\", []);\n\n eImage = function ($gbl, $loc) {\n $loc.__init__ = new Sk.builtin.func(function (self, width, height) {\n Sk.builtin.pyCheckArgs(\"__init__\", arguments, 3, 3);\n self.width = Sk.builtin.asnum$(width);\n self.height = Sk.builtin.asnum$(height);\n self.canvas = document.createElement(\"canvas\");\n self.ctx = self.canvas.getContext(\"2d\");\n self.canvas.height = self.height;\n self.canvas.width = self.width;\n self.imagedata = self.ctx.getImageData(0, 0, self.width, self.height);\n });\n\n };\n\n mod.EmptyImage = Sk.misceval.buildClass(mod, eImage, \"EmptyImage\", [mod.Image]);\n\n // create a ListImage object\n\n\n pixel = function ($gbl, $loc) {\n $loc.__init__ = new Sk.builtin.func(function (self, r, g, b, x, y) {\n Sk.builtin.pyCheckArgs(\"__init__\", arguments, 4, 6);\n self.red = Sk.builtin.asnum$(r);\n self.green = Sk.builtin.asnum$(g);\n self.blue = Sk.builtin.asnum$(b);\n self.x = Sk.builtin.asnum$(x);\n self.y = Sk.builtin.asnum$(y);\n });\n\n $loc.getRed = new Sk.builtin.func(function (self) {\n Sk.builtin.pyCheckArgs(\"getRed\", arguments, 1, 1);\n return new Sk.builtin.nmber(self.red);\n });\n\n $loc.getGreen = new Sk.builtin.func(function (self) {\n Sk.builtin.pyCheckArgs(\"getGreen\", arguments, 1, 1);\n return new Sk.builtin.nmber(self.green);\n });\n\n $loc.getBlue = new Sk.builtin.func(function (self) {\n Sk.builtin.pyCheckArgs(\"getBlue\", arguments, 1, 1);\n return new Sk.builtin.nmber(self.blue);\n });\n\n $loc.getX = new Sk.builtin.func(function (self) {\n Sk.builtin.pyCheckArgs(\"getX\", arguments, 1, 1);\n return new Sk.builtin.nmber(self.x);\n });\n\n $loc.getY = new Sk.builtin.func(function (self) {\n Sk.builtin.pyCheckArgs(\"getY\", arguments, 1, 1);\n return new Sk.builtin.nmber(self.y);\n });\n\n $loc.setRed = new Sk.builtin.func(function (self, r) {\n Sk.builtin.pyCheckArgs(\"setRed\", arguments, 2, 2);\n self.red = Sk.builtin.asnum$(r);\n });\n\n $loc.setGreen = new Sk.builtin.func(function (self, g) {\n Sk.builtin.pyCheckArgs(\"setGreen\", arguments, 2, 2);\n self.green = Sk.builtin.asnum$(g);\n });\n\n $loc.setBlue = new Sk.builtin.func(function (self, b) {\n Sk.builtin.pyCheckArgs(\"setBlue\", arguments, 2, 2);\n self.blue = Sk.builtin.asnum$(b);\n });\n\n $loc.setX = new Sk.builtin.func(function (self, x) {\n Sk.builtin.pyCheckArgs(\"setX\", arguments, 2, 2);\n self.x = Sk.builtin.asnum$(x);\n });\n\n $loc.setY = new Sk.builtin.func(function (self, y) {\n Sk.builtin.pyCheckArgs(\"setY\", arguments, 2, 2);\n self.y = Sk.builtin.asnum$(y);\n });\n\n $loc.__getitem__ = new Sk.builtin.func(function (self, k) {\n k = Sk.builtin.asnum$(k);\n if (k === 0) {\n return self.red;\n } else if (k == 1) {\n return self.green;\n } else if (k == 2) {\n return self.blue;\n }\n });\n\n $loc.__str__ = new Sk.builtin.func(function (self) {\n return \"[\" + self.red + \",\" + self.green + \",\" + self.blue + \"]\";\n });\n\n //getColorTuple\n $loc.getColorTuple = new Sk.builtin.func(function (self, x, y) {\n\n });\n\n //setRange -- change from 0..255 to 0.0 .. 1.0\n $loc.setRange = new Sk.builtin.func(function (self, mx) {\n self.max = Sk.builtin.asnum$(mx);\n });\n\n };\n mod.Pixel = Sk.misceval.buildClass(mod, pixel, \"Pixel\", []);\n\n\n screen = function ($gbl, $loc) {\n $loc.__init__ = new Sk.builtin.func(function (self, width, height) {\n var currentCanvas;\n var tmpCan, tmpDiv;\n Sk.builtin.pyCheckArgs(\"__init__\", arguments, 1, 3);\n currentCanvas = ImageMod.canvasLib[Sk.canvas];\n if (currentCanvas === undefined) {\n tmpCan = document.createElement(\"canvas\");\n tmpDiv = document.getElementById(Sk.canvas);\n self.theScreen = tmpCan;\n tmpDiv.appendChild(tmpCan);\n ImageMod.canvasLib[Sk.canvas] = tmpCan;\n ImageMod.canvasLib[Sk.canvas] = self.theScreen;\n } else {\n self.theScreen = currentCanvas;\n self.theScreen.height = self.theScreen.height;\n }\n if (width !== undefined) {\n self.theScreen.height = height.v;\n self.theScreen.width = width.v;\n } else {\n if (Sk.availableHeight) {\n self.theScreen.height = Sk.availableHeight;\n }\n if (Sk.availableWidth) {\n self.theScreen.width = Sk.availableWidth;\n }\n }\n\n self.theScreen.style.display = \"block\";\n });\n\n $loc.getWin = new Sk.builtin.func(function (self) {\n return self.theScreen;\n });\n\n // exitonclick\n $loc.exitonclick = new Sk.builtin.func(function (self) {\n var canvas_id = self.theScreen.id;\n self.theScreen.onclick = function () {\n document.getElementById(canvas_id).style.display = \"none\";\n document.getElementById(canvas_id).onclick = null;\n delete ImageMod.canvasLib[canvas_id];\n };\n\n });\n //getMouse\n };\n\n mod.ImageWin = Sk.misceval.buildClass(mod, screen, \"ImageWin\", []);\n\n return mod;\n};\n", "src/lib/wsgiref/__init__.py": "raise NotImplementedError(\"wsgiref is not yet implemented in Skulpt\")\n", "src/lib/httplib.py": "raise NotImplementedError(\"httplib is not yet implemented in Skulpt\")\n", "src/lib/lib2to3/__init__.py": "raise NotImplementedError(\"lib2to3 is not yet implemented in Skulpt\")\n", "src/lib/json/tests/__init__.py": "raise NotImplementedError(\"tests is not yet implemented in Skulpt\")\n", "src/lib/quopri.py": "raise NotImplementedError(\"quopri is not yet implemented in Skulpt\")\n", "src/lib/ftplib.py": "raise NotImplementedError(\"ftplib is not yet implemented in Skulpt\")\n", "src/lib/ctypes/__init__.py": "raise NotImplementedError(\"ctypes is not yet implemented in Skulpt\")\n", "src/lib/subprocess.py": "raise NotImplementedError(\"subprocess is not yet implemented in Skulpt\")\n", "src/lib/lib-dynload/__init__.py": "raise NotImplementedError(\"lib-dynload is not yet implemented in Skulpt\")\n", "src/lib/cProfile.py": "raise NotImplementedError(\"cProfile is not yet implemented in Skulpt\")\n", "src/lib/stringold.py": "raise NotImplementedError(\"stringold is not yet implemented in Skulpt\")\n", "src/lib/sgmllib.py": "raise NotImplementedError(\"sgmllib is not yet implemented in Skulpt\")\n", "src/lib/plistlib.py": "raise NotImplementedError(\"plistlib is not yet implemented in Skulpt\")\n", "src/lib/tarfile.py": "raise NotImplementedError(\"tarfile is not yet implemented in Skulpt\")\n", "src/lib/pydoc_topics.py": "raise NotImplementedError(\"pydoc_topics is not yet implemented in Skulpt\")\n", "src/lib/keyword.py": "\n__all__ = [\"iskeyword\", \"kwlist\"]\n\nkwlist = [\n#--start keywords--\n 'and',\n 'as',\n 'assert',\n 'break',\n 'class',\n 'continue',\n 'def',\n 'del',\n 'elif',\n 'else',\n 'except',\n 'exec',\n 'finally',\n 'for',\n 'from',\n 'global',\n 'if',\n 'import',\n 'in',\n 'is',\n 'lambda',\n 'not',\n 'or',\n 'pass',\n 'print',\n 'raise',\n 'return',\n 'try',\n 'while',\n 'with',\n 'yield',\n#--end keywords--\n ]\n\ndef iskeyword(wd):\n return wd in kwlist\n\n", "src/lib/pythonds/basic/stack.py": "# Bradley N. Miller, David L. Ranum\n# Introduction to Data Structures and Algorithms in Python\n# Copyright 2005\n# \n#stack.py\r\n\r\nclass Stack:\r\n def __init__(self):\r\n self.items = []\r\n\r\n def isEmpty(self):\r\n return self.items == []\r\n\r\n def push(self, item):\r\n self.items.append(item)\r\n\r\n def pop(self):\r\n return self.items.pop()\r\n\r\n def peek(self):\r\n return self.items[len(self.items)-1]\r\n\r\n def size(self):\r\n return len(self.items)\r\n\r\n", "src/lib/asynchat.py": "raise NotImplementedError(\"asynchat is not yet implemented in Skulpt\")\n", "src/lib/mimetools.py": "raise NotImplementedError(\"mimetools is not yet implemented in Skulpt\")\n", "src/lib/pythonds/trees/bst.py": "#!/bin/env python3.1\n# Bradley N. Miller, David L. Ranum\n# Introduction to Data Structures and Algorithms in Python\n# Copyright 2005, 2010\n# \n\nclass BinarySearchTree:\n '''\n Author: Brad Miller\n Date: 1/15/2005\n Description: Imlement a binary search tree with the following interface\n functions: \n __contains__(y) <==> y in x\n __getitem__(y) <==> x[y]\n __init__()\n __len__() <==> len(x)\n __setitem__(k,v) <==> x[k] = v\n clear()\n get(k)\n items() \n keys() \n values()\n put(k,v)\n in\n del <==> \n '''\n\n def __init__(self):\n self.root = None\n self.size = 0\n \n def put(self,key,val):\n if self.root:\n self._put(key,val,self.root)\n else:\n self.root = TreeNode(key,val)\n self.size = self.size + 1\n\n def _put(self,key,val,currentNode):\n if key < currentNode.key:\n if currentNode.hasLeftChild():\n self._put(key,val,currentNode.leftChild)\n else:\n currentNode.leftChild = TreeNode(key,val,parent=currentNode)\n else:\n if currentNode.hasRightChild():\n self._put(key,val,currentNode.rightChild)\n else:\n currentNode.rightChild = TreeNode(key,val,parent=currentNode)\n \n def __setitem__(self,k,v):\n self.put(k,v)\n\n def get(self,key):\n if self.root:\n res = self._get(key,self.root)\n if res:\n return res.payload\n else:\n return None\n else:\n return None\n \n def _get(self,key,currentNode):\n if not currentNode:\n return None\n elif currentNode.key == key:\n return currentNode\n elif key < currentNode.key:\n return self._get(key,currentNode.leftChild)\n else:\n return self._get(key,currentNode.rightChild)\n \n \n def __getitem__(self,key):\n res = self.get(key)\n if res:\n return res\n else:\n raise KeyError('Error, key not in tree')\n \n\n def __contains__(self,key):\n if self._get(key,self.root):\n return True\n else:\n return False\n \n def length(self):\n return self.size\n\n def __len__(self):\n return self.size\n\n def __iter__(self):\n return self.root.__iter__()\n \n def delete(self,key):\n if self.size > 1:\n nodeToRemove = self._get(key,self.root)\n if nodeToRemove:\n self.remove(nodeToRemove)\n self.size = self.size-1\n else:\n raise KeyError('Error, key not in tree')\n elif self.size == 1 and self.root.key == key:\n self.root = None\n self.size = self.size - 1\n else:\n raise KeyError('Error, key not in tree')\n\n def __delitem__(self,key):\n self.delete(key)\n \n def remove(self,currentNode):\n if currentNode.isLeaf(): #leaf\n if currentNode == currentNode.parent.leftChild:\n currentNode.parent.leftChild = None\n else:\n currentNode.parent.rightChild = None\n elif currentNode.hasBothChildren(): #interior\n succ = currentNode.findSuccessor()\n succ.spliceOut()\n currentNode.key = succ.key\n currentNode.payload = succ.payload\n else: # this node has one child\n if currentNode.hasLeftChild():\n if currentNode.isLeftChild():\n currentNode.leftChild.parent = currentNode.parent\n currentNode.parent.leftChild = currentNode.leftChild\n elif currentNode.isRightChild():\n currentNode.leftChild.parent = currentNode.parent\n currentNode.parent.rightChild = currentNode.leftChild\n else:\n currentNode.replaceNodeData(currentNode.leftChild.key,\n currentNode.leftChild.payload,\n currentNode.leftChild.leftChild,\n currentNode.leftChild.rightChild)\n else:\n if currentNode.isLeftChild():\n currentNode.rightChild.parent = currentNode.parent\n currentNode.parent.leftChild = currentNode.rightChild\n elif currentNode.isRightChild():\n currentNode.rightChild.parent = currentNode.parent\n currentNode.parent.rightChild = currentNode.rightChild\n else:\n currentNode.replaceNodeData(currentNode.rightChild.key,\n currentNode.rightChild.payload,\n currentNode.rightChild.leftChild,\n currentNode.rightChild.rightChild)\n\n def inorder(self):\n self._inorder(self.root)\n\n def _inorder(self,tree):\n if tree != None:\n self._inorder(tree.leftChild)\n print(tree.key)\n self._inorder(tree.rightChild)\n\n def postorder(self):\n self._postorder(self.root)\n\n def _postorder(self, tree):\n if tree:\n self._postorder(tree.rightChild)\n self._postorder(tree.leftChild)\n print(tree.key) \n\n def preorder(self):\n self._preorder(self,self.root)\n\n def _preorder(self,tree):\n if tree:\n print(tree.key) \n self._preorder(tree.leftChild)\n self._preorder(tree.rightChild)\n\n \nclass TreeNode:\n def __init__(self,key,val,left=None,right=None,parent=None):\n self.key = key\n self.payload = val\n self.leftChild = left\n self.rightChild = right\n self.parent = parent\n self.balanceFactor = 0\n \n def hasLeftChild(self):\n return self.leftChild\n\n def hasRightChild(self):\n return self.rightChild\n \n def isLeftChild(self):\n return self.parent and self.parent.leftChild == self\n\n def isRightChild(self):\n return self.parent and self.parent.rightChild == self\n\n def isRoot(self):\n return not self.parent\n\n def isLeaf(self):\n return not (self.rightChild or self.leftChild)\n\n def hasAnyChildren(self):\n return self.rightChild or self.leftChild\n\n def hasBothChildren(self):\n return self.rightChild and self.leftChild\n \n def replaceNodeData(self,key,value,lc,rc):\n self.key = key\n self.payload = value\n self.leftChild = lc\n self.rightChild = rc\n if self.hasLeftChild():\n self.leftChild.parent = self\n if self.hasRightChild():\n self.rightChild.parent = self\n \n def findSuccessor(self):\n succ = None\n if self.hasRightChild():\n succ = self.rightChild.findMin()\n else:\n if self.parent:\n if self.isLeftChild():\n succ = self.parent\n else:\n self.parent.rightChild = None\n succ = self.parent.findSuccessor()\n self.parent.rightChild = self\n return succ\n\n\n def spliceOut(self):\n if self.isLeaf():\n if self.isLeftChild():\n self.parent.leftChild = None\n else:\n self.parent.rightChild = None\n elif self.hasAnyChildren():\n if self.hasLeftChild():\n if self.isLeftChild():\n self.parent.leftChild = self.leftChild\n else:\n self.parent.rightChild = self.leftChild\n self.leftChild.parent = self.parent\n else:\n if self.isLeftChild():\n self.parent.leftChild = self.rightChild\n else:\n self.parent.rightChild = self.rightChild\n self.rightChild.parent = self.parent\n\n def findMin(self):\n current = self\n while current.hasLeftChild():\n current = current.leftChild\n return current\n\n def __iter__(self):\n \"\"\"The standard inorder traversal of a binary tree.\"\"\"\n if self:\n if self.hasLeftChild():\n for elem in self.leftChild:\n yield elem\n yield self.key\n if self.hasRightChild():\n for elem in self.rightChild:\n yield elem\n\n \n", "src/lib/document.js": "var $builtinmodule = function (name) {\n var elementClass;\n var mod = {};\n\n mod.getElementById = new Sk.builtin.func(function (id) {\n var result = document.getElementById(id.v);\n if (result) {\n return Sk.misceval.callsim(mod.Element, result);\n }\n return Sk.builtin.none.none$;\n });\n\n mod.createElement = new Sk.builtin.func(function (eName) {\n var r = document.createElement(eName.v);\n if (r) {\n return Sk.misceval.callsim(mod.Element, r);\n }\n });\n\n\n mod.getElementsByTagName = new Sk.builtin.func(function (tag) {\n var r = document.getElementsByTagName(tag.v)\n var reslist = [];\n for (var i = r.length - 1; i >= 0; i--) {\n reslist.push(Sk.misceval.callsim(mod.Element, r[i]))\n }\n return new Sk.builtin.list(reslist)\n });\n\n mod.getElementsByClassName = new Sk.builtin.func(function (cname) {\n var r = document.getElementsByClassName(cname.v);\n var reslist = [];\n for (var i = 0; i < r.length; i++) {\n reslist.push(Sk.misceval.callsim(mod.Element, r[i]));\n }\n ;\n return new Sk.builtin.list(reslist);\n });\n\n mod.getElementsByName = new Sk.builtin.func(function (cname) {\n var r = document.getElementsByName(cname.v);\n var reslist = [];\n for (var i = 0; i < r.length; i++) {\n reslist.push(Sk.misceval.callsim(mod.Element, r[i]));\n }\n ;\n return new Sk.builtin.list(reslist);\n });\n\n mod.currentDiv = new Sk.builtin.func(function () {\n if (Sk.divid !== undefined) {\n return new Sk.builtin.str(Sk.divid)\n }\n else {\n throw new Sk.builtin.AttributeError(\"There is no value set for divid\");\n }\n })\n\n elementClass = function ($gbl, $loc) {\n /*\n Notes: self['$d'] is the dictionary used by the GenericGetAttr mechanism for an object.\n for various reasons if you create a class in Javascript and have self.xxxx instance\n variables, you cannot say instance.xxx and get the value of the instance variable unless\n it is stored in the self['$d'] object. This seems like a duplication of storage to me\n but that is how it works right now (5/2013)\n\n Writing your own __getattr__ is also an option but this gets very tricky when an attr is\n a method...\n */\n $loc.__init__ = new Sk.builtin.func(function (self, elem) {\n self.v = elem\n self.innerHTML = elem.innerHTML\n self.innerText = elem.innerText\n if (elem.value !== undefined) {\n self.value = elem.value\n Sk.abstr.objectSetItem(self['$d'], new Sk.builtin.str('value'), new Sk.builtin.str(self.value))\n }\n\n if (elem.checked !== undefined) {\n self.checked = elem.checked\n Sk.abstr.objectSetItem(self['$d'], new Sk.builtin.str('checked'), new Sk.builtin.str(self.checked))\n }\n\n Sk.abstr.objectSetItem(self['$d'], new Sk.builtin.str('innerHTML'), new Sk.builtin.str(self.innerHTML))\n Sk.abstr.objectSetItem(self['$d'], new Sk.builtin.str('innerText'), new Sk.builtin.str(self.innerText))\n\n })\n\n $loc.tp$getattr = Sk.builtin.object.prototype.GenericGetAttr;\n\n $loc.__setattr__ = new Sk.builtin.func(function (self, key, value) {\n key = Sk.ffi.remapToJs(key);\n if (key === 'innerHTML') {\n self.innerHTML = value\n self.v.innerHTML = value.v\n Sk.abstr.objectSetItem(self['$d'], new Sk.builtin.str('innerHTML'), value)\n }\n if (key === 'innerText') {\n self.innerText = value\n self.v.innerText = value.v\n Sk.abstr.objectSetItem(self['$d'], new Sk.builtin.str('innerText'), value)\n }\n });\n\n\n $loc.appendChild = new Sk.builtin.func(function (self, ch) {\n self.v.appendChild(ch.v);\n });\n\n $loc.removeChild = new Sk.builtin.func(function (self, node) {\n self.v.removeChild(node.v)\n })\n\n // getCSS\n\n $loc.getCSS = new Sk.builtin.func(function (self, key) {\n return new Sk.builtin.str(self.v.style[key.v]);\n });\n\n\n $loc.setCSS = new Sk.builtin.func(function (self, attr, value) {\n self.v.style[attr.v] = value.v\n\n })\n\n $loc.getAttribute = new Sk.builtin.func(function (self, key) {\n var res = self.v.getAttribute(key.v)\n if (res) {\n return new Sk.builtin.str(res)\n } else {\n return Sk.builtin.none.none$;\n }\n });\n\n $loc.setAttribute = new Sk.builtin.func(function (self, attr, value) {\n self.v.setAttribute(attr.v, value.v)\n });\n\n $loc.getProperty = new Sk.builtin.func(function (self, key) {\n var res = self.v[key.v]\n if (res) {\n return new Sk.builtin.str(res)\n } else {\n return Sk.builtin.none.none$;\n }\n });\n\n $loc.__str__ = new Sk.builtin.func(function (self) {\n console.log(self.v.tagName);\n return new Sk.builtin.str(self.v.tagName)\n })\n\n $loc.__repr__ = new Sk.builtin.func(function (self) {\n return new Sk.builtin.str('[DOM Element]')\n })\n\n\n };\n\n mod.Element = Sk.misceval.buildClass(mod, elementClass, 'Element', []);\n\n return mod;\n\n}\n", "src/lib/hashlib.py": "raise NotImplementedError(\"hashlib is not yet implemented in Skulpt\")\n", "src/lib/_threading_local.py": "raise NotImplementedError(\"_threading_local is not yet implemented in Skulpt\")\n", "src/lib/profile.py": "raise NotImplementedError(\"profile is not yet implemented in Skulpt\")\n", "src/lib/copy.py": "raise NotImplementedError(\"copy is not yet implemented in Skulpt\")\n", "src/lib/binhex.py": "raise NotImplementedError(\"binhex is not yet implemented in Skulpt\")\n", "src/lib/dircache.py": "raise NotImplementedError(\"dircache is not yet implemented in Skulpt\")\n", "src/lib/cgi.py": "raise NotImplementedError(\"cgi is not yet implemented in Skulpt\")\n", "src/lib/asyncore.py": "raise NotImplementedError(\"asyncore is not yet implemented in Skulpt\")\n", "src/lib/netrc.py": "raise NotImplementedError(\"netrc is not yet implemented in Skulpt\")\n", "src/lib/commands.py": "raise NotImplementedError(\"commands is not yet implemented in Skulpt\")\n", "src/lib/bsddb/__init__.py": "raise NotImplementedError(\"bsddb is not yet implemented in Skulpt\")\n", "src/lib/sunaudio.py": "raise NotImplementedError(\"sunaudio is not yet implemented in Skulpt\")\n", "src/lib/md5.py": "raise NotImplementedError(\"md5 is not yet implemented in Skulpt\")\n", "src/lib/struct.py": "raise NotImplementedError(\"struct is not yet implemented in Skulpt\")\n", "src/lib/sunau.py": "raise NotImplementedError(\"sunau is not yet implemented in Skulpt\")\n", "src/lib/rexec.py": "raise NotImplementedError(\"rexec is not yet implemented in Skulpt\")\n", "src/lib/glob.py": "raise NotImplementedError(\"glob is not yet implemented in Skulpt\")\n", "src/lib/pipes.py": "raise NotImplementedError(\"pipes is not yet implemented in Skulpt\")\n", "src/lib/smtpd.py": "raise NotImplementedError(\"smtpd is not yet implemented in Skulpt\")\n", "src/lib/os2emxpath.py": "raise NotImplementedError(\"os2emxpath is not yet implemented in Skulpt\")\n", "src/lib/collections.js": "var $builtinmodule = function (name) {\n\n var mod = {};\n\n // defaultdict object\n\n mod.defaultdict = function defaultdict(default_, args) {\n if (!(this instanceof mod.defaultdict)) {\n return new mod.defaultdict(default_, args);\n }\n\n Sk.builtin.dict.call(this, args);\n\n if (default_ === undefined) {\n this.default_factory = Sk.builtin.none.none$;\n }\n else {\n if (!Sk.builtin.checkCallable(default_) && !(default_ instanceof Sk.builtin.none)) {\n throw new Sk.builtin.TypeError(\"first argument must be callable\");\n }\n this.default_factory = default_;\n }\n\n if (this['$d']) {\n this['$d']['default_factory'] = this.default_factory;\n }\n else {\n this['$d'] = {'default_factory': this.default_factory};\n }\n\n return this;\n };\n\n mod.defaultdict.prototype = Object.create(Sk.builtin.dict.prototype);\n\n mod.defaultdict.prototype.tp$name = 'defaultdict';\n\n mod.defaultdict.prototype.ob$type = Sk.builtin.type.makeIntoTypeObj('defaultdict', mod.defaultdict);\n\n mod.defaultdict.prototype['$r'] = function () {\n var def_str = Sk.misceval.objectRepr(this.default_factory).v;\n var dict_str = Sk.builtin.dict.prototype['$r'].call(this).v;\n return new Sk.builtin.str(\"defaultdict(\" + def_str + \", \" + dict_str + \")\");\n };\n\n mod.defaultdict.prototype['__missing__'] = function (key) {\n Sk.builtin.pyCheckArgs('__missing__', arguments, 0, 1);\n if (key) {\n throw new Sk.builtin.KeyError(Sk.misceval.objectRepr(key));\n }\n else {\n return Sk.misceval.callsim(this.default_factory);\n }\n };\n\n mod.defaultdict.prototype.mp$subscript = function (key) {\n try {\n return Sk.builtin.dict.prototype.mp$subscript.call(this, key);\n }\n catch (e) {\n if (this.default_factory instanceof Sk.builtin.none) {\n return this.__missing__(key);\n }\n else {\n ret = this.__missing__();\n this.mp$ass_subscript(key, ret);\n return ret;\n }\n }\n };\n\n // Counter object\n\n mod.Counter = function Counter(iter_or_map) {\n if (!(this instanceof mod.Counter)) {\n return new mod.Counter(iter_or_map);\n }\n\n if (iter_or_map instanceof Sk.builtin.dict || iter_or_map === undefined) {\n Sk.builtin.dict.call(this, iter_or_map);\n }\n else {\n if (!(Sk.builtin.checkIterable(iter_or_map))) {\n throw new Sk.builtin.TypeError(\"'\" + Sk.abstr.typeName(iter_or_map) + \"' object is not iterable\");\n }\n\n Sk.builtin.dict.call(this);\n var one = Sk.builtin.nmber(1, Sk.builtin.nmber.int$);\n\n for (var iter = iter_or_map.tp$iter(), k = iter.tp$iternext();\n k !== undefined;\n k = iter.tp$iternext()) {\n var count = this.mp$subscript(k);\n count = count.nb$add(one);\n this.mp$ass_subscript(k, count);\n }\n }\n\n return this;\n };\n\n mod.Counter.prototype = Object.create(Sk.builtin.dict.prototype);\n\n mod.Counter.prototype.tp$name = 'Counter';\n\n mod.Counter.prototype.ob$type = Sk.builtin.type.makeIntoTypeObj('Counter', mod.Counter);\n\n mod.Counter.prototype['$r'] = function () {\n var dict_str = this.size > 0 ? Sk.builtin.dict.prototype['$r'].call(this).v : '';\n return new Sk.builtin.str('Counter(' + dict_str + ')');\n };\n\n mod.Counter.prototype.mp$subscript = function (key) {\n try {\n return Sk.builtin.dict.prototype.mp$subscript.call(this, key);\n }\n catch (e) {\n return new Sk.builtin.nmber(0, Sk.builtin.nmber.int$);\n }\n };\n\n mod.Counter.prototype['elements'] = new Sk.builtin.func(function (self) {\n Sk.builtin.pyCheckArgs('elements', arguments, 1, 1);\n var all_elements = [];\n for (var iter = self.tp$iter(), k = iter.tp$iternext();\n k !== undefined;\n k = iter.tp$iternext()) {\n for (var i = 0; i < self.mp$subscript(k).v; i++) {\n all_elements.push(k);\n }\n }\n\n var ret =\n {\n tp$iter: function () {\n return ret;\n },\n $obj: this,\n $index: 0,\n $elem: all_elements,\n tp$iternext: function () {\n if (ret.$index >= ret.$elem.length) {\n return undefined;\n }\n return ret.$elem[ret.$index++];\n }\n };\n\n return ret;\n\n });\n\n mod.Counter.prototype['most_common'] = new Sk.builtin.func(function (self, n) {\n Sk.builtin.pyCheckArgs('most_common', arguments, 1, 2);\n var length = self.mp$length();\n\n if (n === undefined) {\n n = length;\n }\n else {\n if (!Sk.builtin.checkInt(n)) {\n if (n.skType === Sk.builtin.nmber.float$) {\n throw new Sk.builtin.TypeError(\"integer argument expected, got float\");\n }\n else {\n throw new Sk.builtin.TypeError(\"an integer is required\");\n }\n }\n\n n = Sk.builtin.asnum$(n);\n n = n <= length ? n : length;\n n = n >= 0 ? n : 0;\n }\n\n var most_common_elem = [];\n for (var iter = self.tp$iter(), k = iter.tp$iternext();\n k !== undefined;\n k = iter.tp$iternext()) {\n most_common_elem.push([k, self.mp$subscript(k)]);\n }\n\n var sort_func = function (a, b) {\n if (a[1].v < b[1].v) {\n return 1;\n } else if (a[1].v > b[1].v) {\n return -1;\n } else {\n return 0;\n }\n };\n most_common_elem = most_common_elem.sort(sort_func);\n\n var ret = [];\n for (var i = 0; i < n; i++) {\n ret.push(new Sk.builtin.tuple(most_common_elem.shift()));\n }\n\n return new Sk.builtin.list(ret);\n });\n\n mod.Counter.prototype['update'] = new Sk.builtin.func(function (self, other) {\n Sk.builtin.pyCheckArgs('update', arguments, 1, 2);\n\n if (other instanceof Sk.builtin.dict) {\n for (var iter = other.tp$iter(), k = iter.tp$iternext();\n k !== undefined;\n k = iter.tp$iternext()) {\n var count = self.mp$subscript(k);\n self.mp$ass_subscript(k, count.nb$add(other.mp$subscript(k)));\n }\n }\n else if (other !== undefined) {\n if (!Sk.builtin.checkIterable(other)) {\n throw new Sk.builtin.TypeError(\"'\" + Sk.abstr.typeName(other) + \"' object is not iterable\");\n }\n\n var one = new Sk.builtin.nmber(1, Sk.builtin.nmber.int$);\n for (var iter = other.tp$iter(), k = iter.tp$iternext();\n k !== undefined;\n k = iter.tp$iternext()) {\n var count = self.mp$subscript(k);\n self.mp$ass_subscript(k, count.nb$add(one));\n }\n }\n });\n\n mod.Counter.prototype['subtract'] = new Sk.builtin.func(function (self, other) {\n Sk.builtin.pyCheckArgs('subtract', arguments, 1, 2);\n\n if (other instanceof Sk.builtin.dict) {\n for (var iter = other.tp$iter(), k = iter.tp$iternext();\n k !== undefined;\n k = iter.tp$iternext()) {\n var count = self.mp$subscript(k);\n self.mp$ass_subscript(k, count.nb$subtract(other.mp$subscript(k)));\n }\n }\n else if (other !== undefined) {\n if (!Sk.builtin.checkIterable(other)) {\n throw new Sk.builtin.TypeError(\"'\" + Sk.abstr.typeName(other) + \"' object is not iterable\");\n }\n\n var one = new Sk.builtin.nmber(1, Sk.builtin.nmber.int$);\n for (var iter = other.tp$iter(), k = iter.tp$iternext();\n k !== undefined;\n k = iter.tp$iternext()) {\n var count = self.mp$subscript(k);\n self.mp$ass_subscript(k, count.nb$subtract(one));\n }\n }\n });\n\n\n // OrderedDict\n mod.OrderedDict = function OrderedDict(items)\n {\n if (!(this instanceof mod.OrderedDict))\n {\n return new mod.OrderedDict(items);\n }\n\n this.orderedkeys = [];\n\n Sk.builtin.dict.call(this, items);\n\n return this;\n }\n\n mod.OrderedDict.prototype = Object.create(Sk.builtin.dict.prototype);\n\n mod.OrderedDict.prototype.tp$name = 'OrderedDict'\n\n mod.OrderedDict.prototype.ob$type = Sk.builtin.type.makeIntoTypeObj('OrderedDict', mod.OrderedDict);\n\n mod.OrderedDict.prototype['$r'] = function()\n {\n var v;\n var iter, k;\n var ret = [];\n var pairstr;\n for (iter = this.tp$iter(), k = iter.tp$iternext();\n k !== undefined;\n k = iter.tp$iternext()) {\n v = this.mp$subscript(k);\n if (v === undefined) {\n //print(k, \"had undefined v\");\n v = null;\n }\n ret.push(\"(\" + Sk.misceval.objectRepr(k).v + \", \" + Sk.misceval.objectRepr(v).v + \")\");\n }\n pairstr = ret.join(\", \");\n if (ret.length > 0)\n {\n pairstr = \"[\" + pairstr + \"]\";\n }\n return new Sk.builtin.str(\"OrderedDict(\" + pairstr + \")\");\n }\n\n mod.OrderedDict.prototype.mp$ass_subscript = function(key, w)\n {\n var idx = this.orderedkeys.indexOf(key);\n if (idx == -1)\n {\n this.orderedkeys.push(key);\n }\n\n return Sk.builtin.dict.prototype.mp$ass_subscript.call(this, key, w);\n }\n\n mod.OrderedDict.prototype.mp$del_subscript = function(key)\n {\n var idx = this.orderedkeys.indexOf(key);\n if (idx != -1)\n {\n this.orderedkeys.splice(idx, 1);\n }\n\n return Sk.builtin.dict.prototype.mp$del_subscript.call(this, key);\n }\n\n mod.OrderedDict.prototype.tp$iter = function()\n {\n var ret;\n ret =\n {\n tp$iter : function () {\n return ret;\n },\n $obj : this,\n $index : 0,\n $keys : this.orderedkeys.slice(0),\n tp$iternext: function () {\n // todo; StopIteration\n if (ret.$index >= ret.$keys.length) {\n return undefined;\n }\n return ret.$keys[ret.$index++];\n }\n };\n return ret;\n }\n\n mod.OrderedDict.prototype.tp$richcompare = function (other, op) \n {\n var v, otherv;\n var k, otherk;\n var iter, otheriter;\n var l, otherl;\n\n if (!(other instanceof mod.OrderedDict)) \n {\n return Sk.builtin.dict.prototype.tp$richcompare.call(this, other, op);\n }\n\n // Both are OrderedDicts\n if (this === other && Sk.misceval.opAllowsEquality(op)) \n {\n return true;\n }\n\n // Only support Eq and NotEq comparisons\n switch (op) {\n case \"Lt\":\n return undefined;\n case \"LtE\":\n return undefined;\n case \"Eq\":\n break;\n case \"NotEq\":\n break;\n case \"Gt\":\n return undefined;\n case \"GtE\":\n return undefined;\n default:\n goog.asserts.fail();\n }\n\n l = this.size;\n otherl = other.size;\n\n if (l !== otherl) {\n return op !== \"Eq\";\n }\n\n for (iter = this.tp$iter(), otheriter = other.tp$iter(),\n k = iter.tp$iternext(), otherk = otheriter.tp$iternext();\n k !== undefined;\n k = iter.tp$iternext(), otherk = otheriter.tp$iternext()) \n {\n if (!Sk.misceval.richCompareBool(k, otherk, \"Eq\"))\n {\n return op !== \"Eq\";\n }\n v = this.mp$subscript(k);\n otherv = other.mp$subscript(otherk);\n \n if (!Sk.misceval.richCompareBool(v, otherv, \"Eq\")) {\n return op !== \"Eq\";\n }\n }\n\n return op === \"Eq\"; \n }\n\n mod.OrderedDict.prototype[\"pop\"] = new Sk.builtin.func(function (self, key, d) {\n var s;\n var idx;\n\n Sk.builtin.pyCheckArgs('pop', arguments, 2, 3);\n\n idx = self.orderedkeys.indexOf(key);\n if (idx != -1)\n {\n self.orderedkeys.splice(idx, 1);\n }\n\n return Sk.misceval.callsim(Sk.builtin.dict.prototype[\"pop\"], self, key, d);\n });\n\n mod.OrderedDict.prototype[\"popitem\"] = new Sk.builtin.func(function (self, last) {\n var key, val;\n var s;\n\n Sk.builtin.pyCheckArgs('popitem', arguments, 1, 2);\n\n // Empty dictionary\n if (self.orderedkeys.length == 0)\n {\n s = new Sk.builtin.str('dictionary is empty');\n throw new Sk.builtin.KeyError(s.v);\n }\n\n key = self.orderedkeys[0];\n if (last === undefined || Sk.misceval.isTrue(last))\n {\n key = self.orderedkeys[self.orderedkeys.length - 1];\n }\n\n val = Sk.misceval.callsim(self[\"pop\"], self, key);\n return Sk.builtin.tuple([key, val]);\n });\n\n // deque\n mod.deque = function deque(iterable, maxlen) {\n throw new Sk.builtin.NotImplementedError(\"deque is not implemented\")\n };\n\n // namedtuple\n mod.namedtuples = {};\n var keywds = Sk.importModule(\"keyword\", false, false);\n // should cover most things. Does not:\n // * keyword args\n // _make\n // _replace\n // _asdict\n // _fields\n\n\n var hasDupes = function(a) {\n var counts = [];\n for(var i = 0; i <= a.length; i++) {\n if(counts[a[i]] === undefined) {\n counts[a[i]] = 1;\n } else {\n return true;\n }\n }\n return false;\n }\n\n var Skinherits = function(childCtor, parentCtor) {\n /** @constructor */\n function tempCtor() {};\n tempCtor.prototype = parentCtor.prototype;\n childCtor.superClass_ = parentCtor.prototype;\n childCtor.prototype = new tempCtor();\n /** @override */\n childCtor.prototype.constructor = childCtor;\n };\n\n mod.namedtuple = function (name, fields) {\n if (Sk.ffi.remapToJs(Sk.misceval.callsim(keywds.$d['iskeyword'],name ))) {\n throw new Sk.builtin.ValueError(\"Type names and field names cannot be a keyword: \" + name.v);\n }\n var nm = Sk.ffi.remapToJs(name);\n startsw = new RegExp(/^[0-9].*/);\n startsw2 = new RegExp(/^[0-9_].*/);\n alnum = new RegExp(/^\\w*$/);\n if (startsw.test(nm) || (! alnum.test(nm))) {\n throw new Sk.builtin.ValueError(\" Bad type name \" + nm);\n }\n // fields could be a string or a tuple or list of strings\n var flds = Sk.ffi.remapToJs(fields);\n\n if (typeof(flds) === 'string') {\n flds = flds.split(/\\s+/);\n }\n // import the keyword module here and use iskeyword\n for (i = 0; i < flds.length; i++) {\n if (Sk.ffi.remapToJs(Sk.misceval.callsim(keywds.$d['iskeyword'],Sk.ffi.remapToPy(flds[i]))) ||\n startsw2.test(flds[i]) || (! alnum.test(flds[i]))\n ) {\n throw new Sk.builtin.ValueError(\"Type names and field names cannot be a keyword: \" + flds[i]);\n }\n }\n if (hasDupes(flds)) {\n throw new Sk.builtin.ValueError(\"Field names must be unique.\");\n }\n\n var cons = function nametuple_constructor() {\n var o;\n if (arguments.length !== flds.length ) {\n throw new Sk.builtin.TypeError(\"Number of arguments must match\");\n }\n if (!(this instanceof mod.namedtuples[nm])) {\n o = Object.create(mod.namedtuples[nm].prototype);\n o.constructor.apply(o, arguments);\n return o;\n }\n\n this.v = arguments;\n this.__class__ = mod.namedtuples[nm];\n };\n mod.namedtuples[nm] = cons;\n\n Skinherits(cons, Sk.builtin.tuple);\n cons.prototype.tp$name = nm;\n cons.prototype.ob$type = Sk.builtin.type.makeIntoTypeObj(nm, mod.namedtuples[nm]);\n cons.prototype[\"$r\"] = function () {\n var ret;\n var i;\n var bits;\n if (this.v.length === 0) {\n return new Sk.builtin.str(nm + \"()\");\n }\n bits = [];\n for (i = 0; i < this.v.length; ++i) {\n bits[i] = flds[i] + \"=\" + Sk.misceval.objectRepr(this.v[i]).v;\n }\n ret = bits.join(\", \");\n if (this.v.length === 1) {\n ret += \",\";\n }\n return new Sk.builtin.str(nm + \"(\" + ret + \")\");\n };\n\n cons.prototype.tp$getattr = function (name) {\n var i = flds.indexOf(name);\n if (i >= 0) {\n return this.v[i];\n }\n return undefined;\n };\n\n cons.prototype.tp$setattr = function (name, value) {\n throw new Sk.builtin.AttributeError(\"can't set attribute\");\n };\n\n return cons;\n };\n\n return mod;\n};\n", "src/lib/lib-tk/__init__.py": "raise NotImplementedError(\"lib-tk is not yet implemented in Skulpt\")\n", "src/lib/json/__init__.py": "raise NotImplementedError(\"json is not yet implemented in Skulpt\")\n", "src/lib/difflib.py": "raise NotImplementedError(\"difflib is not yet implemented in Skulpt\")\n", "src/lib/dis.py": "raise NotImplementedError(\"dis is not yet implemented in Skulpt\")\n", "src/lib/sched.py": "raise NotImplementedError(\"sched is not yet implemented in Skulpt\")\n", "src/lib/rfc822.py": "raise NotImplementedError(\"rfc822 is not yet implemented in Skulpt\")\n", "src/lib/distutils/command/__init__.py": "raise NotImplementedError(\"command is not yet implemented in Skulpt\")\n", "src/lib/stat.py": "raise NotImplementedError(\"stat is not yet implemented in Skulpt\")\n", "src/lib/StringIO.py": "raise NotImplementedError(\"StringIO is not yet implemented in Skulpt\")\n", "src/lib/xdrlib.py": "raise NotImplementedError(\"xdrlib is not yet implemented in Skulpt\")\n", "src/lib/heapq.py": "raise NotImplementedError(\"heapq is not yet implemented in Skulpt\")\n", "src/lib/imaplib.py": "raise NotImplementedError(\"imaplib is not yet implemented in Skulpt\")\n", "src/lib/BaseHTTPServer.py": "raise NotImplementedError(\"BaseHTTPServer is not yet implemented in Skulpt\")\n", "src/lib/repr.py": "raise NotImplementedError(\"repr is not yet implemented in Skulpt\")\n", "src/lib/mailcap.py": "raise NotImplementedError(\"mailcap is not yet implemented in Skulpt\")\n", "src/lib/telnetlib.py": "raise NotImplementedError(\"telnetlib is not yet implemented in Skulpt\")\n", "src/lib/curses/__init__.py": "raise NotImplementedError(\"curses is not yet implemented in Skulpt\")\n", "src/lib/bisect.py": "raise NotImplementedError(\"bisect is not yet implemented in Skulpt\")\n", "src/lib/pythonds/trees/__init__.py": "\n# from .binaryTree import BinaryTree\n# from .balance import AVLTree\n# from .bst import BinarySearchTree\n# from .binheap import BinHeap\n\n\n", "src/lib/pythonds/trees/binaryTree.py": "# Bradley N. Miller, David L. Ranum\n# Introduction to Data Structures and Algorithms in Python\n# Copyright 2005\n# \n\nclass BinaryTree:\n \"\"\"\n A recursive implementation of Binary Tree\n Using links and Nodes approach.\n \"\"\" \n def __init__(self,rootObj):\n self.key = rootObj\n self.leftChild = None\n self.rightChild = None\n\n def insertLeft(self,newNode):\n if self.leftChild == None:\n self.leftChild = BinaryTree(newNode)\n else:\n t = BinaryTree(newNode)\n t.left = self.leftChild\n self.leftChild = t\n \n def insertRight(self,newNode):\n if self.rightChild == None:\n self.rightChild = BinaryTree(newNode)\n else:\n t = BinaryTree(newNode)\n t.right = self.rightChild\n self.rightChild = t\n\n def isLeaf(self):\n return ((not self.leftChild) and (not self.rightChild))\n\n def getRightChild(self):\n return self.rightChild\n\n def getLeftChild(self):\n return self.leftChild\n\n def setRootVal(self,obj):\n self.key = obj\n\n def getRootVal(self,):\n return self.key\n\n def inorder(self):\n if self.leftChild:\n self.leftChild.inorder()\n print(self.key)\n if self.rightChild:\n self.rightChild.inorder()\n\n def postorder(self):\n if self.leftChild:\n self.leftChild.postorder()\n if self.rightChild:\n self.rightChild.postorder()\n print(self.key)\n\n\n def preorder(self):\n print(self.key)\n if self.leftChild:\n self.leftChild.preorder()\n if self.rightChild:\n self.rightChild.preorder()\n\n def printexp(self):\n if self.leftChild:\n print('(')\n self.leftChild.printexp()\n print(self.key)\n if self.rightChild:\n self.rightChild.printexp()\n print(')')\n\n def postordereval(self):\n opers = {'+':operator.add, '-':operator.sub, '*':operator.mul, '/':operator.truediv}\n res1 = None\n res2 = None\n if self.leftChild:\n res1 = self.leftChild.postordereval() #// \\label{peleft}\n if self.rightChild:\n res2 = self.rightChild.postordereval() #// \\label{peright}\n if res1 and res2:\n return opers[self.key](res1,res2) #// \\label{peeval}\n else:\n return self.key\n\ndef inorder(tree):\n if tree != None:\n inorder(tree.getLeftChild())\n print(tree.getRootVal())\n inorder(tree.getRightChild())\n\ndef printexp(tree):\n if tree.leftChild:\n print('(')\n printexp(tree.getLeftChild())\n print(tree.getRootVal())\n if tree.rightChild:\n printexp(tree.getRightChild())\n print(')') \n\ndef printexp(tree):\n sVal = \"\"\n if tree:\n sVal = '(' + printexp(tree.getLeftChild())\n sVal = sVal + str(tree.getRootVal())\n sVal = sVal + printexp(tree.getRightChild()) + ')'\n return sVal\n\ndef postordereval(tree):\n opers = {'+':operator.add, '-':operator.sub, '*':operator.mul, '/':operator.truediv}\n res1 = None\n res2 = None\n if tree:\n res1 = postordereval(tree.getLeftChild()) #// \\label{peleft}\n res2 = postordereval(tree.getRightChild()) #// \\label{peright}\n if res1 and res2:\n return opers[tree.getRootVal()](res1,res2) #// \\label{peeval}\n else:\n return tree.getRootVal()\n\ndef height(tree):\n if tree == None:\n return -1\n else:\n return 1 + max(height(tree.leftChild),height(tree.rightChild))\n\n# t = BinaryTree(7)\n# t.insertLeft(3)\n# t.insertRight(9)\n# inorder(t)\n# import operator\n# x = BinaryTree('*')\n# x.insertLeft('+')\n# l = x.getLeftChild()\n# l.insertLeft(4)\n# l.insertRight(5)\n# x.insertRight(7)\n# print(printexp(x))\n# print(postordereval(x))\n# print(height(x))\n", "src/lib/webgl/primitives.js": "// most of this file is from 'tdl'\n\nvar $builtinmodule = function(name)\n{\n var mod = {};\n\n\n\n /**\n * AttribBuffer manages a TypedArray as an array of vectors.\n *\n * @param {number} numComponents Number of components per\n * vector.\n * @param {number|!Array.} numElements Number of vectors or the data.\n * @param {string} opt_type The type of the TypedArray to\n * create. Default = 'Float32Array'.\n * @param {!Array.} opt_data The data for the array.\n */\n var AttribBuffer = function(\n numComponents, numElements, opt_type) {\n opt_type = opt_type || 'Float32Array';\n var type = window[opt_type];\n if (numElements.length) {\n this.buffer = new type(numElements);\n numElements = this.buffer.length / numComponents;\n this.cursor = numElements;\n } else {\n this.buffer = new type(numComponents * numElements);\n this.cursor = 0;\n }\n this.numComponents = numComponents;\n this.numElements = numElements;\n this.type = opt_type;\n };\n\n AttribBuffer.prototype.stride = function() {\n return 0;\n };\n\n AttribBuffer.prototype.offset = function() {\n return 0;\n };\n\n AttribBuffer.prototype.getElement = function(index) {\n var offset = index * this.numComponents;\n var value = [];\n for (var ii = 0; ii < this.numComponents; ++ii) {\n value.push(this.buffer[offset + ii]);\n }\n return value;\n };\n\n AttribBuffer.prototype.setElement = function(index, value) {\n var offset = index * this.numComponents;\n for (var ii = 0; ii < this.numComponents; ++ii) {\n this.buffer[offset + ii] = value[ii];\n }\n };\n\n AttribBuffer.prototype.clone = function() {\n var copy = new AttribBuffer(\n this.numComponents, this.numElements, this.type);\n copy.pushArray(this);\n return copy;\n }\n\n AttribBuffer.prototype.push = function(value) {\n this.setElement(this.cursor++, value);\n };\n\n AttribBuffer.prototype.pushArray = function(array) {\n // this.buffer.set(array, this.cursor * this.numComponents);\n // this.cursor += array.numElements;\n for (var ii = 0; ii < array.numElements; ++ii) {\n this.push(array.getElement(ii));\n }\n };\n\n AttribBuffer.prototype.pushArrayWithOffset =\n function(array, offset) {\n for (var ii = 0; ii < array.numElements; ++ii) {\n var elem = array.getElement(ii);\n for (var jj = 0; jj < offset.length; ++jj) {\n elem[jj] += offset[jj];\n }\n this.push(elem);\n }\n };\n\n /**\n * Computes the extents\n * @param {!AttribBuffer} positions The positions\n * @return {!{min: !tdl.math.Vector3, max:!tdl.math.Vector3}}\n * The min and max extents.\n */\n AttribBuffer.prototype.computeExtents = function() {\n var numElements = this.numElements;\n var numComponents = this.numComponents;\n var minExtent = this.getElement(0);\n var maxExtent = this.getElement(0);\n for (var ii = 1; ii < numElements; ++ii) {\n var element = this.getElement(ii);\n for (var jj = 0; jj < numComponents; ++jj) {\n minExtent[jj] = Math.min(minExtent[jj], element[jj]);\n maxExtent[jj] = Math.max(maxExtent[jj], element[jj]);\n }\n }\n return {min: minExtent, max: maxExtent};\n };\n\n\n /**\n * Creates the vertices and indices for a cube. The\n * cube will be created around the origin. (-size / 2, size / 2)\n *\n * @param {number} size Width, height and depth of the cube.\n * @return {!Object.} The\n * created plane vertices.\n */\n mod.createCube = new Sk.builtin.func(function(size)\n {\n var CUBE_FACE_INDICES_ = [\n [3, 7, 5, 1],\n [0, 4, 6, 2],\n [6, 7, 3, 2],\n [0, 1, 5, 4],\n [5, 7, 6, 4],\n [2, 3, 1, 0]\n ];\n\n var k = size / 2;\n\n var cornerVertices = [\n [-k, -k, -k],\n [+k, -k, -k],\n [-k, +k, -k],\n [+k, +k, -k],\n [-k, -k, +k],\n [+k, -k, +k],\n [-k, +k, +k],\n [+k, +k, +k]\n ];\n\n var faceNormals = [\n [+1, +0, +0],\n [-1, +0, +0],\n [+0, +1, +0],\n [+0, -1, +0],\n [+0, +0, +1],\n [+0, +0, -1]\n ];\n\n var uvCoords = [\n [0, 0],\n [1, 0],\n [1, 1],\n [0, 1]\n ];\n\n var numVertices = 6 * 4;\n var positions = new AttribBuffer(3, numVertices);\n var normals = new AttribBuffer(3, numVertices);\n var texCoords = new AttribBuffer(2, numVertices);\n var indices = new AttribBuffer(3, 6 * 2, 'Uint16Array');\n\n for (var f = 0; f < 6; ++f) {\n var faceIndices = CUBE_FACE_INDICES_[f];\n for (var v = 0; v < 4; ++v) {\n var position = cornerVertices[faceIndices[v]];\n var normal = faceNormals[f];\n var uv = uvCoords[v];\n\n // Each face needs all four vertices because the normals and texture\n // coordinates are not all the same.\n positions.push(position);\n normals.push(normal);\n texCoords.push(uv);\n\n }\n // Two triangles make a square face.\n var offset = 4 * f;\n indices.push([offset + 0, offset + 1, offset + 2]);\n indices.push([offset + 0, offset + 2, offset + 3]);\n }\n\n return {\n position: positions,\n normal: normals,\n texCoord: texCoords,\n indices: indices\n };\n });\n\n return mod;\n};\n", "src/lib/weakref.py": "raise NotImplementedError(\"weakref is not yet implemented in Skulpt\")\n", "src/lib/user.py": "raise NotImplementedError(\"user is not yet implemented in Skulpt\")\n", "src/lib/pickletools.py": "raise NotImplementedError(\"pickletools is not yet implemented in Skulpt\")\n", "src/lib/mhlib.py": "raise NotImplementedError(\"mhlib is not yet implemented in Skulpt\")\n", "src/lib/textwrap.py": "raise NotImplementedError(\"textwrap is not yet implemented in Skulpt\")\n", "src/lib/SocketServer.py": "raise NotImplementedError(\"SocketServer is not yet implemented in Skulpt\")\n", "src/lib/robotparser.py": "raise NotImplementedError(\"robotparser is not yet implemented in Skulpt\")\n", "src/lib/DocXMLRPCServer.py": "raise NotImplementedError(\"DocXMLRPCServer is not yet implemented in Skulpt\")\n", "src/lib/__phello__.foo.py": "raise NotImplementedError(\"__phello__.foo is not yet implemented in Skulpt\")\n", "src/lib/encodings/__init__.py": "raise NotImplementedError(\"encodings is not yet implemented in Skulpt\")\n", "src/lib/mimify.py": "raise NotImplementedError(\"mimify is not yet implemented in Skulpt\")\n", "src/lib/tokenize.py": "raise NotImplementedError(\"tokenize is not yet implemented in Skulpt\")\n", "src/lib/xml/dom/__init__.py": "raise NotImplementedError(\"dom is not yet implemented in Skulpt\")\n", "src/lib/pythonds/graphs/__init__.py": "\n\nfrom .adjGraph import Graph\nfrom .adjGraph import Vertex\nfrom .priorityQueue import PriorityQueue\n"}} \ No newline at end of file diff --git a/lib/skulpt/skulpt.min.js b/lib/skulpt/skulpt.min.js new file mode 100644 index 00000000..d0b02427 --- /dev/null +++ b/lib/skulpt/skulpt.min.js @@ -0,0 +1,933 @@ +(function(){var COMPILED=!0,goog=goog||{};goog.global=this;goog.exportPath_=function(a,b,c){a=a.split(".");c=c||goog.global;a[0]in c||!c.execScript||c.execScript("var "+a[0]);for(var d;a.length&&(d=a.shift());)a.length||void 0===b?c=c[d]?c[d]:c[d]={}:c[d]=b};goog.define=function(a,b){var c=b;COMPILED||goog.global.CLOSURE_DEFINES&&Object.prototype.hasOwnProperty.call(goog.global.CLOSURE_DEFINES,a)&&(c=goog.global.CLOSURE_DEFINES[a]);goog.exportPath_(a,c)};goog.DEBUG=!1;goog.LOCALE="en";goog.TRUSTED_SITE=!0; +goog.provide=function(a){if(!COMPILED){if(goog.isProvided_(a))throw Error('Namespace "'+a+'" already declared.');delete goog.implicitNamespaces_[a];for(var b=a;(b=b.substring(0,b.lastIndexOf(".")))&&!goog.getObjectByName(b);)goog.implicitNamespaces_[b]=!0}goog.exportPath_(a)};goog.setTestOnly=function(a){if(COMPILED&&!goog.DEBUG)throw a=a||"",Error("Importing test-only code into non-debug environment"+a?": "+a:".");}; +COMPILED||(goog.isProvided_=function(a){return!goog.implicitNamespaces_[a]&&!!goog.getObjectByName(a)},goog.implicitNamespaces_={});goog.getObjectByName=function(a,b){for(var c=a.split("."),d=b||goog.global,e;e=c.shift();)if(goog.isDefAndNotNull(d[e]))d=d[e];else return null;return d};goog.globalize=function(a,b){var c=b||goog.global,d;for(d in a)c[d]=a[d]}; +goog.addDependency=function(a,b,c){if(goog.DEPENDENCIES_ENABLED){var d;a=a.replace(/\\/g,"/");for(var e=goog.dependencies_,f=0;d=b[f];f++)e.nameToPath[d]=a,a in e.pathToNames||(e.pathToNames[a]={}),e.pathToNames[a][d]=!0;for(d=0;b=c[d];d++)a in e.requires||(e.requires[a]={}),e.requires[a][b]=!0}};goog.ENABLE_DEBUG_LOADER=!0; +goog.require=function(a){if(!COMPILED&&!goog.isProvided_(a)){if(goog.ENABLE_DEBUG_LOADER){var b=goog.getPathFromDeps_(a);if(b){goog.included_[b]=!0;goog.writeScripts_();return}}a="goog.require could not find: "+a;goog.global.console&&goog.global.console.error(a);throw Error(a);}};goog.basePath="";goog.nullFunction=function(){};goog.identityFunction=function(a,b){return a};goog.abstractMethod=function(){throw Error("unimplemented abstract method");}; +goog.addSingletonGetter=function(a){a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.DEPENDENCIES_ENABLED=!COMPILED&&goog.ENABLE_DEBUG_LOADER; +goog.DEPENDENCIES_ENABLED&&(goog.included_={},goog.dependencies_={pathToNames:{},nameToPath:{},requires:{},visited:{},written:{}},goog.inHtmlDocument_=function(){var a=goog.global.document;return"undefined"!=typeof a&&"write"in a},goog.findBasePath_=function(){if(goog.global.CLOSURE_BASE_PATH)goog.basePath=goog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_())for(var a=goog.global.document.getElementsByTagName("script"),b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf("?"),d=-1==d?c.length: +d;if("base.js"==c.substr(d-7,7)){goog.basePath=c.substr(0,d-7);break}}},goog.importScript_=function(a){var b=goog.global.CLOSURE_IMPORT_SCRIPT||goog.writeScriptTag_;!goog.dependencies_.written[a]&&b(a)&&(goog.dependencies_.written[a]=!0)},goog.writeScriptTag_=function(a){if(goog.inHtmlDocument_()){var b=goog.global.document;if("complete"==b.readyState){if(/\bdeps.js$/.test(a))return!1;throw Error('Cannot write "'+a+'" after document load');}b.write('",rE:!0,sL:["actionscript","javascript","handlebars"]}},r,{cN:"pi",b:/<\?\w+/,e:/\?>/,r:10},{cN:"tag",b:"",c:[{cN:"title",b:/[^ \/><\n\t]+/,r:0},a]}]}}),e.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"header",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"blockquote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"`.+?`"},{b:"^( {4}| )",e:"$",r:0}]},{cN:"horizontal_rule",b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"link_label",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link_url",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"link_reference",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:"^\\[.+\\]:",rB:!0,c:[{cN:"link_reference",b:"\\[",e:"\\]:",eB:!0,eE:!0,starts:{cN:"link_url",e:"$"}}]}]}}),e.registerLanguage("nginx",function(e){var t={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},r={eW:!0,l:"[a-z/_]+",k:{built_in:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,t],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{cN:"url",b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[t]},{cN:"regexp",c:[e.BE,t],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},t]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"title",b:e.UIR,starts:r}],r:0}],i:"[^\\s\\}]"}}),e.registerLanguage("objectivec",function(e){var t={cN:"built_in",b:"(AV|CA|CF|CG|CI|MK|MP|NS|UI)\\w+"},r={keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},a=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],k:r,l:a,i:""}]}]},{cN:"class",b:"("+n.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:n,l:a,c:[e.UTM]},{cN:"variable",b:"\\."+e.UIR,r:0}]}}),e.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},a={b:"->{",e:"}"},n={cN:"variable",v:[{b:/\$\d/},{b:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{b:/[\$%@][^\s\w{]/,r:0}]},i=[e.BE,r,n],s=[n,e.HCM,e.C("^\\=\\w","\\=cut",{eW:!0}),a,{cN:"string",c:i,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"sub",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",r:5},{cN:"operator",b:"-\\w\\b",r:0},{b:"^__DATA__$",e:"^__END__$",sL:"mojolicious",c:[{b:"^@@.*",e:"$",cN:"comment"}]}];return r.c=s,a.c=s,{aliases:["pl"],k:t,c:s}}),e.registerLanguage("php",function(e){var t={cN:"variable",b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},r={cN:"preprocessor",b:/<\?(php)?|\?>/},a={cN:"string",c:[e.BE,r],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},n={v:[e.BNM,e.CNM]};return{aliases:["php3","php4","php5","php6"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.CLCM,e.HCM,e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"},r]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:"<<<['\"]?\\w+['\"]?$",e:"^\\w+;",c:[e.BE]},r,t,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",t,e.CBCM,a,n]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},a,n]}}),e.registerLanguage("python",function(e){var t={cN:"prompt",b:/^(>>>|\.\.\.) /},r={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[t],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[t],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},e.ASM,e.QSM]},a={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},n={cN:"params",b:/\(/,e:/\)/,c:["self",t,a,r]};return{aliases:["py","gyp"],k:{keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},i:/(<\/|->|\?)/,c:[t,a,r,e.HCM,{v:[{cN:"function",bK:"def",r:10},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,n]},{cN:"decorator",b:/^[\t ]*@/,e:/$/},{b:/\b(print|exec)\(/}]}}),e.registerLanguage("ruby",function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",r="and false then defined module in return redo if BEGIN retry end for true self when next until do begin unless END rescue nil else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",a={cN:"doctag",b:"@[A-Za-z]+"},n={cN:"value",b:"#<",e:">"},i=[e.C("#","$",{c:[a]}),e.C("^\\=begin","^\\=end",{c:[a],r:10}),e.C("^__END__","\\n$")],s={cN:"subst",b:"#\\{",e:"}",k:r},c={cN:"string",c:[e.BE,s],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/}]},o={cN:"params",b:"\\(",e:"\\)",k:r},l=[c,n,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{cN:"inheritance",b:"<\\s*",c:[{cN:"parent",b:"("+e.IR+"::)?"+e.IR}]}].concat(i)},{cN:"function",bK:"def",e:"$|;",r:0,c:[e.inherit(e.TM,{b:t}),o].concat(i)},{cN:"constant",b:"(::)?(\\b[A-Z]\\w*(::)?)+",r:0},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":",c:[c,{b:t}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"variable",b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{b:"("+e.RSR+")\\s*",c:[n,{cN:"regexp",c:[e.BE,s],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(i),r:0}].concat(i);s.c=l,o.c=l;var u="[>?]>",d="[\\w#]+\\(\\w+\\):\\d+:\\d+>",b="(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>",p=[{b:/^\s*=>/,cN:"status",starts:{e:"$",c:l}},{cN:"prompt",b:"^("+u+"|"+d+"|"+b+")",starts:{e:"$",c:l}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:r,c:i.concat(p).concat(l)}}),e.registerLanguage("sql",function(e){var t=e.C("--","$");return{cI:!0,i:/[<>]/,c:[{cN:"operator",bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate savepoint release|0 unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke",e:/;/,eW:!0,k:{keyword:"abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias allocate allow alter always analyze ancillary and any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound buffer_cache buffer_pool build bulk by byte byteordermark bytes c cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle d data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration e each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain export export_set extended extent external external_1 external_2 externally extract f failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function g general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour http i id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists k keep keep_duplicates key keys kill l language large last|0 last_day last_insert_id last_value lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link|0 list|0 listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock|0 locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop|0 low low_priority lower lpad lrtrim ltrim m main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex n name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding p package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise|0 rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release|0 release_lock relies_on relocate rely rem remainder repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second section securefile security seed segment self sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime t table tables tablespace tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek", +!function(e){"undefined"!=typeof exports?e(exports):(window.hljs=e({}),"function"==typeof define&&define.amd&&define("hljs",[],function(){return window.hljs}))}(function(e){function t(e){return e.replace(/&/gm,"&").replace(//gm,">")}function r(e){return e.nodeName.toLowerCase()}function a(e,t){var r=e&&e.exec(t);return r&&0==r.index}function n(e){return/no-?highlight|plain|text/.test(e)}function i(e){var t,r,a,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",r=/\blang(?:uage)?-([\w-]+)\b/.exec(i))return y(r[1])?r[1]:"no-highlight";for(i=i.split(/\s+/),t=0,a=i.length;a>t;t++)if(y(i[t])||n(i[t]))return i[t]}function s(e,t){var r,a={};for(r in e)a[r]=e[r];if(t)for(r in t)a[r]=t[r];return a}function c(e){var t=[];return function a(e,n){for(var i=e.firstChild;i;i=i.nextSibling)3==i.nodeType?n+=i.nodeValue.length:1==i.nodeType&&(t.push({event:"start",offset:n,node:i}),n=a(i,n),r(i).match(/br|hr|img|input/)||t.push({event:"stop",offset:n,node:i}));return n}(e,0),t}function o(e,a,n){function i(){return e.length&&a.length?e[0].offset!=a[0].offset?e[0].offset"}function c(e){u+=""}function o(e){("start"==e.event?s:c)(e.node)}for(var l=0,u="",d=[];e.length||a.length;){var b=i();if(u+=t(n.substr(l,b[0].offset-l)),l=b[0].offset,b==e){d.reverse().forEach(c);do o(b.splice(0,1)[0]),b=i();while(b==e&&b.length&&b[0].offset==l);d.reverse().forEach(s)}else"start"==b[0].event?d.push(b[0].node):d.pop(),o(b.splice(0,1)[0])}return u+t(n.substr(l))}function l(e){function t(e){return e&&e.source||e}function r(r,a){return new RegExp(t(r),"m"+(e.cI?"i":"")+(a?"g":""))}function a(n,i){if(!n.compiled){if(n.compiled=!0,n.k=n.k||n.bK,n.k){var c={},o=function(t,r){e.cI&&(r=r.toLowerCase()),r.split(" ").forEach(function(e){var r=e.split("|");c[r[0]]=[t,r[1]?Number(r[1]):1]})};"string"==typeof n.k?o("keyword",n.k):Object.keys(n.k).forEach(function(e){o(e,n.k[e])}),n.k=c}n.lR=r(n.l||/\b\w+\b/,!0),i&&(n.bK&&(n.b="\\b("+n.bK.split(" ").join("|")+")\\b"),n.b||(n.b=/\B|\b/),n.bR=r(n.b),n.e||n.eW||(n.e=/\B|\b/),n.e&&(n.eR=r(n.e)),n.tE=t(n.e)||"",n.eW&&i.tE&&(n.tE+=(n.e?"|":"")+i.tE)),n.i&&(n.iR=r(n.i)),void 0===n.r&&(n.r=1),n.c||(n.c=[]);var l=[];n.c.forEach(function(e){e.v?e.v.forEach(function(t){l.push(s(e,t))}):l.push("self"==e?n:e)}),n.c=l,n.c.forEach(function(e){a(e,n)}),n.starts&&a(n.starts,i);var u=n.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([n.tE,n.i]).map(t).filter(Boolean);n.t=u.length?r(u.join("|"),!0):{exec:function(){return null}}}}a(e)}function u(e,r,n,i){function s(e,t){for(var r=0;r";return i+=e+'">',i+t+s}function m(){if(!x.k)return t(E);var e="",r=0;x.lR.lastIndex=0;for(var a=x.lR.exec(E);a;){e+=t(E.substr(r,a.index-r));var n=b(x,a);n?(B+=n[1],e+=p(n[0],t(a[0]))):e+=t(a[0]),r=x.lR.lastIndex,a=x.lR.exec(E)}return e+t(E.substr(r))}function f(){var e="string"==typeof x.sL;if(e&&!N[x.sL])return t(E);var r=e?u(x.sL,E,!0,C[x.sL]):d(E,x.sL.length?x.sL:void 0);return x.r>0&&(B+=r.r),e&&(C[x.sL]=r.top),p(r.language,r.value,!1,!0)}function g(){return void 0!==x.sL?f():m()}function h(e,r){var a=e.cN?p(e.cN,"",!0):"";e.rB?(M+=a,E=""):e.eB?(M+=t(r)+a,E=""):(M+=a,E=r),x=Object.create(e,{parent:{value:x}})}function _(e,r){if(E+=e,void 0===r)return M+=g(),0;var a=s(r,x);if(a)return M+=g(),h(a,r),a.rB?0:r.length;var n=c(x,r);if(n){var i=x;i.rE||i.eE||(E+=r),M+=g();do x.cN&&(M+=""),B+=x.r,x=x.parent;while(x!=n.parent);return i.eE&&(M+=t(r)),E="",n.starts&&h(n.starts,""),i.rE?0:r.length}if(o(r,x))throw new Error('Illegal lexeme "'+r+'" for mode "'+(x.cN||"")+'"');return E+=r,r.length||1}var v=y(e);if(!v)throw new Error('Unknown language: "'+e+'"');l(v);var k,x=i||v,C={},M="";for(k=x;k!=v;k=k.parent)k.cN&&(M=p(k.cN,"",!0)+M);var E="",B=0;try{for(var z,$,L=0;;){if(x.t.lastIndex=L,z=x.t.exec(r),!z)break;$=_(r.substr(L,z.index-L),z[0]),L=z.index+$}for(_(r.substr(L)),k=x;k.parent;k=k.parent)k.cN&&(M+="");return{r:B,value:M,language:e,top:x}}catch(q){if(-1!=q.message.indexOf("Illegal"))return{r:0,value:t(r)};throw q}}function d(e,r){r=r||w.languages||Object.keys(N);var a={r:0,value:t(e)},n=a;return r.forEach(function(t){if(y(t)){var r=u(t,e,!1);r.language=t,r.r>n.r&&(n=r),r.r>a.r&&(n=a,a=r)}}),n.language&&(a.second_best=n),a}function b(e){return w.tabReplace&&(e=e.replace(/^((<[^>]+>|\t)+)/gm,function(e,t){return t.replace(/\t/g,w.tabReplace)})),w.useBR&&(e=e.replace(/\n/g,"
")),e}function p(e,t,r){var a=t?k[t]:r,n=[e.trim()];return e.match(/\bhljs\b/)||n.push("hljs"),-1===e.indexOf(a)&&n.push(a),n.join(" ").trim()}function m(e){var t=i(e);if(!n(t)){var r;w.useBR?(r=document.createElementNS("http://www.w3.org/1999/xhtml","div"),r.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):r=e;var a=r.textContent,s=t?u(t,a,!0):d(a),l=c(r);if(l.length){var m=document.createElementNS("http://www.w3.org/1999/xhtml","div");m.innerHTML=s.value,s.value=o(l,c(m),a)}s.value=b(s.value),e.innerHTML=s.value,e.className=p(e.className,t,s.language),e.result={language:s.language,re:s.r},s.second_best&&(e.second_best={language:s.second_best.language,re:s.second_best.r})}}function f(e){w=s(w,e)}function g(){if(!g.called){g.called=!0;var e=document.querySelectorAll("pre code");Array.prototype.forEach.call(e,m)}}function h(){addEventListener("DOMContentLoaded",g,!1),addEventListener("load",g,!1)}function _(t,r){var a=N[t]=r(e);a.aliases&&a.aliases.forEach(function(e){k[e]=t})}function v(){return Object.keys(N)}function y(e){return N[e]||N[k[e]]}var w={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},N={},k={};return e.highlight=u,e.highlightAuto=d,e.fixMarkup=b,e.highlightBlock=m,e.configure=f,e.initHighlighting=g,e.initHighlightingOnLoad=h,e.registerLanguage=_,e.listLanguages=v,e.getLanguage=y,e.inherit=s,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such)\b/},e.C=function(t,r,a){var n=e.inherit({cN:"comment",b:t,e:r,c:[]},a||{});return n.c.push(e.PWM),n.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),n},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e.registerLanguage("apache",function(e){var t={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:!0,c:[e.HCM,{cN:"tag",b:""},{cN:"keyword",b:/\w+/,r:0,k:{common:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"sqbracket",b:"\\s\\[",e:"\\]$"},{cN:"cbracket",b:"[\\$%]\\{",e:"\\}",c:["self",t]},t,e.QSM]}}],i:/\S/}}),e.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},r={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]},a={cN:"string",b:/'/,e:/'/};return{aliases:["sh","zsh"],l:/-?[a-z\.]+/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",operator:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"shebang",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,e.NM,r,a,t]}}),e.registerLanguage("coffeescript",function(e){var t={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},r="[A-Za-z$_][0-9A-Za-z$_]*",a={cN:"subst",b:/#\{/,e:/}/,k:t},n=[e.BNM,e.inherit(e.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/"""/,e:/"""/,c:[e.BE,a]},{b:/"/,e:/"/,c:[e.BE,a]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[a,e.HCM]},{b:"//[gim]*",r:0},{b:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{cN:"property",b:"@"+r},{b:"`",e:"`",eB:!0,eE:!0,sL:"javascript"}];a.c=n;var i=e.inherit(e.TM,{b:r}),s="(\\(.*\\))?\\s*\\B[-=]>",c={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:t,c:["self"].concat(n)}]};return{aliases:["coffee","cson","iced"],k:t,i:/\/\*/,c:n.concat([e.C("###","###"),e.HCM,{cN:"function",b:"^\\s*"+r+"\\s*=\\s*"+s,e:"[-=]>",rB:!0,c:[i,c]},{b:/[:\(,=]\s*/,r:0,c:[{cN:"function",b:s,e:"[-=]>",rB:!0,c:[c]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[i]},i]},{cN:"attribute",b:r+":",e:":",rB:!0,rE:!0,r:0}])}}),e.registerLanguage("cpp",function(e){var t={cN:"keyword",b:"\\b[a-z\\d_]*_t\\b"},r={cN:"string",v:[e.inherit(e.QSM,{b:'((u8?|U)|L)?"'}),{b:'(u8?|U)?R"',e:'"',c:[e.BE]},{b:"'\\\\?.",e:"'",i:"."}]},a={cN:"number",v:[{b:"\\b(\\d+(\\.\\d*)?|\\.\\d+)(u|U|l|L|ul|UL|f|F)"},{b:e.CNR}]},n=e.IR+"\\s*\\(",i={keyword:"int float while private char catch export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using class asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong",built_in:"std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf",literal:"true false nullptr NULL"};return{aliases:["c","cc","h","c++","h++","hpp"],k:i,i:"",i:"\\n"}]},r,a,e.CLCM,e.CBCM]},{b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:i,c:["self",t]},{b:e.IR+"::",k:i},{bK:"new throw return else",r:0},{cN:"function",b:"("+e.IR+"[\\*&\\s]+)+"+n,rB:!0,e:/[{;=]/,eE:!0,k:i,c:[{b:n,rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,k:i,r:0,c:[e.CLCM,e.CBCM,r,a]},e.CLCM,e.CBCM]}]}}),e.registerLanguage("cs",function(e){var t="abstract as base bool break byte case catch char checked const continue decimal dynamic default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long null when object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this true try typeof uint ulong unchecked unsafe ushort using virtual volatile void while async protected public private internal ascending descending from get group into join let orderby partial select set value var where yield",r=e.IR+"(<"+e.IR+">)?";return{aliases:["csharp"],k:t,i:/::/,c:[e.C("///","$",{rB:!0,c:[{cN:"xmlDocTag",v:[{b:"///",r:0},{b:""},{b:""}]}]}),e.CLCM,e.CBCM,{cN:"preprocessor",b:"#",e:"$",k:"if else elif endif define undef warning error line region endregion pragma checksum"},{cN:"string",b:'@"',e:'"',c:[{b:'""'}]},e.ASM,e.QSM,e.CNM,{bK:"class interface",e:/[{;=]/,i:/[^\s:]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"namespace",e:/[{;=]/,i:/[^\s:]/,c:[{cN:"title",b:"[a-zA-Z](\\.?\\w)*",r:0},e.CLCM,e.CBCM]},{bK:"new return throw await",r:0},{cN:"function",b:"("+r+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:t,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]}]}}),e.registerLanguage("css",function(e){var t="[a-zA-Z-][a-zA-Z0-9_-]*",r={cN:"function",b:t+"\\(",rB:!0,eE:!0,e:"\\("},a={cN:"rule",b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{cN:"value",eW:!0,eE:!0,c:[r,e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"hexcolor",b:"#[0-9A-Fa-f]+"},{cN:"important",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,a,{cN:"id",b:/\#[A-Za-z0-9_-]+/},{cN:"class",b:/\.[A-Za-z0-9_-]+/},{cN:"attr_selector",b:/\[/,e:/\]/,i:"$"},{cN:"pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"']+/},{cN:"at_rule",b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{cN:"at_rule",b:"@",e:"[{;]",c:[{cN:"keyword",b:/\S+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[r,e.ASM,e.QSM,e.CSSNM]}]},{cN:"tag",b:t,r:0},{cN:"rules",b:"{",e:"}",i:/\S/,c:[e.CBCM,a]}]}}),e.registerLanguage("diff",function(e){return{aliases:["patch"],c:[{cN:"chunk",r:10,v:[{b:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"header",v:[{b:/Index: /,e:/$/},{b:/=====/,e:/=====$/},{b:/^\-\-\-/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+\+\+/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"change",b:"^\\!",e:"$"}]}}),e.registerLanguage("http",function(e){return{aliases:["https"],i:"\\S",c:[{cN:"status",b:"^HTTP/[0-9\\.]+",e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{cN:"request",b:"^[A-Z]+ (.*?) HTTP/[0-9\\.]+$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{cN:"string",e:"$"}},{b:"\\n\\n",starts:{sL:[],eW:!0}}]}}),e.registerLanguage("ini",function(e){var t={cN:"string",c:[e.BE],v:[{b:"'''",e:"'''",r:10},{b:'"""',e:'"""',r:10},{b:'"',e:'"'},{b:"'",e:"'"}]};return{aliases:["toml"],cI:!0,i:/\S/,c:[e.C(";","$"),e.HCM,{cN:"title",b:/^\s*\[+/,e:/\]+/},{cN:"setting",b:/^[a-z0-9\[\]_-]+\s*=\s*/,e:"$",c:[{cN:"value",eW:!0,k:"on off true false yes no",c:[{cN:"variable",v:[{b:/\$[\w\d"][\w\d_]*/},{b:/\$\{(.*?)}/}]},t,{cN:"number",b:/([\+\-]+)?[\d]+_[\d_]+/},e.NM],r:0}]}]}}),e.registerLanguage("java",function(e){var t=e.UIR+"(<"+e.UIR+">)?",r="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private",a="\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",n={cN:"number",b:a,r:0};return{aliases:["jsp"],k:r,i:/<\/|#/,c:[e.C("/\\*\\*","\\*/",{r:0,c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"new throw return else",r:0},{cN:"function",b:"("+t+"\\s+)+"+e.UIR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:r,c:[{b:e.UIR+"\\s*\\(",rB:!0,r:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,k:r,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},n,{cN:"annotation",b:"@[A-Za-z]+"}]}}),e.registerLanguage("javascript",function(e){return{aliases:["js"],k:{keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},c:[{cN:"pi",r:10,b:/^\s*['"]use (strict|asm)['"]/},e.ASM,e.QSM,{cN:"string",b:"`",e:"`",c:[e.BE,{cN:"subst",b:"\\$\\{",e:"\\}"}]},e.CLCM,e.CBCM,{cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{b:/\s*[);\]]/,r:0,sL:"xml"}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:[e.CLCM,e.CBCM],i:/["'\(]/}],i:/\[|%/},{b:/\$[(.]/},{b:"\\."+e.IR,r:0},{bK:"import",e:"[;$]",k:"import from as",c:[e.ASM,e.QSM]},{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]}],i:/#/}}),e.registerLanguage("json",function(e){var t={literal:"true false null"},r=[e.QSM,e.CNM],a={cN:"value",e:",",eW:!0,eE:!0,c:r,k:t},n={b:"{",e:"}",c:[{cN:"attribute",b:'\\s*"',e:'"\\s*:\\s*',eB:!0,eE:!0,c:[e.BE],i:"\\n",starts:a}],i:"\\S"},i={b:"\\[",e:"\\]",c:[e.inherit(a,{cN:null})],i:"\\S"};return r.splice(r.length,0,n,i),{c:r,k:t,i:"\\S"}}),e.registerLanguage("makefile",function(e){var t={cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]};return{aliases:["mk","mak"],c:[e.HCM,{b:/^\w+\s*\W*=/,rB:!0,r:0,starts:{cN:"constant",e:/\s*\W*=/,eE:!0,starts:{e:/$/,r:0,c:[t]}}},{cN:"title",b:/^[\w]+:\s*$/},{cN:"phony",b:/^\.PHONY:/,e:/$/,k:".PHONY",l:/[\.\w]+/},{b:/^\t+/,e:/$/,r:0,c:[e.QSM,t]}]}}),e.registerLanguage("xml",function(e){var t="[A-Za-z0-9\\._:-]+",r={b:/<\?(php)?(?!\w)/,e:/\?>/,sL:"php"},a={eW:!0,i:/]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xsl","plist"],cI:!0,c:[{cN:"doctype",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},e.C("",{r:10}),{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"|$)",e:">",k:{title:"style"},c:[a],starts:{e:"",rE:!0,sL:"css"}},{cN:"tag",b:"|$)",e:">",k:{title:"script"},c:[a],starts:{e:"",rE:!0,sL:["actionscript","javascript","handlebars"]}},r,{cN:"pi",b:/<\?\w+/,e:/\?>/,r:10},{cN:"tag",b:"",c:[{cN:"title",b:/[^ \/><\n\t]+/,r:0},a]}]}}),e.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"header",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"blockquote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"`.+?`"},{b:"^( {4}| )",e:"$",r:0}]},{cN:"horizontal_rule",b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"link_label",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link_url",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"link_reference",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:"^\\[.+\\]:",rB:!0,c:[{cN:"link_reference",b:"\\[",e:"\\]:",eB:!0,eE:!0,starts:{cN:"link_url",e:"$"}}]}]}}),e.registerLanguage("nginx",function(e){var t={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},r={eW:!0,l:"[a-z/_]+",k:{built_in:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,t],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{cN:"url",b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[t]},{cN:"regexp",c:[e.BE,t],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},t]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"title",b:e.UIR,starts:r}],r:0}],i:"[^\\s\\}]"}}),e.registerLanguage("objectivec",function(e){var t={cN:"built_in",b:"(AV|CA|CF|CG|CI|MK|MP|NS|UI)\\w+"},r={keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},a=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],k:r,l:a,i:""}]}]},{cN:"class",b:"("+n.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:n,l:a,c:[e.UTM]},{cN:"variable",b:"\\."+e.UIR,r:0}]}}),e.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},a={b:"->{",e:"}"},n={cN:"variable",v:[{b:/\$\d/},{b:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{b:/[\$%@][^\s\w{]/,r:0}]},i=[e.BE,r,n],s=[n,e.HCM,e.C("^\\=\\w","\\=cut",{eW:!0}),a,{cN:"string",c:i,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"sub",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",r:5},{cN:"operator",b:"-\\w\\b",r:0},{b:"^__DATA__$",e:"^__END__$",sL:"mojolicious",c:[{b:"^@@.*",e:"$",cN:"comment"}]}];return r.c=s,a.c=s,{aliases:["pl"],k:t,c:s}}),e.registerLanguage("php",function(e){var t={cN:"variable",b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},r={cN:"preprocessor",b:/<\?(php)?|\?>/},a={cN:"string",c:[e.BE,r],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},n={v:[e.BNM,e.CNM]};return{aliases:["php3","php4","php5","php6"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.CLCM,e.HCM,e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"},r]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:"<<<['\"]?\\w+['\"]?$",e:"^\\w+;",c:[e.BE]},r,t,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",t,e.CBCM,a,n]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},a,n]}}),e.registerLanguage("python",function(e){var t={cN:"prompt",b:/^(>>>|\.\.\.) /},r={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[t],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[t],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},e.ASM,e.QSM]},a={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},n={cN:"params",b:/\(/,e:/\)/,c:["self",t,a,r]};return{aliases:["py","gyp"],k:{keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},i:/(<\/|->|\?)/,c:[t,a,r,e.HCM,{v:[{cN:"function",bK:"def",r:10},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,n]},{cN:"decorator",b:/^[\t ]*@/,e:/$/},{b:/\b(print|exec)\(/}]}}),e.registerLanguage("ruby",function(e){var t="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",r="and false then defined module in return redo if BEGIN retry end for true self when next until do begin unless END rescue nil else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",a={cN:"doctag",b:"@[A-Za-z]+"},n={cN:"value",b:"#<",e:">"},i=[e.C("#","$",{c:[a]}),e.C("^\\=begin","^\\=end",{c:[a],r:10}),e.C("^__END__","\\n$")],s={cN:"subst",b:"#\\{",e:"}",k:r},c={cN:"string",c:[e.BE,s],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/}]},o={cN:"params",b:"\\(",e:"\\)",k:r},l=[c,n,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{cN:"inheritance",b:"<\\s*",c:[{cN:"parent",b:"("+e.IR+"::)?"+e.IR}]}].concat(i)},{cN:"function",bK:"def",e:"$|;",r:0,c:[e.inherit(e.TM,{b:t}),o].concat(i)},{cN:"constant",b:"(::)?(\\b[A-Z]\\w*(::)?)+",r:0},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":",c:[c,{b:t}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"variable",b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{b:"("+e.RSR+")\\s*",c:[n,{cN:"regexp",c:[e.BE,s],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(i),r:0}].concat(i);s.c=l,o.c=l;var u="[>?]>",d="[\\w#]+\\(\\w+\\):\\d+:\\d+>",b="(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>",p=[{b:/^\s*=>/,cN:"status",starts:{e:"$",c:l}},{cN:"prompt",b:"^("+u+"|"+d+"|"+b+")",starts:{e:"$",c:l}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:r,c:i.concat(p).concat(l)}}),e.registerLanguage("sql",function(e){var t=e.C("--","$");return{cI:!0,i:/[<>]/,c:[{cN:"operator",bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate savepoint release|0 unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke",e:/;/,eW:!0,k:{keyword:"abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias allocate allow alter always analyze ancillary and any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound buffer_cache buffer_pool build bulk by byte byteordermark bytes c cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle d data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration e each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain export export_set extended extent external external_1 external_2 externally extract f failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function g general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour http i id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists k keep keep_duplicates key keys kill l language large last|0 last_day last_insert_id last_value lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link|0 list|0 listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock|0 locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop|0 low low_priority lower lpad lrtrim ltrim m main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex n name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding p package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise|0 rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release|0 release_lock relies_on relocate rely rem remainder repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second section securefile security seed segment self sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime t table tables tablespace tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek", literal:"true false null",built_in:"array bigint binary bit blob boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text varchar varying void"},c:[{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[e.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[e.BE]},e.CNM,e.CBCM,t]},e.CBCM,t]}}),e}); \ No newline at end of file diff --git a/static/js/ie-emulation-modes-warning.js b/static/js/ie-emulation-modes-warning.js index 3f97ba58..04b5bd11 100644 --- a/static/js/ie-emulation-modes-warning.js +++ b/static/js/ie-emulation-modes-warning.js @@ -1,51 +1,51 @@ -// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT -// IT'S JUST JUNK FOR OUR DOCS! -// ++++++++++++++++++++++++++++++++++++++++++ -/*! - * Copyright 2014-2015 Twitter, Inc. - * - * Licensed under the Creative Commons Attribution 3.0 Unported License. For - * details, see https://creativecommons.org/licenses/by/3.0/. - */ -// Intended to prevent false-positive bug reports about Bootstrap not working properly in old versions of IE due to folks testing using IE's unreliable emulation modes. -(function () { - 'use strict'; - - function emulatedIEMajorVersion() { - var groups = /MSIE ([0-9.]+)/.exec(window.navigator.userAgent) - if (groups === null) { - return null - } - var ieVersionNum = parseInt(groups[1], 10) - var ieMajorVersion = Math.floor(ieVersionNum) - return ieMajorVersion - } - - function actualNonEmulatedIEMajorVersion() { - // Detects the actual version of IE in use, even if it's in an older-IE emulation mode. - // IE JavaScript conditional compilation docs: https://msdn.microsoft.com/library/121hztk3%28v=vs.94%29.aspx - // @cc_on docs: https://msdn.microsoft.com/library/8ka90k2e%28v=vs.94%29.aspx - var jscriptVersion = new Function('/*@cc_on return @_jscript_version; @*/')() // jshint ignore:line - if (jscriptVersion === undefined) { - return 11 // IE11+ not in emulation mode - } - if (jscriptVersion < 9) { - return 8 // IE8 (or lower; haven't tested on IE<8) - } - return jscriptVersion // IE9 or IE10 in any mode, or IE11 in non-IE11 mode - } - - var ua = window.navigator.userAgent - if (ua.indexOf('Opera') > -1 || ua.indexOf('Presto') > -1) { - return // Opera, which might pretend to be IE - } - var emulated = emulatedIEMajorVersion() - if (emulated === null) { - return // Not IE - } - var nonEmulated = actualNonEmulatedIEMajorVersion() - - if (emulated !== nonEmulated) { - window.alert('WARNING: You appear to be using IE' + nonEmulated + ' in IE' + emulated + ' emulation mode.\nIE emulation modes can behave significantly differently from ACTUAL older versions of IE.\nPLEASE DON\'T FILE BOOTSTRAP BUGS based on testing in IE emulation modes!') - } -})(); +// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT +// IT'S JUST JUNK FOR OUR DOCS! +// ++++++++++++++++++++++++++++++++++++++++++ +/*! + * Copyright 2014-2015 Twitter, Inc. + * + * Licensed under the Creative Commons Attribution 3.0 Unported License. For + * details, see https://creativecommons.org/licenses/by/3.0/. + */ +// Intended to prevent false-positive bug reports about Bootstrap not working properly in old versions of IE due to folks testing using IE's unreliable emulation modes. +(function () { + 'use strict'; + + function emulatedIEMajorVersion() { + var groups = /MSIE ([0-9.]+)/.exec(window.navigator.userAgent) + if (groups === null) { + return null + } + var ieVersionNum = parseInt(groups[1], 10) + var ieMajorVersion = Math.floor(ieVersionNum) + return ieMajorVersion + } + + function actualNonEmulatedIEMajorVersion() { + // Detects the actual version of IE in use, even if it's in an older-IE emulation mode. + // IE JavaScript conditional compilation docs: https://msdn.microsoft.com/library/121hztk3%28v=vs.94%29.aspx + // @cc_on docs: https://msdn.microsoft.com/library/8ka90k2e%28v=vs.94%29.aspx + var jscriptVersion = new Function('/*@cc_on return @_jscript_version; @*/')() // jshint ignore:line + if (jscriptVersion === undefined) { + return 11 // IE11+ not in emulation mode + } + if (jscriptVersion < 9) { + return 8 // IE8 (or lower; haven't tested on IE<8) + } + return jscriptVersion // IE9 or IE10 in any mode, or IE11 in non-IE11 mode + } + + var ua = window.navigator.userAgent + if (ua.indexOf('Opera') > -1 || ua.indexOf('Presto') > -1) { + return // Opera, which might pretend to be IE + } + var emulated = emulatedIEMajorVersion() + if (emulated === null) { + return // Not IE + } + var nonEmulated = actualNonEmulatedIEMajorVersion() + + if (emulated !== nonEmulated) { + window.alert('WARNING: You appear to be using IE' + nonEmulated + ' in IE' + emulated + ' emulation mode.\nIE emulation modes can behave significantly differently from ACTUAL older versions of IE.\nPLEASE DON\'T FILE BOOTSTRAP BUGS based on testing in IE emulation modes!') + } +})(); diff --git a/static/js/ie10-viewport-bug-workaround.js b/static/js/ie10-viewport-bug-workaround.js index 479a6ebd..a5ab744b 100644 --- a/static/js/ie10-viewport-bug-workaround.js +++ b/static/js/ie10-viewport-bug-workaround.js @@ -1,23 +1,23 @@ -/*! - * IE10 viewport hack for Surface/desktop Windows 8 bug - * Copyright 2014-2015 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - */ - -// See the Getting Started docs for more information: -// http://getbootstrap.com/getting-started/#support-ie10-width - -(function () { - 'use strict'; - - if (navigator.userAgent.match(/IEMobile\/10\.0/)) { - var msViewportStyle = document.createElement('style') - msViewportStyle.appendChild( - document.createTextNode( - '@-ms-viewport{width:auto!important}' - ) - ) - document.querySelector('head').appendChild(msViewportStyle) - } - -})(); +/*! + * IE10 viewport hack for Surface/desktop Windows 8 bug + * Copyright 2014-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ + +// See the Getting Started docs for more information: +// http://getbootstrap.com/getting-started/#support-ie10-width + +(function () { + 'use strict'; + + if (navigator.userAgent.match(/IEMobile\/10\.0/)) { + var msViewportStyle = document.createElement('style') + msViewportStyle.appendChild( + document.createTextNode( + '@-ms-viewport{width:auto!important}' + ) + ) + document.querySelector('head').appendChild(msViewportStyle) + } + +})(); diff --git a/static/js/jquery-2.1.4.min.js b/static/js/jquery-2.1.4.min.js index 49990d6e..7d46bda2 100644 --- a/static/js/jquery-2.1.4.min.js +++ b/static/js/jquery-2.1.4.min.js @@ -1,4 +1,4 @@ -/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ -return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*\s*$/g,ia={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("